r - 在 stat_poly_eq() 中添加阻塞因子
问题描述
我正在用 lm() 修复线性回归
model<-lm(y~x+a, data=dat)
其中 a 是具有多个因子水平的阻塞变量。
summary(model)
Call:
lm(formula = y ~ x, data = dat)
Residuals:
Min 1Q Median 3Q Max
-1.45006 -0.20737 0.04593 0.26337 0.91628
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -7.704042 1.088024 -7.081 1.08e-10 ***
x 0.248889 0.036436 6.831 3.81e-10 ***
a1 0.002695 0.150530 0.018 0.98575
a2 0.491749 0.152378 3.227 0.00162 **
a3 0.349772 0.145024 2.412 0.01740 *
a4 -0.009058 0.138717 -0.065 0.94805
a5 0.428085 0.128041 3.343 0.00111 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4505 on 119 degrees of freedom
Multiple R-squared: 0.4228, Adjusted R-squared: 0.3937
F-statistic: 14.53 on 6 and 119 DF, p-value: 2.19e-12
在使用 ggplot 绘制原始数据和回归线时,我试图显示与 summary(model) 相同的方程和 R2,但因为我实际上并没有提供 a,所以它没有考虑到 stat_poly_eq( )
ggplot(data=dat, aes(x, y)) +
geom_point() +
geom_abline(slope=coef(model)[2], intercept=coef(model)[1], color='red') +
stat_poly_eq(data=plankton.dat, formula = y ~ x,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE, size=3, colour= "red")
自然,因为 lm() 和 stat_poly_eq() 对模型的拟合不同,所以得到的参数估计值和 R2 是不同的。
是否可以在 stat_poly_eq 中包含阻塞变量,如果可以,如何?
解决方案
由于因子a
为六个水平,您已经拟合了六条平行线,因此仅显示一条线和一个方程没有多大意义。如果因子a
描述块,则可以使用lme()
拟合混合效应模型,它只会为您提供一条线的估计值。您必须考虑 R 中默认使用的对比,并且第一级a
ora0
是“参考”,因此您的示例中绘制的线是块级a0
的,对整个数据集无效。
stat_poly_eq()
仅支持lm()
. 与它一起使用stat_poly_eq()
的方式相同。stat_smooth(method = "lm")
如果您在 ggplot 之外拟合模型,则需要使用 plotmath 语法手动构建合适的标签,并使用annotate(geom = "text", x = 27, y = 1, label = "<your string>", parse = TRUE)
. 要创建我用占位符显示的字符串<your string>
,您可以按照与geom_abline()
绘图示例中类似的方式提取系数估计值,并使用paste()
或sprintf()
组装方程。您也可以coef()
与装有lme()
.
'ggpmisc' 包中的其他统计信息可让您拟合模型,lme()
但无论如何您都需要手动组装标签。如果您将制作许多地块,您可能会发现值得查看软件包“ggpmisc”的用户指南以获取详细信息。
推荐阅读
- python-3.x - Python3.7 asyncio启动webserver(FastAPI)和aio_pika消费者
- c# - 无法删除第二个或第三个选定索引
- powershell - 将 AD 用户信息通过管道传输到 CSV
- javascript - 使用 Jquery 和 Ajax 以及 json 文件从下拉列表中动态选择
- android - 如果hintEnabled false,TextinputLayout 无法正确显示样式
- mysql - CloudSQL 只读副本 - 无法执行停止从属,跳过命令
- javascript - 我从地图函数中获取空项目而不是有条件创建的项目
- google-analytics - 将加载旧版本的容器
- jquery - 我如何定位表的第二个 td 中的输入标签(输入标签是根据用户需要动态附加的)
- android - Undo/Redo with Canvas Bitmap drawing (KOTLIN)