设为首页 加入收藏

TOP

R的方差检验(一)
2017-10-09 13:27:38 】 浏览:1293
Tags:方差 检验

方差分析(Analysis of Variance,简称ANOVA),又称“ 变异数分析”,是R.A.Fisher发明的,用于两个及两个以上 样本均数差别的 显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。方差分析是从观测变量的方差入手,研究诸多 控制变量中哪些变量是对观测变量有显著影响的变量。

方差分析有两个重要的前提:

  • 控制变量不同水平下观测变量的总体分布为正态分布
  • 控制变量不同水平下观测变量的总体具有相同的方差

1.单因素方差分析

1.1概述

一个控制变量的不同水平是否对观测变量产生了显著影响。

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)

  

 

1.2数学模型

1.3 R程序

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%置信区间)")

  

1.5单因素方差分析的前提假设

  • 控制变量不同水平下观测变量的总体分布为正态分布
  • 控制变量不同水平下观测变量的总体具有相同的方差

总体正态检验

Q-Qplot / K-S test

 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)

  

 

 

K-S test

总体方差齐性检验

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)

  

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇R语言学习笔记(九):fivenum(.. 下一篇R语言学习笔记(十):零碎知识点..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目