R中的ANCOVA:ANCOVA与错误回归=它们应该不一样吗?

时间:2014-11-11 02:47:09

标签: r covariance anova

我有一个非常有趣的问题。我不确定问题是否是我对协方差分析(ancova)的理解,或者它在R内。可能前者是这里发生的事情。总之,我担心的是,常规的ancova应该输出相同的结果(平方和F值的总和),好像我会手工计算(做anova和他们回归错误术语),对吧?我们来举个例子:

假设这个基本数据集

> datas
   Pen Sex Ration  X     Y
1    1   M      A 38  9.52
2    1   F      A 48  9.94
3    1   M      B 39  8.51
4    1   F      B 48 10.00
5    1   M      C 48  9.11
6    1   F      C 48  9.75
7    2   M      A 35  8.21
8    2   F      A 32  9.48
9    2   M      B 38  9.95
10   2   F      B 32  9.24
11   2   M      C 37  8.50
12   2   F      C 28  8.66
13   3   M      A 41  9.32
14   3   F      A 35  9.32
15   3   M      B 46  8.43
16   3   F      B 41  9.34
17   3   M      C 42  8.90
18   3   F      C 33  7.63
> 

现在,执行ancova

ancova1 = lm(Y ~ Pen + X + Sex + Ration, data=datas)
> anova(ancova1)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq F value Pr(>F)
Pen        2 1.3403 0.67017  2.1851 0.1588
X          1 0.7337 0.73372  2.3923 0.1502
Sex        1 0.8773 0.87728  2.8604 0.1189
Ration     2 1.1741 0.58703  1.9140 0.1935
Residuals 11 3.3737 0.30670  

请记住那些F值(Fsex和Fration)。现在,让我们进行手动计算。

首先,Y的anova

Yreg = lm(Y ~ Pen + Sex + Ration, data=datas)
> anova(Yreg)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq F value Pr(>F)
Pen        2 1.3403 0.67017  1.7386 0.2172
Sex        1 0.4705 0.47045  1.2204 0.2909
Ration     2 1.0626 0.53129  1.3783 0.2892
Residuals 12 4.6257 0.38548 

第二,X的anova

Xreg = lm(X ~ Pen + Sex + Ration, data=datas)
> anova(Xreg)
Analysis of Variance Table

Response: X
          Df Sum Sq Mean Sq F value   Pr(>F)   
Pen        2 374.78 187.389  8.4325 0.005162 **
Sex        1  20.06  20.056  0.9025 0.360854   
Ration     2  18.78   9.389  0.4225 0.664787   
Residuals 12 266.67  22.222    

第三,让我们在errorX上回归errorY,因此我们得到协变量调整的斜率。

errorY = resid(Yreg)
errorX = resid(Xreg)
errorreg = lm(errorY ~ errorX)
> coef(errorreg)
 (Intercept)       errorX 
5.465170e-18 6.852083e-02 

您可能需要注意,errorX的斜率与我们的第一个ancova(即0.06852083)计算的斜率相同。

现在,是时候改变变量了:

Z = datas$Y - 0.06852083*(datas$X)
datas = cbind(datas, Z)

最后,让我们在Z

中执行anova
Zreg = lm(Z ~ Pen + Sex + Ration, data=datas)
> anova(Zreg)
Analysis of Variance Table

Response: Z
          Df Sum Sq Mean Sq F value  Pr(>F)  
Pen        2 1.0602 0.53009  1.8855 0.19406  
Sex        1 0.9856 0.98556  3.5056 0.08573 .
Ration     2 1.1821 0.59105  2.1023 0.16491  
Residuals 12 3.3737 0.28114        

在这里,我怀疑。性别和定额的F值不应该与从我们的第一个常规ancova获得的F值相同吗?它们看起来不同,尽管残差是相同的。 Sum Sq。对于性和理性而言,在anova上的anova与ancova中的不同。这是为什么?

好吧,我明白Pen的Sum Sq会有所不同,一次是在第一种情况下,我没有通过协变量X来调整Pen效果。但是,我不会期望Sex和Ration有不同的值。

这是一个R问题,还是我在这里遗漏了什么?

非常感谢您的关注!

已更新

好的,我在这里遇到了问题。实际上,问题就像Dason所说的那样 - 不同的自由度和更多的东西 - 协变量X对Y的影响的一部分没有考虑变量Z的变化。似乎X对Y的遗留效应( 0.4128)。请注意(现在Zreg anova与Y中的ancova相同):

Zreg = lm(Z ~ X + Pen + Ration + Sex + interaction(Ration, Sex), data=datas)
> anova(Zreg)
Analysis of Variance Table

Response: Z
          Df Sum Sq Mean Sq F value Pr(>F)
X          1 0.4128 0.41277  1.3459 0.2706
Pen        2 0.7637 0.38187  1.2451 0.3255
Sex        1 0.8773 0.87728  2.8604 0.1189
Ration     2 1.1741 0.58703  1.9140 0.1935
Residuals 11 3.3737 0.30670      

或许,在Z中的anova和Y中的anova之间进行更彻底的比较。但问题仍然是......在一般线性模型上的最小二乘法,其中分类和连续协变量与errorX和errorX上的errorY回归不同然后执行变量的变化(找到Z并在Z中进行anova)?从理论上讲,我猜它们看起来应该是一样的。如果没有,我希望至少他们会产生相同的效果解释。

0 个答案:

没有答案