gpt4 book ai didi

r - 如何在 R 中的 emmeans 包中计算 SE

转载 作者:行者123 更新时间:2023-12-04 01:48:30 26 4
gpt4 key购买 nike

我对计算混合模型的 SE 很感兴趣。为此,我首先在一个更简单的模型中试用了软件包中包含的一个数据集。

pigs$percent <- as.factor(pigs$percent)
Doc_lm_1 <- lm(conc~percent, pigs)
summary(Doc_lm_1)
emmeans(Doc_lm_1, pairwise~percent)$emmeans

输出:

percent emmean   SE df lower.CL upper.CL
9 32.7 2.92 25 26.7 38.7
12 38.0 2.76 25 32.3 43.7
15 40.1 3.12 25 33.7 46.6
18 39.9 3.70 25 32.3 47.6

当我尝试使用平衡数据集时,所有组的 SE 都是相同的,并且与手工制作的 SE 不匹配。我想在那种情况下并没有因为任何因素而考虑它,但它仍然应该与手工制作的 SE 相匹配

难道SE就是参数的SE?正如我们在表中看到的,当数据不平衡时,SE 在组之间会有所不同。我的假设基于软件包的 cran 项目网站指示 ( https://cran.r-project.org/web/packages/emmeans/vignettes/basics.html#backstory ):

估计的边际均值基于模型——而非直接基于数据”

所以我问我,SE 是如何计算的?以及添加随机因子将如何改变此计算?提前致谢。

最佳答案

回答具体问题,看汇总结果:

> summary(Doc_lm_1)
... several lines skipped ...
Residual standard error: 8.267 on 25 degrees of freedom
Multiple R-squared: 0.134, Adjusted R-squared: 0.03011
F-statistic: 1.29 on 3 and 25 DF, p-value: 0.2997

...从中我们可以看出模型的残差 SD 为 8.267。此外,我们还需要每个因子级别的观察次数:

> with(pigs, tapply(conc, percent, length))
9 12 15 18
8 9 7 5

由于平均值的 SE 是 SD 除以样本量的平方根,因此计算:

> 8.267 / sqrt(c(8,9,7,5))
[1] 2.922826 2.755667 3.124632 3.697115

你瞧,这些与 emmeans() 输出中显示的 SE 匹配。正如问题中引用的那样,emmeans() 使用模型,显示的模型基于所有四个样本都具有相同 SD 的假设,以及对常见的 SD 为 8.267,具有 25 个自由度。一次基于一个样本的手工计算使用单独的 SD,这与交给 emmeans() 的模型不同;这就是结果不同的原因。

关于 emmeans() 如何计算 SE 的一般问题,它不使用手算公式。它利用了 EMM 是回归系数的线性组合这一事实。它找出需要哪些组合,然后使用涉及来自 coef() 的回归系数的矩阵计算,以及这些系数的方差-协方差矩阵 vcov(),获得 EMM 及其标准误差。对于涉及多个因素、随机效应等的模型,这些计算几乎不可能通过手工重现。

关于r - 如何在 R 中的 emmeans 包中计算 SE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com