方差分析的基本前提假设与t检验的前提假设类似,包括正态分布假设、观察独立性假设和方差齐性假设。
一、基本术语
在R语言以及更广泛的统计学领域中,方差分析(ANOVA,即Analysis of Variance)是一种用于比较两个或更多组数据的均值是否存在显著差异的统计方法。可以使用aov()函数或其他相关函数(如anova())来执行方差分析.下面是方差分析中的一些基本术语定义:
1、因素(Factor)
在方差分析中,因素是指影响响应变量(因变量)的一个或多个分类变量。例如,在比较不同教学方法对学生成绩的影响时,教学方法就是一个因素。
2、水平(Level)
因素的每个不同取值称为一个水平。例如,如果教学方法因素有三个取值:传统教学法、互动教学法和项目式学习法,那么这三个取值就是该因素的三个水平。
3、响应变量(Response Variable)
又叫因变量。响应变量是方差分析中我们想要研究的变量,其值受到因素水平的影响。在上面的例子中,学生成绩就是响应变量。
4、组间变异(Between-Groups Variation)
组间变异是指由不同因素水平引起的响应变量值之间的差异。在方差分析中,组间变异用于评估因素对响应变量的影响是否显著。
5、 组内变异(Within-Groups Variation)
组内变异是指在同一因素水平内,响应变量值之间的差异。它反映了在每个组内数据的自然波动。
6、总变异(Total Variation)
总变异是组间变异和组内变异的总和,代表了响应变量值的整体波动。
7、均方(Mean Square)
均方是变异量(如组间变异或组内变异)除以相应的自由度得到的值。均方用于计算F统计量,以评估组间变异是否相对于组内变异显著。
8、F统计量(F-Statistic)
F统计量是组间均方与组内均方的比值。它用于检验零假设(即所有组的均值相等)是否成立。如果F值足够大,则拒绝零假设,认为至少有两个组的均值存在显著差异。
9、P值(P-Value)
P值是与F统计量相关联的概率值,表示在零假设为真的情况下,观察到当前或更极端结果的可能性。通常,如果P值小于某个显著性水平(如0.05),则拒绝零假设。
10、显著性水平(Significance Level)
显著性水平是用于判断统计检验结果是否显著的一个预设概率值。在方差分析中,常见的显著性水平包括0.05、0.01和0.001。如果P值小于显著性水平,则认为结果是显著的。
二、aov()函数
基本格式:
aov(formula, data)
- formula:以公式的形式指定方差分析的类型,如y~A表示单因素组间设计方差分析或单因素非重复测量方差分析。y为因变量,A为自变量。
- data:指定用于方差分析的数据,y和A必须被包含在data中。
符号 | 含义 |
~ | 分隔符号,左边为响应变量(因变量),右边为自变量。如A预测y,代码为y~A |
+ | 分隔自变量,表示变量之间的线性关系。例如A和B预测y,代码为y~A+B |
: | 自变量之间的交互作用。例如A和B间交互作用为A:B |
* | 变量间所有可能的效应。例如y~A*B*C,可展开为y~A+B+C+A:B+A:C+B:C+A:B:C |
^ | 表示交互项达到某个次数。例如y~(A+B+C)^2,可展开为y~A+B+C+A:B+A:C+B:C |
. | 表示除了因变量的所有变量。例如一个数据框包含了A、B、C和y四个变量,代码为y~A+B+C |
- | 表示从公式中除去某个变量。例如y~A*B-A:B可扩展为y~A+B |
-l | 删除截距项。例如y~A+B-l |
0 | 删除截距项。例如y~A+B+0 |
I() | 放在I()中的表达式按照算数意义进行解释。例如y~A+I(B+C),表示A作为一个自变量,B和C的和作为另一个自变量,y是因变量。 |
公式 | 类型 |
y~A | 单因素非重复测量方差分析 |
y~x+A | 含有一个协变量的单因素方差分析 |
y~A+B | 两因素非重复测量方差分析 |
y~x1+x2+A*B | 含两个协变量的两因素非重复测量方差分析 |
y~A+Error(Subject/A) | 单因素重复测量方差分析 |
y~A+B+Error(Subject/A) | 两因素混合设计的方差分析 |
1、单因素非重复测量方差分析
在R语言中,单因素非重复测试方差分析(One-Way ANOVA)用于比较三个或更多独立组的均值,以确定这些组之间是否存在显著差异。非重复测试意味着每个观察值只测量一次,而不是重复测量。
下面用car包中的Prestige数据集来演示:我们只关注声望指数(prestige)和职业(type)这两个变量。其中type中的bc代表蓝领,prof代表从事管理或技术方面工作,wc表示白领。
library(car)
head(Prestige)
# 各组样本大小
table(Prestige$type)
# 求各组的均值
aggregate(prestige ~ type, data = Prestige, FUN=mean)
# 求各组的标准差
aggregate(prestige ~ type, data = Prestige, FUN=sd)
# 非重复测量方差分析
result <- aov((prestige ~ type, data = Prestige)
summary(result)
从下面结果可知:p值<2e-16表明在0.05的显著性水平下,type因子对因变量(prestige)的影响是高度显著的。这意味着至少有两个type水平之间的均值存在显著差异。
2、单因素协方差分析
在R语言中,单因素协方差分析(ANCOVA)用于研究一个分类自变量(因子)对一个连续因变量的影响,同时考虑一个或多个连续协变量的影响。协变量是那些您认为可能会影响因变量,但不在主要考虑范围内的变量。通过包括协变量,ANCOVA可以帮助减少误差变异,从而提高统计检验的效力。
下面用nlme包中的bdf数据集做演示:
library(nlme)
# 选择数据:IQ.vern表示学生的语言智商分数;
# denomina表示学校的类别,其中1为公立学校,2为新教私立学校,3为天主教私立学校,4为非教派私立学校;
# schoolSES表示学校的社会经济地位指数。
bdf.sub <- bdf [, c("IQ.verb", "denomina", "schoolSES")]
head(bdf.sub)
# 查看各组的样本量
table(bdf.sub$denomina)
以下结果可知:学校的社会经济地位指数对学生的语言智商分数的影响显著。
# 计算各组的均值
tapply(bdf.sub$IQ.verb, bdf.sub$denomina, mean)
# 计算各组标准差
tapply(bdf.sub$IQ.verb, bdf.sub$denomina, sd)
# 单因素协差分析
result <- aov(IQ.verb ~ schoolSES + denomina, data=bdf.sub)
summary(result)
3、单因素重复测量方差分析
在R语言中,单因素重复测量方差分析(Repeated Measures ANOVA)可以使用aov()函数来实现。单因素重复测量方差分析用于分析一个因素在不同时间点或不同条件下对同一组被试的影响。
4、两因素方差分析
在R语言中,两因素方差分析(Two-Way ANOVA)通常用于分析两个分类自变量对一个连续因变量的影响。
下面用R语言内置的warpbreaks做演示:研究该数据集中羊毛的类型(A和B),以及张力水平(L、M和H)对纱线断裂次数的影响。
head(warpbreaks)
# 计算各处理组合的次数
table(warpbreaks$wool, warpbreaks$tension)
# 计算各处理组合的均值和标准差
library(dplyr)
group_by(warpbreaks, wool, tension) %>% summarise(breaks.mean = mean(breaks)) # %>%重定向
group_by(warpbreaks, wool, tension) %>% summarise(breaks.sd = sd(breaks))
# 两因素方差分析
result <- aov(breaks ~ wool * tension, data=warpbreaks)
summary(result)
从上面方差分析结果可知:羊毛类型(wool)的主效应不显著(p=0.058>0.05),但张力(tension)大小的主效应显著(p=0.0006<0.05),羊毛类型与张力大小之间(wool:tension)之间的交互作用显著(p=0.021<0.05)。