1. 程式人生 > 其它 >R語言--方差分析2(雙因素方差分析、多元方差分析、視覺化)

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,維CVCsupp和劑量dose來對牙齒的長度len進行求均值

dose<-factor(dose)

解釋:為了避免把dose變數認為是數值變數,而是把dose認為成分組變數,所以設定成因子型別factor

fit<-aov(dat$len~dat$supp*dat$dose)

解釋:aov()做方差分析,把 + 換成了 * ,這兩項dat$suppdat$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是植物光合作用對二氧化碳的吸收量,是因變數ytype是組間因子,是互斥的,表示的是兩個不同地區的植物型別,要麼是加拿大的植物,要麼是美國的植物,不可能兩個地方都是,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方差分析,trtresponse的影響非常顯著

fit.lm<-lm(response~trt,data=dat)

summary(fit.lm)

結果分析:lm迴歸分析,trtresponse的影響非常顯著,並且trt的每一項都顯示出來了

本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/14979016.html