Добавьте p-значение в ggplot, не создавая lm-obejct отдельно
Я должен создать большое (более 100) количество графиков линейных моделей. Я хотел бы добавить значение р (и, возможно, R2) для каждого графика. Я знаю, что это можно сделать, используя ggpmisc
, Здесь я работаю stat_fit_glance
добавить значение р. Моя "проблема" в том, что оба они требуют от меня lm
сначала нужно вставить как формула = my_lm.
Поскольку мне приходится создавать большое количество графиков, мне было интересно, есть ли способ избежать создания объекта lm в первую очередь и просто рассчитать его при создании ggplot? Я могу сделать это для t-тестов на боксплоты, используя stat_compare_means
и очень надеюсь найти способ сделать это и с Лм.
Мой код присутствует ниже. Я хотел бы иметь возможность пропустить первую строку кода:
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)
Я попытался просто положить формулу = у ~ х без удачи.
1 ответ
С помощью 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)
https://s tackru.com/images/1a49ed09e0a87bc758da4c3b1ae8546a1cb4eaa1.png