R的方差检验

方差剖析(Analysis
of Variance,简称ANOVA),又称“
变异数分析”,是R.A.Fisher发明的,用于五个及多少个以上
样本均数差其余 鲜明性检验
由于各类因素的震慑,商量所得的数量显现波动状。造成波动的案由可分为两类,一是不可控的随机因素,另一是商讨中施加的对结果形成震慑的可控因素。方差分析是从观测变量的方差入手,探究广大 控制变量中怎样变量是对考察变量有拨云见日影响的变量。

方差分析有五个根本的前提:

  • 控制变量差距水平下考察变量的全部分布为正态分布
  • 控制变量不相同水平下考察变量的一体化具有同样的方差

1.单因素方差分析

1.1概述

一个控制变量的例外档次是或不是对考察变量暴发了家喻户晓影响。

图片 1

图片 2

F>>1–控制变量对观测值发生分明影响。

F分布密度曲线

x<-rf(1000,df1[i],df2[i])

set.seed(12345)
x<-rnorm(1000,0,1)
Ord<-order(x,decreasing=FALSE)
#order()的返回值是对应“排名”的元素所在向量中的位置
x<-x[Ord]
y<-dnorm(x,0,1)
plot(x,y,xlim=c(-1,5),ylim=c(0,2),type="l",ylab="密度",main="标准正态分布与不同自由度下的F分布密度函数",lwd=1.5)
#######不同自由度的F分布
df1<-c(10,15,30,100)
df2<-c(10,20,25,110)
for(i in 1:4){
 x<-rf(1000,df1[i],df2[i])
 Ord<-order(x,decreasing=FALSE)
 x<-x[Ord]
 y<-df(x,df1[i],df2[i])
 lines(x,y,lty=i+1)
}
legend("topright",title="自由度",c("标准正态分布",paste(df1,df2,sep="-")),lty=1:5)

  

图片 3

 

1.2数学模型

图片 4

1.3 R程序

图片 5

图片 6

CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
aov(MPG~ModelYear,data=CarData)
OneWay<-aov(MPG~ModelYear,data=CarData)
anova(OneWay)
summary(OneWay)

  

> aov(MPG~ModelYear,data=CarData)
Call:
aov(formula = MPG ~ ModelYear, data = CarData)

Terms:
ModelYear Residuals
Sum of Squares 10401.78 13850.79
Deg. of Freedom 12 385

Residual standard error: 5.998007
Estimated effects may be unbalanced

> OneWay<-aov(MPG~ModelYear,data=CarData)
> anova(OneWay)
Analysis of Variance Table

Response: MPG
Df Sum Sq Mean Sq F value Pr(>F)
ModelYear 12 10402 866.82 24.094 < 2.2e-16 ***

Residuals 385 13851 35.98

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> summary(OneWay)
Df Sum Sq Mean Sq F value Pr(>F)
ModelYear 12 10402 866.8 24.09 <2e-16 ***

Residuals 385 13851 36.0

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

F=24.09,拒绝原假使,差距年份车型的MPG总体均值存在显明差别。

1.4各总体均值的可视化 

plotmeans()

install.packages("gplots")
library("gplots")
plotmeans(MPG~ModelYear,data=CarData,p=0.95,use.t=TRUE,xlab="年代车型",ylab="平均MPG",main="不同年代车型MPG总体均值变化折线图(95%置信区间)")

  图片 7

1.5单元素方差分析的前提假诺

  • 控制变量不一样程度下考察变量的完整分布为正态分布
  • 控制变量不相同程度下考察变量的全体具有同等的方差

全部正态检验

Q-Qplot / K-S test

图片 8

 unique(CarData$ModelYear)

###########检验方差分析的前提假设(正态性检验一)
par(mfrow=c(3,5),mar=c(4,4,4,4))
for(i in unique(CarData$ModelYear)){
 T<-subset(CarData,CarData$ModelYear==i)
 qqnorm(T$MPG,main=paste(i,"年车型mpg Q-Q图"),cex=0.7)
 qqline(T$MPG,distribution = qnorm)
}

 

############或者
library("lattice")
qqmath(~MPG|ModelYear,data=CarData)

  

 

图片 9

 

K-S test

总体方差齐性检验

图片 10

ks.test(数值型向量名,”pnorm”)

###########检验方差分析的前提假设(正态性检验二)
for(i in unique(CarData$ModelYear)){
 T<-subset(CarData,CarData$ModelYear==i)
 R<-ks.test(T$MPG,"pnorm")
 print(R)
}

One-sample Kolmogorov-Smirnov test

data: T$MPG
D = 1, p-value < 2.2e-16
alternative hypothesis: two-sided

于正态分布有众所周知差距。

各方差齐性检验

#########检验方差分析的前提假设(方差齐性性检验)
library("car")
leveneTest(CarData$MPG,CarData$ModelYear, center=mean)

  

Levene’s Test for Homogeneity of Variance (center = mean)
Df F value Pr(>F)
group 12 1.7173 0.06103 .

385

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

无法拒绝原借使,具有同样总体方差。

1.6单元素方差检验中的多重相比印证

LSD检验

图片 11

图片 12

 

Tukey HSD检验

图片 13

图片 14

对两样车型MPG的连续串相比较印证

##############多重比较检验
CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
OneWay<-aov(MPG~ModelYear,data=CarData)
OneWay$coefficients
TukeyHSD(OneWay,ordered=FALSE,conf.level=0.95)
Result<-TukeyHSD(OneWay,ordered=TRUE,conf.level=0.95)
LineCol<-vector()
LineCol[Result[[1]][,4]<0.05]<-2
LineCol[Result[[1]][,4]>=0.05]<-1
#检验显著时,设置为红色;否则为黑色
par(las=2)
par(mar=c(5,8,4,2))
plot(Result,cex.axis=0.5,col=LineCol)

 

> TukeyHSD(OneWay,ordered=FALSE,conf.level=0.95)
Tukey multiple comparisons of means
95% family-wise confidence level

Fit: aov(formula = MPG ~ ModelYear, data = CarData)

$ModelYear
diff lwr upr p adj
71-70 3.5603448 -1.737584676 8.8582743 0.5621668
72-70 1.0246305 -4.273298962 6.3225600 0.9999872
73-70 -0.5896552 -5.466537903 4.2872276 0.9999999
74-70 5.0140485 -0.333563533 10.3616606 0.0912557
75-70 2.5770115 -2.630295013 7.7843180 0.9127501
76-70 3.8838742 -1.170630163 8.9383786 0.3375465
77-70 5.6853448 0.387415324 10.9832743 0.0229529
78-70 6.3714559 1.382000010 11.3609119 0.0018064
79-70 7.4034483 2.152197475 12.6546991 0.0002657
80-70 16.0068966 10.755645751 21.2581474 0.0000000
81-70 12.6448276 7.393576785 17.8960784 0.0000000
82-70 14.0200222 8.854163329 19.1858812 0.0000000

71,72,73,75…..-70无差异

 

 图片 15

 

1.7功用分析

图片 16

###################单因素方差分析的功效分析
library("pwr")
pwr.anova.test(k=13,f=0.25,sig.level=0.05,power=0.8)

  

Balanced one-way analysis of variance power calculation

k = 13
n = 22.15691
f = 0.25
sig.level = 0.05
power = 0.8

NOTE: n is number in each group

 

效应量是指由于因素引起的异样,是衡量处理效果大小的目的。与分明性检验今非昔比,这一个目的不受样本容量影响。它代表分裂处理下的完整均值之间区其余高低,能够在分化切磋时期进行相比。

#############效应量和样本量的关系曲线
library("pwr")
ES<-seq(from=0.1,to=0.8,by=0.01)
SampleSize<-matrix(nrow=length(ES),ncol=8)
for(i in 3:10){
 for(j in 1:length(ES)){
  result<-pwr.anova.test(k=i,f=ES[j],sig.level=0.05,power=0.8)
  SampleSize[j,i-2]<-ceiling(result$n)
  }
 }
plot(SampleSize[,1],ES,type="l",ylab="效应量",xlab="样本量(每个水平)",main="单因素方差分析(Alpha=0.05,Power=0.8)")
for(i in 2:8){
 lines(SampleSize[,i],ES,type="l",col=i)
}
legend("topright",title="水平数",paste("k",3:10,sep="="),lty=1,col=1:8)

  图片 17

图片 18

1.8置换检验

###################单因素方差分析的置换检验
install.packages("lmPerm")
library("lmPerm")
CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
OneWay<-aov(MPG~ModelYear,data=CarData)
anova(OneWay)#
Fit<-aovp(MPG~ModelYear,data=CarData,perm="Prob")
anova(Fit)#两者结果一致

  

2.单元素协方差分析

2.1概述

而外控制变量外,其他变量也会对观测值发生潜移默化。为了更精确的研商控制变量对观测量的影响,应解除任何变量的熏陶。协方差分析将其他变量作为协变量,并在排除协变量对观测值影响的原则下琢磨控制变量的影响。

2.2数学模型

图片 19

2.3R函数和示范

 

 

图片 20

例如,在拔除weight这几个协变量的熏陶下,检验车型对MPG的熏陶

################单因素协方差分析
CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
Result<-aov(MPG~weight+ModelYear,data=CarData)
anova(Result)

e<-CarData$MPG-Result$fitted.values   #剔除协变量影响后的残差
anova(aov(e~CarData$ModelYear))

  

Analysis of Variance Table

Response: MPG
Df Sum Sq Mean Sq F value Pr(>F)
weight 1 16777.8 16777.8 1665.526 < 2.2e-16 ***
ModelYear 12 3606.6 300.5 29.835 < 2.2e-16 ***

Residuals 384 3868.2 10.1

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Analysis of Variance Table

Response: e
Df Sum Sq Mean Sq F value Pr(>F)
CarData$ModelYear 12 0.0 0.000 0 1
Residuals 385 3868.2 10.047

图片 21

多重对比印证

install.packages("effects")
library("effects")
effect("ModelYear",Result)#调整后的MPG值
plot(effect("ModelYear",Result))
tapply(CarData$MPG,INDEX=CarData$ModelYear,FUN=mean)#调整前的MPG值

  图片 22

前提检验

对控制变量在差异水平下与协变量的涉嫌是不是一致且无强烈反差

coplot(MPG~weight|ModelYear,data=CarData)

  图片 23

 

3.多因素方差分析

3.1概述

图片 24

图片 25

图片 26

3.3R函数和示范

图片 27

  • x~A+B+A:B 双元素方差,其中X~A+B中A和B是见仁见智因素的程度因子(不考虑交互成效),A:B代表交互成效生成的因数
  • x~A*B*C==A+B+C+A:B+A:C+B:C+A:B:C
  • y~(A+B+C)^2==A+B+C+A:B+A:C+B:C
  • y~. 分析除了y以外其余一切因素对考察变量的熏陶

注意:~左侧控制变量的排列顺序很主要。 ep, A+B与B+A是区其余

图片 28

 

################多因素方差分析
CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
CarData$cylinders<-as.factor(CarData$cylinders)
table(CarData$cylinders)

Result<-aov(MPG~cylinders+ModelYear+cylinders:ModelYear,data=CarData)
anova(Result)

  

Response: MPG
Df Sum Sq Mean Sq F value Pr(>F)
cylinders 4 15454.8 3863.7 280.3702 <2e-16 ***
ModelYear 12 3423.7 285.3 20.7036 <2e-16 ***
cylinders:ModelYear 26 482.0 18.5 1.3451 0.1236

Residuals 355 4892.1 13.8

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

相互项对其无影响–重新布局模型

############多因素方差分析的非饱和模型
Result<-aov(MPG~cylinders+ModelYear,data=CarData)
anova(Result)

  交互可视化

图片 29

######可视化交互效应
interaction.plot(CarData$ModelYear,CarData$cylinders,CarData$MPG,type="b",main="气缸数和车型对MPG的交互效应",xlab="车型",ylab="MPG均值")

  图片 30

图片 31

换成检验

CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
CarData$cylinders<-as.factor(CarData$cylinders)
Result<-aov(MPG~cylinders+ModelYear,data=CarData)
anova(Result)
library("lmPerm")

Fit<-aovp(MPG~cylinders+ModelYear,data=CarData)
anova(Fit)

  

Analysis of Variance Table

Response: MPG
Df Sum Sq Mean Sq F value Pr(>F)
cylinders 4 15454.8 3863.7 273.919 < 2.2e-16 ***
ModelYear 12 3423.7 285.3 20.227 < 2.2e-16 ***

Residuals 381 5374.1 14.1

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Analysis of Variance Table

Response: MPG
Df R Sum Sq R Mean Sq Iter Pr(Prob)
cylinders 4 8476.7 2119.17 5000 < 2.2e-16 ***
ModelYear 12 3423.7 285.31 5000 < 2.2e-16 ***

Residuals 381 5374.1 14.11

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

4.小结

 图片 32