【发布时间】:2021-04-18 01:56:34
【问题描述】:
我想包含来自geom_quantile() 拟合线的相关统计数据,其方式类似于我对geom_smooth(method="lm") 拟合线性回归(我之前使用过 ggpmisc这是awesome)。例如这段代码:
# quantile regression example with ggpmisc equation
# basic quantile code from here:
# https://ggplot2.tidyverse.org/reference/geom_quantile.html
library(tidyverse)
library(ggpmisc)
# see ggpmisc vignette for stat_poly_eq() code below:
# https://cran.r-project.org/web/packages/ggpmisc/vignettes/user-guide.html#stat_poly_eq
my_formula <- y ~ x
#my_formula <- y ~ poly(x, 3, raw = TRUE)
# linear ols regression with equation labelled
m <- ggplot(mpg, aes(displ, 1 / hwy)) +
geom_point()
m +
geom_smooth(method = "lm", formula = my_formula) +
stat_poly_eq(aes(label = paste(stat(eq.label), "*\" with \"*",
stat(rr.label), "*\", \"*",
stat(f.value.label), "*\", and \"*",
stat(p.value.label), "*\".\"",
sep = "")),
formula = my_formula, parse = TRUE, size = 3)
对于分位数回归,您可以将geom_smooth() 换成geom_quantile() 并绘制一条可爱的分位数回归线(在本例中为中位数):
# quantile regression - no equation labelling
m +
geom_quantile(quantiles = 0.5)
您将如何将汇总统计信息发送到标签,或者在旅途中重新创建它们? (即,除了在调用 ggplot 之前进行回归,然后将其传递给然后进行注释(例如,类似于 here 或 here 的线性回归所做的事情?
【问题讨论】:
-
您想在绘图上打印哪些具体的“相关统计数据”?当然,最好拟合您自己的模型以获得重要的拟合统计数据,而不是回复绘图功能。这些其他功能基本上只是为您执行此操作的包装器(您最终会多次拟合模型,这有点浪费)。如果您真的想隐藏工作,您可以编写自己的 geom 来执行此操作,但这基本上就是需要发生的事情。
-
公平通话。我认为可能有一个使用来自 ggpmisc 的
stat_fit_glance的解决方案,尽管我只需要弄清楚它如何与多个分位数一起工作。 cran.r-project.org/web/packages/ggpmisc/vignettes/… -
@MarkNeal 我提出了一个问题,提醒自己看看为什么
stat_fit_glance()在实现glance()时不起作用。 (感谢您让我知道您发现 'ggpmisc' 很有用!) -
@MarkNeal 新的 'ggpmisc' 0.3.8 现在在 CRAN 中。我已经根据这个版本更新了我的答案。现在可以使用
stat_fit_tidy()添加符合qr()的模型的方程和p-值。 -
@MarkNeal 'ggpmisc' 的下一个版本,版本 0.4.0 正在 GitHub 中形成。我添加了
stat_quant_eq()。它试图为您的问题提供一个优雅的答案,包括对分位数向量的支持。如果你能找到一些时间,你能检查并提供反馈吗?您需要从 GitHub 包 'ggpp' 和 'gppmisc' 安装:remotes::install_github("aphalo/ggpp")和remotes::install_github("aphalo/ggpmisc", ref = "stat.quant.eq")。ref参数指向已实现新统计信息的分支。
标签: r ggplot2 label quantile-regression ggpmisc