R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

1 双因素方差分析

 1.1 双因素方差分析的实线

dat<-ToothGrowth

dat

attach(dat)

table(dat$supp,dat$dose)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

aggregate(len,by=list(dat$supp,dat$dose),FUN=mean) 

解释:根据投方式(橙汁OJ,维C素VC)supp和剂量dose来对牙齿的长度len进行求均值

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

dose<-factor(dose)  

解释:为了避免把dose变量认为是数值变量,而是把dose认为成分组变量,所以设置成因子类型factor

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

解释:aov()做方差分析,把 + 换成了 * ,这两项dat$supp和dat$dosee就变成了交互项

summary(fit)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析:可以看出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")

R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

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")

R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

 

1.4 可视化方法3

library(HH)

interaction2wt(dat$len~dat$supp*dat$dose)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

 

2 重复测量方差分析

dat<-CO2

CO2$conc<-factor(CO2$conc)

w1b1<-subset(CO2,Treatment=="chilled")

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

uptake是植物光合作用对二氧化碳的吸收量,是因变量y,type是组间因子,是互斥的,表示的是两个不同地区的植物类型,要么是加拿大的植物,要么是美国的植物,不可能两个地方都是,conc是不同的二氧化碳的浓度,每一种植物都在所有的二氧化碳浓度下,所以conc是组内因子

研究不同地区的植物作用,在某种二氧化碳的浓度作用下,对植物的光合作用效果有没有影响

2.1 含有单个组内因子w和单个组间因子B的重复测量ANOVA

fit<-aov(uptake~conc*Type+Error(Plant/(conc)),w1b1)

summary(fit)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析:二氧化碳浓度和类型对植物光合作用都有显著影响

 

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)))

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

(2)方式二

boxplot(uptake~Type*conc,data=w1b1,col=c("red","blue"))

R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

 

3 多元方差分析

library(MASS)

attach(UScereal)

dat<-UScereal

shelf<-factor(shelf)

y<-cbind(calories,fat,sugars)

fit<-manova(y~shelf)

summary(fit)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析:不同的货架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))  #给出交互式标出离群点

R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

 

 

3.2 稳健多元方差分析

install.packages("rrcov")

library(rrcov)

wilks.test(y,shelf,method="mcd")

R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析: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)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析:aov方差分析,trt对response的影响非常显著

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

summary(fit.lm)

 R语言--方差分析2(双因素方差分析、多元方差分析、可视化)

结果分析:lm回归分析,trt对response的影响非常显著,并且trt的每一项都显示出来了

上一篇:leetcode-7. Reverse Integer


下一篇:LeetCode刷题记录1 Java