ANOVA 水平系数的 CI 与 t 检验 CI 之间的差异 - 哪一个是“正确的”?

机器算法验证 r 方差分析 置信区间 流明
2022-04-07 17:48:26

如何获得 ANOVA 水平系数的 95% 置信区间?用于与常数值进行比较,而不是多重比较(如 MMC)。

我试图从模型中获取系数的 SE:

> m1 = lm(formula = TrendAdd ~ 0 + Migrace)
> c = coef(summary(m1))
> c
              Estimate  Std. Error     t value  Pr(>|t|)
MigraceB -0.0084214286 0.006555969 -1.28454367 0.2019195
MigraceD  0.0032250000 0.007510806  0.42938134 0.6685694
MigraceR  0.0006068966 0.007889737  0.07692228 0.9388391
> c_low = c[,1] - 1.96*c[,2]
> c_high = c[,1] + 1.96*c[,2]
> c_low
   MigraceB    MigraceD    MigraceR 
-0.02127113 -0.01149618 -0.01485699 
> c_high
   MigraceB    MigraceD    MigraceR 
0.004428271 0.017946180 0.016070782 

但我不确定这是否正确!它产生的结果与我在每个级别上运行 t-test 时不同Migrace(t.test 间隔更大):

> t.test(TrendAdd[Migrace == "B"])

    One Sample t-test

data:  TrendAdd[Migrace == "B"] 
t = -1.206, df = 41, p-value = 0.2347
alternative hypothesis: true mean is not equal to 0 
95 percent confidence interval:
 -0.022523452  0.005680595 
sample estimates:
   mean of x 
-0.008421429 

为什么有区别以及如何正确地做到这一点?

1个回答

CI 之间存在差异,因为在 ANOVA 的情况下,误差方差的估计基于来自所有组的所有观察值,而在单独的一个样本中t- 测试每个组的 CI,每个 CI 使用自己的误差估计,基于来自该单个组的观察。

编辑:当每组中的真实误差方差相同(方差同质性假设)时,使用合并误差估计是合适的。在这种情况下,使用来自例如组 C 的残差来估计组 A 中的误差方差是有意义的。合并误差估计基于比每个样本更多的观察结果t-test CI,因此更可靠(当满足假设时)。这种可靠性的提高反映在较低的tα/2影响 CI 宽度的分位数值。它较低是因为t-distribution 有更多的df。

总之,这两种方法都为您提供了每个组的真实均值的 CI。基于汇总误差估计的 CI 通常(但不一定针对每个组)更窄,因为更多的观测值用于误差估计。您可以通过假设每组中的真实误差方差相等来获得这种优势。

set.seed(1.234)                       # generate some reproducible data
P  <- 3                               # number of groups
Nj <- c(41, 37, 42)                   # group sizes
N  <- sum(Nj)                         # total number of observations
DV <- rnorm(N, rep(c(-1, 0, 1), Nj), 4)      # simulated data for all groups
IV <- factor(rep(LETTERS[1:P], Nj))   # grouping factor

现在拟合一个单元格均值模型,使得理论模型系数是单元格期望值,并且它们的估计是单元格均值。

> fit <- lm(DV ~ IV - 1)              # ANOVA with cell means model (no intercept)
> (bJ <- coef(fit))                   # estimated coefficients
       IVA        IVB        IVC 
-0.6569245  0.5935542  1.3960387

> (Mj <- tapply(DV, IV, mean))        # ... are just the cell means
         A          B          C 
-0.6569245  0.5935542  1.3960387

单独测试系数(零假设:系数为 0,单元格均值模型:与相应单样本中的假设相同t-test) 以及整个模型。还获得系数的置信区间。无需手动执行此操作,有confint().

> summary(fit)                        # some output lines deleted
Coefficients:
    Estimate Std. Error t value Pr(>|t|)  
IVA  -0.6569     0.5551  -1.183   0.2390  
IVB   0.5936     0.5843   1.016   0.3118  
IVC   1.3960     0.5485   2.545   0.0122 *
---
Residual standard error: 3.554 on 117 degrees of freedom
Multiple R-squared: 0.07077, Adjusted R-squared: 0.04695 
F-statistic:  2.97 on 3 and 117 DF,  p-value: 0.03472

> confint(fit)                        # confidence intervals for coefficients
         2.5 %    97.5 %
IVA -1.7562828 0.4424337
IVB -0.5637040 1.7508125
IVC  0.3098469 2.4822305

系数估计的标准误差是矩阵的对角线σ^(XX)1在哪里σ^2=||e||2/(NP)是误差方差的估计(||e||2是残差平方和,N观察的总数,和P组数),和X是设计矩阵。有了这些标准误和tα/2;NP值,我们得到置信区间。

> sigHatSq <- sum(residuals(fit)^2) / (N-P)
> X        <- model.matrix(fit)        # design matrix
> (StdErr  <- sqrt(diag(sigHatSq * solve(t(X) %*% X))))
      IVA       IVB       IVC 
0.5551059 0.5843418 0.5484577

> bJ - qt(0.025, N-P)*StdErr           # confidence interval upper bound
      IVA       IVB       IVC 
0.4424337 1.7508125 2.4822305 

> bJ + qt(0.025, N-P)*StdErr           # confidence interval lower bound
       IVA        IVB        IVC 
-1.7562828 -0.5637040  0.3098469

在相应的一个样本中t- 测试,CI 是基于每个单细胞标准偏差和tα/2;nj1值(注意反映误差估计基于较少观察的不同 df)。

> t.test(DV[IV == "A"])$conf.int
[1] -1.763466  0.449617

> t.test(DV[IV == "B"])$conf.int
[1] -0.679711  1.866819

> t.test(DV[IV == "C"])$conf.int
[1] 0.3504876 2.4415898

> sdJ <- tapply(DV, IV, sd)                     # group standard deviations
> Mj - qt(0.025, Nj-1)*(sdJ / sqrt(Nj))         # confidence interval upper bound
       A        B        C 
0.449617 1.866819 2.441590 

> Mj + qt(0.025, Nj-1)*(sdJ / sqrt(Nj))         # confidence interval lower bound
         A          B          C 
-1.7634661 -0.6797110  0.3504876