1 方差分析 ANOVA
當包含的因子是解釋變量時,我們關注的重點通常會從預測轉向組別差異的分析,這種分析方法稱作方差分析(ANOVA)
2 單因素方差分析
2.1 單因素比較
install.packages("multcomp")
library(multcomp)
dat<-cholesterol #此數據集只有兩列,第一列是使用的方法,第二列是指標
attach(dat)
table(dat)
aggregate(response,by=list(trt),FUN=mean) #查看每種方法的平均,可以看出平均數差別很大
fit<-aov(response~trt) #做方差分析模型
summary(fit) #查看方差分析的結果
結果分析:看到Pr(>F)值很小,小於0.05,並且后面有三顆星星,說明結果是非常顯著的,說明這五種方法的療效是有區別的
2.2 多重比較
TukeyHSD(fit)
結果分析:觀察 p adj,即P值,P值小於0.05,說明這兩個方法的差異顯著,若P值大於0.05,說明這兩個方法的的效果相差不大
par(las=2)
par(mar=c(5,8,4,2))
plot(TukeyHSD(fit))
結果分析:如圖所示,黑色橫線觸碰到了豎着的虛線,就說明這兩個方法之間的療效不顯著
2.3 評估檢驗的假設條件
(1)因變量y服從正太分布
library(car)
dat<-cholesterol
qqPlot(lm(response~trt,data=dat),simulate = T)
結果分析:樣本基本在兩條虛線之間,就說明此樣本服從正太分布
(2)各組之間方差相等
library(car)
dat<-cholesterol
bartlett.test(response~trt,data=dat)
結果分析:p-value = 0.9653,P值很大,說明這五組的方差沒有很大的不同,可以滿足方差齊次性的假設
3 單因素協方差分析
3.1 ANOVA的實線
library(multcomp)
data(litter,package="multcomp")
attach(litter)
table(litter$dose) #統計不同劑dose量的頻數
aggregate(litter$weight,by=list(litter$dose),FUN=mean)
解釋:根據劑量dose的不同,查看重量weight的平均值mean
fit<-aov(litter$weight~litter$gesttime+litter$dose)
解釋:方差分析的順序特別重要,與回歸分析不一樣,litter$weight~litter$gesttime+litter$dose這樣寫的意思是排除協變量litter$gesttime的影響,分析變量litter$dose對litter$weight的影響
summary(fit)
結果分析:P值小於0.05,后面就會有星星,說明統計是顯著的,說明劑量dose會影響重量weight
錯誤:參數的長度必需一樣
修正:要指定具體的是哪一個表的哪一列
3.2 評估檢驗的假設條件
fit2<-aov(weight~gesttime*dose,data=litter)
解釋:把 + 換成了 * ,這兩項gesttime和dose就變成了交互項
summary(fit2)
3.3 結果的可視化
install.packages("HH")
library(HH)
ancova(weight~gesttime+dose,data=litter)