R语言实战一书中,多元方差分析并没有把shelf转换为factor类型,自由度为1,而转换为factor类型之后自由度为2,请问这两种方式有什么不同?哪种正确?
我是看到它上面说可以使用TukeyHSD来判断每种因变量与哪种货架与其它货架是不同的,而我在使用TukeyHSD的时候,发现它需要把shelf转换为因子才可以使用,于是反过来产生了上面的疑问。
附程序结果(我把R语言实战中的例子改了一下,给出对比):
> library(MASS)
> attach(UScereal)
> y1<-as.data.frame(cbind(calories,fat,sugars,shelf))
> str(y1)
'data.frame': 65 obs. of 4 variables:
$ calories: num 212 212 100 147 110 ...
$ fat : num 3.03 3.03 0 2.67 0 ...
$ sugars : num 18.2 15.2 0 13.3 14 ...
$ shelf : num 3 3 3 1 2 3 1 3 2 1 ...
> y2<-as.data.frame(cbind(calories,fat,sugars,shelf))
> y2$shelf<-as.factor(y2$shelf)
> str(y2)
'data.frame': 65 obs. of 4 variables:
$ calories: num 212 212 100 147 110 ...
$ fat : num 3.03 3.03 0 2.67 0 ...
$ sugars : num 18.2 15.2 0 13.3 14 ...
$ shelf : Factor w/ 3 levels "1","2","3": 3 3 3 1 2 3 1 3 2 1 ...
> fit1<-manova(cbind(calories,fat,sugars)~shelf,data=y1)
> fit2<-manova(cbind(calories,fat,sugars)~shelf,data=y2)
> summary(fit1)
Df Pillai approx F num Df den Df Pr(>F)
shelf 1 0.19594 4.955 3 61 0.00383 **
Residuals 63
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> summary(fit2)
Df Pillai approx F num Df den Df Pr(>F)
shelf 2 0.4021 5.1167 6 122 0.0001015 ***
Residuals 62
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> summary.aov(fit1)
Response calories :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 1 45313 45313 13.995 0.0003983 ***
Residuals 63 203982 3238
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response fat :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 1 18.421 18.4214 7.476 0.008108 **
Residuals 63 155.236 2.4641
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response sugars :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 1 183.34 183.34 5.787 0.01909 *
Residuals 63 1995.87 31.68
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> summary.aov(fit2)
Response calories :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 2 50435 25217.6 7.8623 0.0009054 ***
Residuals 62 198860 3207.4
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response fat :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 2 18.44 9.2199 3.6828 0.03081 *
Residuals 62 155.22 2.5035
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response sugars :
Df Sum Sq Mean Sq F value Pr(>F)
shelf 2 381.33 190.667 6.5752 0.002572 **
Residuals 62 1797.87 28.998
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1