计算具有异方差性的组的标准误差

Calculating standard errors for groups with heteroskedasticity

我正在尝试计算几个实验组的标准误差 (SE),以便绘制图表。然而,数据不满足方差同质性——治疗之间的适应度方差差异很大,无法通过我尝试过的转换来解决。

我的模型很简单:Fitness ~ History * Treatment

在 R 中,我尝试将 emmeans 与我的模型一起用作 lm,这为每个组提供了与预期完全相同的 SE,因为它假定方差同质性。我读过包 nlme 的 gls 函数应该通过允许方差的异质性来解决这个问题 here,但即使 运行 emmeans on nlme::gls() 给出各组之间的 SE 极为相似(下图)。

> SM2 <- gls(Seed_mass_mg~History*Treatment, data1, na.action = na.omit)
emmeans(SM2, ~History * Treatment)
 History   Treatment emmean   SE  df lower.CL upper.CL
 ancestral drought     35.0 5.93 909     23.3     46.6
 dry       drought     56.3 6.29 909     44.0     68.7
 wet       drought     39.1 6.12 909     27.1     51.1
 ancestral watered    102.9 6.02 909     91.1    114.8
 dry       watered    131.0 6.38 909    118.5    143.6
 wet       watered    140.2 5.97 909    128.4    151.9

Degrees-of-freedom method: df.error 
Confidence level used: 0.95 

然而,当我通过公式计算SE时,我得到了完全不同的SE:

History     Treatment   Seed_mass_mg_SE
Ancestral   Watered     7.008392
Ancestral   Drought     1.60024
Drought     Watered     8.693766
Drought     Drought     2.740732
Watered     Watered     9.229806
Watered     Drought     2.234901

谁能帮我理解我对 SE 的误解?

没有 weights 参数的 gls() 调用就像 lm() 调用一样,因为它默认为同方差模型。特别是,我建议添加 weights = varIdent(form = ~ 1 | History*Treatment)。请参阅 varIdent 的文档,然后再看一下 FAQs vignette in emmeans