1. 单因素方差分析背景
前面对于两独立连续变量数据的比较分析,我们知道,如果各组数据符合正态性分布,且两组间方差齐,我们就可以采用t检验进行比较分析两组是否具有统计学差异。当多个独立连续变量样本比较分析时,我们该选用什么方法呢。这就是我们今天要介绍的单因素方差分析。
2. 单因素方差分析方法使用条件——独立、正态、方差齐
① 分组≥3,且各组相互独立; (独立)
②各组均来自于正态分布总体;(正态)
③各组方差相等; (方差齐)
3. R代码
####单因素方差分析举例####
library(survival)
library(car)
lung<-lung
lung$fenzu<-sample(c(0,1,2), 228, replace=TRUE, prob=c(0.3,0.4,0.4)) #制造数据:分组
lung$zhibiao<-rnorm(228,mean = 100,sd=10) #制造数据:分析指标
lung$fenzu<-as.factor(lung$fenzu)
#正态性检验
shapiro.test(lung$zhibiao[lung$fenzu=="0"])
shapiro.test(lung$zhibiao[lung$fenzu=="1"])
shapiro.test(lung$zhibiao[lung$fenzu=="2"])
#方差齐性检验
leveneTest(lung$zhibiao,lung$fenzu)
fit<-aov(lung$zhibiao~lung$fenzu,data = lung)
model<-summary(fit)
F.value<-model[[1]]$`F value`[1] #获取模型检验的统计值
P.value<-model[[1]]$`Pr(>F)`[1] #获取模型检验的P值
library(gplots)#绘制各组均值及其置信区间的图形
plotmeans(lung$zhibiao~lung$fenzu,xlab="ecog",ylab="zhibiao",main="Mean Plot with 95%CI")
####方差分析多重比较####
if (!require(multcomp)) {
install.packzhibiaos("multcomp")
}
library(multcomp)
#TukeyHSD方法
TukeyHSD(fit)
#par(las=1) #轴文字方向
#par(mar=c(5,8,4,2))#图形边界距离
plot(TukeyHSD(fit)) #两两比较差值的置信区间图
#Tukey方法
#par(mar=c(5,4,8,2))
tuk<-glht(fit,linfct=mcp(fenzu="Tukey"),alternative="two.side") #"Tukey"是方法。
summary(tuk)
plot(cld(tuk,level=.05),col="lightgrey") #箱式图
#dunnett方法
dunnett<-glht(fit,linfct=mcp(fenzu="Dunnett"),alternative="two.side")#
summary(dunnett)
#SNK方法
if(!require(agricolae)){
install.packages('agricolae')
}
library(agricolae)
out<-SNK.test(fit,"fenzu",console=TRUE)
print(SNK.test(fit,"fenzu",group=FALSE))
plotmeans(lung$zhibiao~lung$fenzu,xlab="分组",ylab="年龄",main="Mean Plot with 95%CI") #线图
思考:如果多样本数据不符合单因素方差分析的条件时我们该怎么分析数据?应该用什么方法呢?后续我们将介绍不满足方差分析条件的数据使用的方法:多组样本的秩和检验——Kruskal-Wallis方法。