将p值添加到ggplot中,而无需单独创建lm对象

时间:2019-02-07 16:47:18

标签: r ggplot2 ggpmisc

我必须创建大量(100+)线性模型的ggplots。我想将p值(可能还有R2)添加到每个绘图中。我知道可以使用ggpmisc来做到这一点。在这里,我使用stat_fit_glance来添加p值。我的“问题”是这两项都要求我先运行lm才能作为公式= my_lm插入。

由于必须创建大量绘图,我想知道是否有一种方法可以避免首先创建lm对象,而只是在生成ggplot时对其进行计算?我可以使用stat_compare_means进行箱形图的t检验,我真的希望找到一种方法也可以使用lm。

我的代码在下面。我希望能够跳过第一行代码:

my_lm <- lm(y ~ x)


ggplot(data = complete, aes(x= x, y = y))+  
geom_point()+
theme_classic()+
geom_smooth(method = "lm")+
labs(x="Ellenberg F", y = "Species richness")+
stat_fit_glance(method = 'lm',
              method.args = list(data = complete, formula = my_lm),
              geom = 'text',
              aes(label = paste("p-value = ", signif(..p.value.., digits = 4), sep = "")),
              label.x = 8.5, label.y = 25, size = 3)

我试过简单地将公式= y〜x放倒,

1 个答案:

答案 0 :(得分:2)

ggpmisc::stat_fit_glance的帮助下:method.args = list(formula = y ~ x)
这意味着您不需要先运行lm
您只能为线性模型指定公式。

set.seed(1)
n <- 100
x <- 8+rnorm(n)
y <- 11+x+2*rnorm(n)
complete <- data.frame(x, y)

summary(lm(y~x))
ggplot(data = complete, aes(x= x, y = y))+  
geom_point()+
theme_classic()+
geom_smooth(method = "lm")+
labs(x="Ellenberg F", y = "Species richness")+
stat_fit_glance(method = 'lm',
       method.args = list(formula = y ~ x),  geom = 'text', 
       aes(label = paste("p-value=", signif(..p.value.., digits = 4), 
                      "   R-squared=", signif(..r.squared.., digits = 3), sep = "")),
       label.x = 8.5, label.y = 25, size = 5)

enter image description here