[关闭]
@Macux 2015-12-01T06:49:45.000000Z 字数 5300 阅读 1509

R语言_方差分析

R语言_学习笔记



Part 1. 前言介绍

1、常见研究设计的表达式

其中,小写字母表示定量变量,大写字母表示组别因子,Subject表示对被试者独有的表示变量(name)

2、表达式中各项的顺序

(1)、出现上述任意一种情况,等式右边的变量都与其他每个变量相关,表达式中的效应顺序就会造成影响。
(2)、当样本大小越不平衡,效应项的顺序对结果的影响越大。
(3)、一般来说,越基础性的效应越需要放在表达式前面。具体而言,首先是“协变量”,然后是“主效应”,接着是“双因素的交互项”,再接着是“三因素的交互项”。对于主效应,越基础性的变量越应放在表达式前面


Part 2. 单因素方差分析

1.1、单因素协方差分析 - R语言实现的方法

  1. #一条一条Run,不要Source.
  2. > library(mvtnorm)
  3. > library(survival)
  4. > library(splines)
  5. > library(multcomp)
  6. > library(gplots)
  7. > attach(cholesterol)
  8. > aggregate(response,by=list(trt),FUN=mean) #用aggregate()函数的好处是输出的形式非常漂亮。
  9. Group.1 x
  10. 1 1time 5.78197
  11. 2 2times 9.22497
  12. 3 4times 12.37478
  13. 4 drugD 15.36117
  14. 5 drugE 20.94752
  15. > fitav <- aov(response~trt)
  16. > summary(fitav)
  17. Df Sum Sq Mean Sq F value Pr(>F)
  18. trt 4 1351.4 337.8 32.43 9.82e-13 ***
  19. Residuals 45 468.8 10.4
  20. > plotmeans(response~trt,xlab="Treatment",ylab="Response",
  21. main="Mean Plot\nwith 95% CI",col="red")

此处输入图片的描述

1.2、单因素方差分析 - 假设检验

  1. #用qqPlot()函数检验
  2. > library(car)
  3. > qqPlot(lm(response~trt,),
  4. simulate=TRUE,
  5. main="Q-Q Plot",
  6. labels=FALSE)

此处输入图片的描述

  1. > bartlett.test(response~trt)
  2. Bartlett test of homogeneity of variances
  3. data: response by trt
  4. Bartlett's K-squared = 0.5797, df = 4, p-value = 0.9653

p > 0.05,符合同方差性。

2.1、单因素协方差分析 - R语言实现的方法

  1. > library(colorspace)
  2. > library(effects)
  3. > library(multcomp)
  4. > attach(litter)
  5. > aggregate(weight,by=list(dose),FUN=mean)
  6. Group.1 x
  7. 1 0 32.30850
  8. 2 5 29.30842
  9. 3 50 29.86611
  10. 4 500 29.64647
  11. > fitkl <- aov(weight~gesttime+dose)
  12. > summary(fitkl)
  13. Df Sum Sq Mean Sq F value Pr(>F)
  14. gesttime 1 134.3 134.30 8.049 0.00597 **
  15. dose 3 137.1 45.71 2.739 0.04988 *
  16. Residuals 69 1151.3 16.69
  17. #用effect()函数去除协变量效应的组均值。
  18. > effect("dose",fitkl)
  19. dose effect
  20. dose
  21. 0 5 50 500
  22. 32.35367 28.87672 30.56614 29.33460
  23. #在实际情况中,这个结果和直接求均值的结果会相差较远。

2.2 单因素协方差分析 - 假设检验

  1. #正态性和同方差性检验,与ANOVA相同,此处不赘述。
  2. #回归斜率的同质性检验
  3. > fitkl2 <- aov(weight~gesttime*dose)
  4. > summary(fitkl2)
  5. Df Sum Sq Mean Sq F value Pr(>F)
  6. gesttime 1 134.3 134.30 8.289 0.00537 **
  7. dose 3 137.1 45.71 2.821 0.04556 *
  8. gesttime:dose 3 81.9 27.29 1.684 0.17889
  9. Residuals 66 1069.4 16.20

3、单因素方差分析 - 成对组间比较

  1. #此处使用glht()函数,因为它比TukeyHSD()函数更高大上!
  2. > library(multcomp)
  3. > par(mar=c(5,4,6,2)) #增大顶部边界面积,能更好地书写a、b、c、d
  4. > tuk <- glht(fitav,linfct=mcp(trt="Tukey"))
  5. > plot(cld(tuk,level=.05),col="light blue")

此处输入图片的描述

结论分析:

4、稳健单因素方差分析

  1. > kruskal.test(response~trt)
  2. Kruskal-Wallis rank sum test
  3. data: response by trt
  4. Kruskal-Wallis chi-squared = 36.5421, df = 4, p-value = 2.238e-07

p < 0.05,表明不同组之间的中位数有显著差异。


Part 3. 双因素方差分析

1、R语言实现方法

  1. #一条一条Run,不要Source.
  2. > library(lattice)
  3. > library(grid)
  4. > library(latticeExtra)
  5. > library(RColorBrewer)
  6. > library(multcomp)
  7. > library(mvtnorm)
  8. > library(survival)
  9. > library(splines)
  10. > library(HH)
  11. > attach(ToothGrowth)
  12. > interaction2wt(len~supp*dose)

此处输入图片的描述
结论分析:

2、混合模型方差分析
又被称为“重复测量方差分析”。

  1. > library(lattice)
  2. > attach(CO2)
  3. > wed <- subset(CO2,Treatment=='chilled') #取出数据集CO2的子集
  4. > attach(wed)
  5. > fitavc <- aov(uptake~conc*Type+Error(Plant/conc),wed) #在子集wed中做混合模型方差分析
  6. > summary(fitavc)
  7. Error: Plant
  8. Df Sum Sq Mean Sq F value Pr(>F)
  9. Type 1 2667.2 2667.2 60.41 0.00148 **
  10. Residuals 4 176.6 44.1
  11. ---
  12. Error: Plant:conc
  13. Df Sum Sq Mean Sq F value Pr(>F)
  14. conc 1 888.6 888.6 215.46 0.000125 ***
  15. conc:Type 1 239.2 239.2 58.01 0.001595 **
  16. Residuals 4 16.5 4.1
  17. ---
  18. Error: Within
  19. Df Sum Sq Mean Sq F value Pr(>F)
  20. Residuals 30 869 28.97

0.00148和0.000125表明主效应显著,0.001595表明交互效应显著。

  1. #用interaction.plot()函数展示交互效应,分析交互效应是否显著。
  2. > par(las=2,mar=c(10,4,4,2))
  3. > interaction.plot(conc,Type,uptake,type="b",col=c("orange","royalblue3"),pch=c(16,18),
  4. main="Interaction Plot for Plant Type and Concentration")

此处输入图片的描述
结论分析:

  1. #若交互效应显著,用boxplot()函数展示交互效应的不同侧面。
  2. boxplot(uptake~Type*conc,col=c("palegreen1","purple3"),
  3. main="Chilled Quebec andd Mississippi Plants",
  4. ylab="Carbon dioxide uptake rate (umol/m^2 sec)")

此处输入图片的描述

同一浓度下的箱线图,不处于同一水平线上,这就表明存在交互效应。


Part 4. 多元方差分析

1.1、R语言实现的方法

  1. #一条一条Run,不要Source.
  2. > library(MASS)
  3. > attach(UScereal)
  4. > y <- cbind(calories,fat,sugars)
  5. > aggregate(y,by=list(shelf),FUN=mean)
  6. > cov(y) #生成各因变量方差与协方差。
  7. Group.1 calories fat sugars
  8. 1 1 119.4774 0.6621338 6.295493
  9. 2 2 129.8162 1.3413488 12.507670
  10. 3 3 180.1466 1.9449071 10.856821
  11. > fituk <- manova(y~shelf)
  12. > summary(fituk)
  13. Df Pillai approx F num Df den Df Pr(>F)
  14. shelf 2 0.4021 5.1167 6 122 0.0001015 ***
  15. Residuals 62

p=0.0001015 < 0.05,表明卡路里(calories)、脂肪(fat)、糖(sugars)均会因为储存架位置的不同而变化。

1.2、均值比较

  1. #以sugars为例。
  2. > library(multcomp)
  3. > par(mar=c(5,4,6,2)) #增大顶部边界面积,能更好地书写a、b、c、d
  4. > fitsk <- aov(sugars~shelf)
  5. > tuk2 <- glht(fitsk,linfct=mcp(shelf="Tukey"))
  6. > plot(cld(tuk2,level=.05),col="light blue")

此处输入图片的描述

1.3、假设检验

  1. #检验多元正态性
  2. > center <- colMeans(y)
  3. > n <- nrow(y)
  4. > p <- ncol(y)
  5. > cov <- cov(y)
  6. > d <- mahalanobis(y,center,cov) #马氏距离
  7. > coord <- qqplot(qchisq(ppoints(n),df=p),d,
  8. main="Q-Q Plot > Assessing MUlutivariate Normality",
  9. ylab="Mahalanobis D2")
  10. > abline(a=0,b=1)
  11. > identify(coord$x,coord$y,labels=row.names(UScereal))

此处输入图片的描述

2、稳健多元方差分析

  1. #稳健多元方差分析,其对离群点和违反“多元正态性”和“方差——协方差矩阵同质性”的情况不敏感。
  2. > library(robustbase)
  3. > library(rrcov)
  4. > Wilks.test(y,shelf,method="mcd")
  5. Robust One-way MANOVA (Bartlett Chi2)
  6. data: x
  7. Wilks' Lambda = 0.5107, Chi2-Value = 23.883, DF = 4.868, p-value = 0.0002019
  8. sample estimates:
  9. calories fat sugars
  10. 1 119.8210 0.7010828 5.663143
  11. 2 128.0407 1.1849576 12.537533
  12. 3 160.8604 1.6524559 10.352646

p=0.0002019 < 0.05,表明存储在货架顶部、中部和底部的谷物营养成分含量显著不同。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注