R語言--方差分析2(雙因素方差分析、多元方差分析、視覺化)
1 雙因素方差分析
1.1 雙因素方差分析的實線
dat<-ToothGrowth
dat
attach(dat)
table(dat$supp,dat$dose)
aggregate(len,by=list(dat$supp,dat$dose),FUN=mean)
解釋:根據投方式(橙汁OJ,維C素VC)supp和劑量dose來對牙齒的長度len進行求均值
dose<-factor(dose)
解釋:為了避免把dose變數認為是數值變數,而是把dose認為成分組變數,所以設定成因子型別factor
fit<-aov(dat$len~dat$supp*dat$dose)
解釋:aov()做方差分析,把 + 換成了 * ,這兩項dat$supp和dat$dosee就變成了互動項
summary(fit)
結果分析:可以看出P值很小,三個P值都小於0.05,說明不同的投喂方式supp對牙齒的生長長度len是有顯著影響的;說明不同的劑量dose對牙齒的生長長度len是有顯著影響的;說明在兩種投喂方式下,不同的投喂方式supp和劑量dose的互動效應對牙齒的生長長度len是有顯著影響的
1.2 視覺化方法1
interaction.plot(dat$dose,dat$supp,dat$len,type = "b",
col=c("red","blue"),pch=c(16,18),main="XX")
1.3 視覺化方法2
library(gplots)
plotmeans(dat$len~interaction(dat$supp,dat$dose,sep=" "),
connect=list(c(1,3,5),c(2,4,6)),col=c("red","blue"),main="XX",xlab="xlab")
1.4 視覺化方法3
library(HH)
interaction2wt(dat$len~dat$supp*dat$dose)
2 重複測量方差分析
dat<-CO2
CO2$conc<-factor(CO2$conc)
w1b1<-subset(CO2,Treatment=="chilled")
uptake是植物光合作用對二氧化碳的吸收量,是因變數y,type是組間因子,是互斥的,表示的是兩個不同地區的植物型別,要麼是加拿大的植物,要麼是美國的植物,不可能兩個地方都是,conc是不同的二氧化碳的濃度,每一種植物都在所有的二氧化碳濃度下,所以conc是組內因子
研究不同地區的植物作用,在某種二氧化碳的濃度作用下,對植物的光合作用效果有沒有影響
2.1 含有單個組內因子w和單個組間因子B的重複測量ANOVA
fit<-aov(uptake~conc*Type+Error(Plant/(conc)),w1b1)
summary(fit)
結果分析:二氧化碳濃度和型別對植物光合作用都有顯著影響
2.2 視覺化圖形呈現
(1)方式一
par(las=2)
par(mar=c(10,4,4,2))
with(w1b1,interaction.plot(conc,Type,uptake,type = "b",
col=c("red","blue"),pch=c(16,18)))
(2)方式二
boxplot(uptake~Type*conc,data=w1b1,col=c("red","blue"))
3 多元方差分析
library(MASS)
attach(UScereal)
dat<-UScereal
shelf<-factor(shelf)
y<-cbind(calories,fat,sugars)
fit<-manova(y~shelf)
summary(fit)
結果分析:不同的貨架shelf上,食物的熱量calories,脂肪含量fat和含糖量sugars是非常顯著不同的
3.1多元正態性
center<-colMeans(y)
n<-nrow(y)#行數
p<-ncol(y)#列數
cov<-cov(y)#計算方差
d<-mahalanobis(y,center,cov)
coord<-qqplot(qchisq(ppoints(n),df=p),d)#畫圖
abline(a=0,b=1)#畫參考線
identify(coord$x,coord$y,labels = row.names(UScereal))#給出互動式標出離群點
3.2穩健多元方差分析
install.packages("rrcov")
library(rrcov)
wilks.test(y,shelf,method="mcd")
結果分析:P值小於0.05,說明結果是顯著性的,即不同貨架上食物的熱量calories,脂肪含量fat和含糖量sugars是非常顯著不同的
4 用迴歸來做ANOVA
library(multcomp)
dat<-cholesterol
levels(dat$trt)
fit.aov<-aov(response~trt,data=dat)
summary(fit.aov)
結果分析:aov方差分析,trt對response的影響非常顯著
fit.lm<-lm(response~trt,data=dat)
summary(fit.lm)
結果分析:lm迴歸分析,trt對response的影響非常顯著,並且trt的每一項都顯示出來了
本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/14979016.html