ggplot2:将 p 值添加到图中
ggplot2: add p-values to the plot
我得到了这个情节
使用下面的代码
library(dplyr)
library(ggplot2)
library(ggpmisc)
df <- diamonds %>%
dplyr::filter(cut%in%c("Fair","Ideal")) %>%
dplyr::filter(clarity%in%c("I1" , "SI2" , "SI1" , "VS2" , "VS1", "VVS2")) %>%
dplyr::mutate(new_price = ifelse(cut == "Fair",
price* 0.5,
price * 1.1))
formula <- y ~ x
ggplot(df, aes(x= new_price, y= carat, color = cut)) +
geom_point(alpha = 0.3) +
facet_wrap(~clarity, scales = "free_y") +
geom_smooth(method = "lm", formula = formula, se = F) +
stat_poly_eq(aes(label = paste(..rr.label..)),
label.x.npc = "right", label.y.npc = 0.15,
formula = formula, parse = TRUE, size = 3)
除了 R2 之外,我还想将 p 值添加到构面。我可以通过 运行 回归手动执行此操作,然后获取 p 值并使用 geom_text()
添加这些 p 值 similar to the answer of this question.
有没有更快或自动化的方法来做到这一点?例如类似于添加 R2 值的方式。
更新
我说的 p 值是 斜率 p 值。当 p < 0.005.
时,趋势被认为具有高度统计显着性
使用 stat_fit_glance
,它是 R 中 ggpmisc
包的一部分。这个包是 ggplot2
的扩展,因此可以很好地配合它。
ggplot(df, aes(x= new_price, y= carat, color = cut)) +
geom_point(alpha = 0.3) +
facet_wrap(~clarity, scales = "free_y") +
geom_smooth(method = "lm", formula = formula, se = F) +
stat_poly_eq(aes(label = paste(..rr.label..)),
label.x.npc = "right", label.y.npc = 0.15,
formula = formula, parse = TRUE, size = 3)+
stat_fit_glance(method = 'lm',
method.args = list(formula = formula),
geom = 'text',
aes(label = paste("P-value = ", signif(..p.value.., digits = 4), sep = "")),
label.x.npc = 'right', label.y.npc = 0.35, size = 3)
stat_fit_glance
基本上接受在 R 中通过 lm()
传递的任何内容,并允许使用 ggplot2
对其进行处理和打印。用户指南包含一些函数的概要,例如 stat_fit_glance
:https://cran.r-project.org/web/packages/ggpmisc/vignettes/user-guide.html。我也相信这给出了模型 p 值,而不是斜率 p 值(通常),这对于多元线性回归来说是不同的。对于简单的线性回归,它们应该是相同的。
剧情如下:
我得到了这个情节
使用下面的代码
library(dplyr)
library(ggplot2)
library(ggpmisc)
df <- diamonds %>%
dplyr::filter(cut%in%c("Fair","Ideal")) %>%
dplyr::filter(clarity%in%c("I1" , "SI2" , "SI1" , "VS2" , "VS1", "VVS2")) %>%
dplyr::mutate(new_price = ifelse(cut == "Fair",
price* 0.5,
price * 1.1))
formula <- y ~ x
ggplot(df, aes(x= new_price, y= carat, color = cut)) +
geom_point(alpha = 0.3) +
facet_wrap(~clarity, scales = "free_y") +
geom_smooth(method = "lm", formula = formula, se = F) +
stat_poly_eq(aes(label = paste(..rr.label..)),
label.x.npc = "right", label.y.npc = 0.15,
formula = formula, parse = TRUE, size = 3)
除了 R2 之外,我还想将 p 值添加到构面。我可以通过 运行 回归手动执行此操作,然后获取 p 值并使用 geom_text()
添加这些 p 值 similar to the answer of this question.
有没有更快或自动化的方法来做到这一点?例如类似于添加 R2 值的方式。
更新
我说的 p 值是 斜率 p 值。当 p < 0.005.
时,趋势被认为具有高度统计显着性使用 stat_fit_glance
,它是 R 中 ggpmisc
包的一部分。这个包是 ggplot2
的扩展,因此可以很好地配合它。
ggplot(df, aes(x= new_price, y= carat, color = cut)) +
geom_point(alpha = 0.3) +
facet_wrap(~clarity, scales = "free_y") +
geom_smooth(method = "lm", formula = formula, se = F) +
stat_poly_eq(aes(label = paste(..rr.label..)),
label.x.npc = "right", label.y.npc = 0.15,
formula = formula, parse = TRUE, size = 3)+
stat_fit_glance(method = 'lm',
method.args = list(formula = formula),
geom = 'text',
aes(label = paste("P-value = ", signif(..p.value.., digits = 4), sep = "")),
label.x.npc = 'right', label.y.npc = 0.35, size = 3)
stat_fit_glance
基本上接受在 R 中通过 lm()
传递的任何内容,并允许使用 ggplot2
对其进行处理和打印。用户指南包含一些函数的概要,例如 stat_fit_glance
:https://cran.r-project.org/web/packages/ggpmisc/vignettes/user-guide.html。我也相信这给出了模型 p 值,而不是斜率 p 值(通常),这对于多元线性回归来说是不同的。对于简单的线性回归,它们应该是相同的。
剧情如下: