方差分析
前言
之前的预测问题都是基于量化的预测变量和响应变量,当预测变量是因子或者解释性变量的时候,回归模型无法很好的解释,此时,我们利用方差分析来解释不同组的差别(ANOVA)。这一章节涉及的软件包有gplots,car,multcomp,HH等,请自行下载。
ANOVA模型
ANOVA其实是广义线性模型的一种特殊形式,aov()函数提供的结果是比较不同组之间差异的显著性,而回归模型提供的结果是预测的值。
aov(formula,data=dataframe)
formula:Y~A+B+A:B+A*B
四种变量关系,单独的影响,交互效应,交叉影响
1.单因素方差分析
导入数据集cholesterol,治疗效果和药物每天注射量和注射次数的关系。
library(multcomp)
attach(cholesterol)
table(trt)
## trt
## 1time 2times 4times drugD drugE
## 10 10 10 10 10
aggregate(response,by=list(trt),FUN=mean)
## Group.1 x
## 1 1time 5.78197
## 2 2times 9.22497
## 3 4times 12.37478
## 4 drugD 15.36117
## 5 drugE 20.94752
aggregate(response,by=list(trt),FUN=sd)
## Group.1 x
## 1 1time 2.878113
## 2 2times 3.483054
## 3 4times 2.923119
## 4 drugD 3.454636
## 5 drugE 3.345003
fit<-aov(response~trt)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## trt 4 1351.4 337.8 32.43 9.82e-13 ***
## Residuals 45 468.8 10.4
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
table的结果表明每位病人都接受了每种治疗方案,aggregate的结果表明,drugE的效果最好,1times的效果最差,那么它们之间有没有明显的差异性呢?P值的结果告诉我们,差异性很显著(P<0.001)。
- 用plotmeans()来展示各组数据的均值和置信区间.
library(gplots)
plotmeans(response~trt,xlab = "Treatment",ylab="Response",main="Mean Plot with 95% CIs")
2.多重比较
ANOVA 的F检验值告诉我们各组之间存在差异性,但是并未说明具体哪两个