R语言学习系列27方差分析.docx
- 文档编号:29517237
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:24
- 大小:148.15KB
R语言学习系列27方差分析.docx
《R语言学习系列27方差分析.docx》由会员分享,可在线阅读,更多相关《R语言学习系列27方差分析.docx(24页珍藏版)》请在冰豆网上搜索。
R语言学习系列27方差分析
22.方差分析
一、方差分析原理
1.方差分析概述
方差分析可用来研究多个分组的均值有无差异,其中分组是按影响因素的不同水平值组合进行划分的。
方差分析是对总变异进行分析。
看总变异是由哪些部分组成的,这些部分间的关系如何。
方差分析,是用来检验两个或两个以上均值间差别显著性(影响观察结果的因素:
原因变量(列变量)的个数大于2,或分组变量(行变量)的个数大于1)。
一元时常用F检验(也称一元方差分析),多元时用多元方差分析(最常用Wilks’∧检验)。
方差分析可用于:
(1)完全随机设计(单因素)、随机区组设计(双因素)、析因设计、拉丁方设计和正交设计等资料;
(2)可对两因素间交互作用差异进行显著性检验;
(3)进行方差齐性检验。
要比较几组均值时,理论上抽得的几个样本,都假定来自正态总体,且有一个相同的方差,仅仅均值可以不相同。
还需假定每一个观察值都由若干部分累加而成,也即总的效果可分成若干部分,而每一部分都有一个特定的含义,称之谓效应的可加性。
所谓的方差是离均差平方和除以自由度,在方差分析中常简称为均方(MeanSquare)。
2.基本思想
基本思想是,将所有测量值上的总变异按照其变异的来源分解为多个部份,然后进行比较,评价由某种因素所引起的变异是否具有统计学意义。
根据效应的可加性,将总的离均差平方和分解成若干部分,每一部分都与某一种效应相对应,总自由度也被分成相应的各个部分,各部分的离均差平方除以各自的自由度得出各部分的均方,然后列出方差分析表算出F检验值,作出统计推断。
方差分析的关键是总离均差平方和的分解,分解越细致,各部分的含义就越明确,对各种效应的作用就越了解,统计推断就越准确。
效应项与试验设计或统计分析的目的有关,一般有:
主效应(包括各种因素),交互影响项(因素间的多级交互影响),协变量(来自回归的变异项),等等。
当分析和确定了各个效应项S后,根据原始观察资料可计算出各个离均差平方和SS,再根据相应的自由度df,由公式MS=SS/df,求出均方MS,最后由相应的均方,求出各个变异项的F值,F值实际上是两个均方之比值,通常情况下,分母的均方是误差项的均方。
根据F值的分子、分母均方的自由度f1和f2,在确定显著性水平为α情况下,由F(f1,f2)临界值表查得单侧Fα界限值。
当F
3.方差分析的实验设计
为了确定方差分析表中各个有关效应项,需要在试验设计阶段就作出安排,再根据设计要求进行试验,得出原始观察值,按原来设计方案算出方差分析表中的各项。
在试验设计阶段通常需要考虑如下4个方面:
(1)研究的因变量
即试验所要观察的主要指标,一次试验时可以有多个观察指标,方差分析时也可以同时对多个因变量进行分析;
(2)因素和水平
试验的因素(factor)可以是品种、人员、方法、时间、地区等等,因素所处的状态叫水平(level)。
在每一个因素下面可以分成若干水平。
(3)因素间的交互影响
多因素的试验设计,有时需要分析因素间的交互影响(interaction),2个因素间的交互影响称为一级交互影响(A×B);3个因素间的交互影响称为二级交互影响(A×B×C)。
当交互影响项呈现统计不显著时,表明各个因素独立,当呈现统计显著时,就需要列出这个交互影响项的效应,以助于作出正确的统计推断。
举例解释上述概念:
要考察焦虑症的治疗疗效,一个因素是治疗方案,有2种治疗方案,即该因素有2个水平;(治疗方案称为组间因子,因为每个患者只能被分配到一个组别中,没有患者同时接受两种治疗);再考虑一个因素治疗时间,也有两个水平:
治疗5周和治疗6个月,同一患者在5周和6个月不止一次地被测量(两次),称为重复测量(治疗时间称为组内因子,因为每个患者在所有水平下都进行了测量)。
建立方差分析模型时,既要考虑两个因素治疗方案和治疗时间(主效应),又要考虑治疗方案和时间的交互影响(交互效应),此时即两因素混合模型方差分析。
当某个因素的各个水平下的因变量的均值呈现统计显著性差异时,必要时可作两两水平间的比较,称为均值间的两两比较。
二、R语言实现
方差分析对数据的要求:
满足正态性(来自同一正态总体)和方差齐性(各组方差相等),在这两个条件下,若各组有差异,则只可能是来自影响因素的不同水平。
用aov()函数进行方差分析,基本格式为:
aov(formula,data=NULL,projections=FALSE,qr=TRUE,
contrasts=NULL,...)
其中,formula为方差分析公式;
data为数据框;
projection设置是否返回预测结果;
qr设置是否返回QR分解结果;
contrasts为公式中一些因子的列表。
formula公式的表示:
(y为因变量,ABC为分组因子)
符号
用法
~
分隔符号,左边为响应变量,右边为解释变量
eg:
y~A+B+C
+
分隔解释变量
:
表示变量的交互项
eg:
y~A+B+A:
B
*
表示所有可能交互项
eg:
y~A*B*C可展开为:
y~A+B+C+A:
B+A:
C+B:
C+A:
B:
C
^
表示交互项达到次数
eg:
y~(A+B+C)^2展开为:
y~A+B+C+A:
B+A:
C+B:
C
.
表示包含除因变量外的所有变量
eg:
若一个数据框包括变量y,A、B和C,代码y~.可展开为y~A+B+C
常见研究设计的表达式:
(小写字母表示定量变量,大写字母表
示组别因子,Subject是对被试者独有的标识变量)
设计
表达式
单因素ANOVA
y~A
含单个协变量的单因素ANCOVA
y~x+A
双因素ANOVA
y~A*B
含两个协变量的双因素ANCOVA
y~x1+x2+A*B
随机化区组
y~B+A,B为区组因子
单因素组内ANOVA
y~A+Error(Subject/A)
含单个组内因子(W)和单个组间因子(B)的重复测量ANOVA
y~B*W+Error(Subject/W)
注意:
非均衡设计时或存在协变量时,效应项的顺序对结果影响较大,越基础的效应越需要放在表达式前面,首先是协变量、然后是主效应、接着是双因素的交互项,再接着是三因素的交互项。
若研究不是正交的,一定要谨慎设置效应的顺序。
有三种类型的方法可以分解y~A+B+A:
B右边各效应对y所解释的方差:
类型I(序贯型)
效应根据表达式中先出现的效应做调整。
A不做调整,B根据A调整,A:
B交互项根据A和B调整。
类型II(分层型)
效应根据同水平或低水平的效应做调整。
A根据B调整,B依据A调整,A:
B交互项同时根据A和B调整。
类型III(边界型)
每个效应根据模型其他各效应做相应调整。
A根据B和A:
B做调整,A:
B交互项根据A和B调整。
R默认调用类型I方法,其他软件(比如SAS和SPSS)默认调用类型III方法。
car包中的Anova()函数(不要与标准anova()函数混淆)提供了使用类型II或类型III方法的选项,而aov()函数使用的是类型I方法。
若想使结果与其他软件(如SAS和SPSS)提供的结果保持一致,可以使用Anova()函数。
三、单因素方差分析
1个因变量,1个影响因素:
总差异Yij=平均差异μ+因素差异αi+随机差异εij
例1比较4种品牌的胶合板的耐磨性,各抽取5个样品,相同转速磨损相同时间测得磨损深度(mm),比较4个品牌胶合板的耐磨性有无差异?
部分数据如下(ex27_ex1.Rdata):
setwd("E:
/办公资料/R语言/R语言学习系列/codes")
load("ex27_ex1.Rdata")
head(datas)
wearbrand
12.30A
22.32A
32.40A
42.45A
52.58A
62.35B
attach(datas)
table(brand)#各组的样本数
brand
ABCD
5555
aggregate(wear,by=list(brand),mean)#各组均值
Group.1x
1A2.410
2B2.404
3C2.046
4D2.572
aggregate(wear,by=list(brand),sd)#各组标准差
Group.1x
1A0.11269428
2B0.11760102
3C0.11216060
4D0.03271085
library(car)
qqPlot(lm(wear~brand,data=datas),simulate=TRUE)#用Q-Q图检验数据的正态性
leveneTest(wear~as.factor(brand),data=datas)#方差齐性检验
Levene'sTestforHomogeneityofVariance(center=median)
DfFvaluePr(>F)
group30.69870.5664
16
fit<-aov(wear~brand,data=datas)#单因素方差分析(检验组间差异)
summary(fit)
DfSumSqMeanSqFvaluePr(>F)
brand30.73980.2466024.553.15e-06***
Residuals160.16070.01005
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
说明:
方差齐性检验,原假设H0:
方差齐,p值=0.5664>0.05,故接受原假设,即方差齐。
单因素方差分析结果,brand是因素,Residuals是残差,各列依次为自由度、平方和、均方和、F统计量,p值=3.15e-06<0.05,拒绝原假设,即不同品牌的磨损(均值)有显著差别。
library(gplots)
plotmeans(wear~brand,xlab="品牌",ylab="磨损")#图形展示带95%置信区间的各组均值
通过前面的分析知道,不同品牌的磨损(均值)有显著差别,但并不知道哪个品牌与其它品牌有显著差别。
TukeyHSD()函数提供了对各组均值差异的成对检验。
TukeyHSD(fit)
Tukeymultiplecomparisonsofmeans
95%family-wiseconfidencelevel
Fit:
aov(formula=wear~brand,data=datas)
$brand
difflwruprpadj
B-A-0.006-0.187353450.17535350.9996826
C-A-0.364-0.54535345-0.18264650.0001610
D-A0.162-0.019353450.34335350.0886142
C-B-0.358-0.53935345-0.17664650.0001929
D-B0.168-0.013353450.34935350.0744337
D-C0.5260.344646550.70735350.0000019
说明:
可以看出(H0:
无差异),B与A的差异非常不显著,C与A、C与B、D与C的差异非常显著。
multcomp包中的glht()函数提供了更为全面的多重均值比较方法。
library(multcomp)
attach(datas)
tuk<-glht(fit,linfct=mcp(brand="Tukey"))
#注意datas$brand必须是因子型
summary(tuk)
SimultaneousTestsforGeneralLinearHypotheses
MultipleComparisonsofMeans:
TukeyContrasts
Fit:
aov(formula=wear~brand,data=datas)
LinearHypotheses:
EstimateStd.ErrortvaluePr(>|t|)
B-A==0-0.006000.06339-0.0950.9997
C-A==0-0.364000.06339-5.742<0.001***
D-A==00.162000.063392.5560.0886.
C-B==0-0.358000.06339-5.648<0.001***
D-B==00.168000.063392.6500.0743.
D-C==00.526000.063398.298<0.001***
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
(Adjustedpvaluesreported--single-stepmethod)
plot(cld(tuk,level=0.05),col="lightgrey")
说明:
标记相同字母(标记b)的品牌ABD认为是无显著差异,在同一亚组,而品牌C(标记a)与另外三个品牌有显著差异。
另外,也可以进行多重t检验,使用函数:
pairwise.t.test(x,g,p.adjust.method=,...)
其中,x为因变量,g为因子型的分组变量;
p.adjust.method设置p值的修正方法,由于多次重复t检验会大大增加犯第一类错误的概率,为此要进行p值的修正,使用bonferroni法修正效果较好。
pairwise.t.test(wear,brand,p.adjust.method="bonferroni")
PairwisecomparisonsusingttestswithpooledSD
data:
wearandbrand
ABC
B1.00000--
C0.000180.00022-
D0.126950.104742.1e-06
Pvalueadjustmentmethod:
bonferroni
说明:
原假设H0:
无差异,可见A与B无差异,C与ABD有显著差异。
最后,方差分析对离群点非常敏感,检验是否有离群点:
library(car)
outlierTest(fit)
NoStudentizedresidualswithBonferonnip<0.05
Largest|rstudent|:
rstudentunadjustedp-valueBonferonnip
92.5281030.0231820.46364
说明:
经检验无离群点。
三、两因素方差分析
1个因变量,2个影响因素:
总差异Yijk=平均差异μ+因素1差异αi+因素2差异βi
+因素1,2交互作用差异γij+随机差异εijk
例2研究60只豚鼠的牙齿生长数据,按2种喂食方法:
橙汁、维生素C,各喂食方法中抗坏血酸含量都有3个水平:
0.5mg、1mg、2mg,分配为6组,每组各10只,牙齿长度为因变量。
做两因素方差分析。
attach(ToothGrowth)
head(ToothGrowth)
lensuppdose
14.2VC0.5
211.5VC0.5
37.3VC0.5
45.8VC0.5
56.4VC0.5
610.0VC0.5
table(supp,dose)#各组样本数相同,即为均衡设计
dose
supp0.512
OJ101010
VC101010
aggregate(len,by=list(supp,dose),mean)#计算各组均值
Group.1Group.2x
1OJ0.513.23
2VC0.57.98
3OJ1.022.70
4VC1.016.77
5OJ2.026.06
6VC2.026.14
aggregate(len,by=list(supp,dose),sd)#计算各组标准差
Group.1Group.2x
1OJ0.54.459709
2VC0.52.746634
3OJ1.03.910953
4VC1.02.515309
5OJ2.02.655058
6VC2.04.797731
bartlett.test(len~supp,data=ToothGrowth)#关于因素supp的方差齐性检验
Bartletttestofhomogeneityofvariances
data:
lenbysupp
Bartlett'sK-squared=1.4217,df=1,p-value=0.2331
bartlett.test(len~dose,data=ToothGrowth)#关于因素dose的方差齐性检验
Bartletttestofhomogeneityofvariances
data:
lenbydose
Bartlett'sK-squared=0.66547,df=2,p-value=0.717
fit<-aov(len~supp*dose,data=ToothGrowth)
#做两因素方差分析,考虑全部效应
summary(fit)
DfSumSqMeanSqFvaluePr(>F)
supp1205.4205.412.3170.000894***
dose12224.32224.3133.415<2e-16***
supp:
dose188.988.95.3330.024631*
Residuals56933.616.7
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
说明:
可以看出,主效应supp和dose都非常显著(p值都远小于0.05),交互效应也显著(p值=0.0246<0.05)。
若交互作用不显著,可以可以只做去掉交互效应的方差分析。
图形化展示两因素方差分析的交互效应:
par(mfrow=c(1,2))
interaction.plot(dose,supp,len,type="b",col=c("red","blue"),pch=c(16,18),main="InteractionbetweenDoseandSupp")
interaction.plot(supp,dose,len,type="b",col=c("red","blue"),pch=c(16,18),main="InteractionbetweenSuppandDose")
说明:
有一个图的线有交叉,说明有交互作用。
可以看出随着橙汁和维生素C中的抗坏血酸剂量的增加,牙齿长度变长;。
对于0.5mg
和1mg剂量,橙汁比维生素C更能促进牙齿生长;对于2mg剂量的抗坏血酸,两种喂食方法下牙齿长度增长相同。
也可以用HH包中的interaction2wt()函数(也适合三因素方差分析)来展示更全面的可视化结果:
library(HH)
interaction2wt(len~supp*dose)
三、重复测量方差分析
重复测量方差分析,即受试者被测量不止一次。
例3(1个组内1个组间因子的重复测量)在某浓度CO2的环境中,对寒带植物(来自魁北克)和非寒带植物的(来自密西西比)光合作用率进行比较。
因变量uptake为CO2吸收量,自变量Type(组间因子)为植物类型,自变量conc(组内因子)为七种水平的CO2浓度。
attach(CO2)
head(CO2)#注意CO2是长格式的数据
PlantTypeTreatmentconcuptake
1Qn1Quebecnonchilled9516.0
2Qn1Quebecnonchilled17530.4
3Qn1Quebecnonchilled25034.8
4Qn1Quebecnonchilled35037.2
5Qn1Quebecnonchilled50035.3
6Qn1Quebecnonchilled67539.2
w1b1<-subset(CO2,Treatment=="chilled")#先只考虑寒带植物
fit<-aov(uptake~(conc*Type)+Error(Plant/conc),data=w1b1)
summary(fit)
Error:
Plant
DfSumSqMeanSqFvaluePr(>F)
Type12667.22667.260.410.00148**
Residuals4176.644.1
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
Error:
Plant:
conc
DfSumSqMeanSqFvaluePr(>F)
conc1888.6888.6215.460.000125***
conc:
Type1239.2239.258.010.001595**
Residuals416.54.1
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
Error:
Within
DfSumSqMeanSqFvaluePr(>F)
Residuals3086928.97
说明:
在0.01的显著水平下,主效应“类型”(p值=0.00148)和“浓度”(p值=0.000125)以及交叉效应“类型*浓度”(p值=0.001595)都非常显著。
attach(w1b1)
interaction.plot(conc,Type,uptake,type="b",col=c("red","blue"),pch=c(16,18),main="InteractionPlotforPlantTypeandConcentration")
boxplot(uptake~Type*conc,data=w1b1,col=(c("gold","green")),main="ChilledQuebecandMissi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 系列 27 方差分析