统计与R入门 III t检验和ANOVA方差分析

内容:

  1. 单样本t检验
  2. 非独立t检验
  3. 独立t检验
  4. 单因素方差分析
  5. 因素方差分析
  6. 重复测量方差分析

用t检验做分组比较(group comparision)

考虑如下随机实验设定:

  • 自变量是类别型变量:{安慰剂,疫苗}
  • 因变量是连续型变量:为生病几率

要比较注射安慰剂组的生病几率与注射疫苗组的生病几率,可以使用t检验。

t检验(student's t-test)
叫student's t-test的原因是:发明人William Gossett发表这篇文章的时候用的是笔名"Student"

z检验和t检验的区别:

  • z检验用于在总体标准差已知的情况下比较样本均值与总体均值

而t检验分为:

  1. 单样本t检验(single sample t-test):在总体标准差未知的情况下比较样本均值与总体均值
  2. 非独立t检验(dependent t-test):比较两个相关样本
  3. 独立t检验(independent t-test):比较两个独立样本

t值和z值的意义都是:

  • (观测值Observed-期望值Expected)/(标准误差SE)

下表列举了z检验和三种t检验之间的区别:

观测值 期望值 标准误差
Z检验 样本均值MX 总体均值MP 均值的标准误差SDX/SQRT(N)
单样本T检验 样本均值MX 总体均值MP 均值的标准误差SDX/SQRT(N)
独立T检验NA不一定等于NB 两个不同样本的差的均值M(A-B) 两个不同总体的差的均值M(PA-PB) 两个不同样本的差的标准误差SD(A-B)/SQRT(N)
非独立T检验NA=NB 两个样本均值之间的差(MA- MB) 两个总体均值之间的差(MPA-MPB) 两个样本标准误差平方和的根SQRT(SDA2/NA+SDB2/NB)

z检验和t检验中的p值计算方法取决于:

  1. 进行的是定向检验(directional)还是不定向检验(non-directional)
  2. 自由度(degrees of freedom)决定的t或z分布

举例:对于z检验,因为z检验的前提是总体的分布已知,如做不定向检验,且z>1.96,根据z分布,可知p<0.05,检验为不显著。

对于t检验,根据自由度,选择相应的t分布,根据选择的t分布和t值计算p值,判断检验结果

自由度的计算:

  • z检验:没有自由度
  • 单变量t检验:N-1
  • 非独立t检验:N-1
  • 独立t检验:(N1-1)+(N2-1)     是(两组样本数-1)的和

非独立t检验(denpendent t-test)

非独立t检验也称为:匹配t检验(paired samples t-test)
适用情况:

  • 两个样本都是对同一组对象的观测,例如:同一组人在锻炼之前和锻炼之后的体能情况比较

一个完整的分析应该包括如下几方面:

  1. 计算t值
  2. 计算p值
  3. 计算效应值(effect size),例如Cohen's d
  4. 计算置信区间

对应的计算方法:

  1. t=(M-0)/SE
  2. p值根据(1)t值(2)t分布(3)定向或非定向检验求出
  3. Cohen's d效应值 = M/SD
  4. 置信区间上下限:M+-t*SE

其中对于均值而言:

  • 标准误差SE=SD/SQRT(N),受到样本量的偏倚
  • cohen'sD效应值d=M/SD并不受样本量的影响,>1为显著

R示例:
所用的数据集包含了对5组对象的前后两次测验结果。

  • data$train表示了组的类别"0"代表受控组,"1"代表实验组
  • data$cond表示了每组分别进行了多少天的训练:control组是什么都没有做的,t08,t12,t17,t19分别代表不同的训练天数
  • data$pre,data$post分别是训练前后的测试值
  • data$gain=data$post - data$pre

对受控组(data$train==“0”)的前后两次测试值进行检验
利用公式计算t值

计算p值

计算Cohen's d

计算置信区间

利用R的t.test()函数和cohensD()来使得这一切更加简便

独立t检验(independent t-test)

独立t检验用于比较两个独立的样本,即:两组完全不同的对象,如一组为男人,一组为女人;或一组为健康人,一组为病人

R示例:

从之前的数据集中挑选两个实验组进行独立t检验,利用公式计算t值:

求p值

计算cohen's D

计算置信区间:

再次,让t.test()cohensD()让生活更加美好:


相对于非独立t检验,进行独立t检验时,需要多一步:检验方差同质性(homogeneity of variance)的前提假设

在上面的计算中,我们实际是将两组数据的标准差进行了联合(pool),这只在两组数据的方差相等时才可以进行

如果数据不满足方差同质性,则容易产生1型误差

检验方差同质性可以使用Levene's test

与检查平均值的t检验类似,Levene's检验是用零假说显著性检验检验方差的,如果检验结果显著则违背了方差同质性

如果发现违背了方差同质性,可以采取如下措施:

  • 采用Welch's precedure调整自由度和p值
  • 或者改为采用非参数检验(non-parametric)

此处就不展开介绍了

R示例 :

Levene's test可以利用car包裹中的leveneTest()函数

发现p值较大,不显著,因此进行独立t检验将不违背方差同质性

单因素方差分析(one-way ANOVA)

方差分析适用于:

  • 预测变量都是类别型变量,而结果是连续型变量的情形

方差分析通常用于分析通过随机实验获得的两组以上的数据,如:

  1. 组1:吃药
  2. 组2:吃安慰剂
  3. 组3:什么都不吃组

如果只有两组数据,仅需要使用t检验

方差分析中通常会采用零假说显著性检验,与t检验不同,方差分析中的p值是通过F值和F分布计算出的。

与t值类似,F值也是一个比例:

  • F=(组间方差)/(组内方差)=MSBetween/MSWithin=MSA/MSS/A
  • MSA=SSA/dfA
  • MSS/A=SSS/A/dfS/A
  • SSA=n×Σ(Yj-YT)2

其中Yj是每组的平均值,YT是总平均值

  • SSS/A=Σ(Yij-Yj)2

其中Yij是每组中的每一个值,YT是相应的组平均值

  • dfA = a-1
  • dfS/A = a(n-1)
  • dfTotal = N-1

其中a是组数,n是每组的观测对象数量,N是总的观测对象数量

与t检验和t族分布类似,F检验也有一个F族分布

F分布受两个因素影响:

  1. 每组的观测对象数量
  2. 组的数量

下图是F族分布示例:

lecture_slides-Stats1.13.L16

R示例:

对4组实验组进行单因素方差分析

利用公式计算F值 (一辈子手动这么算一次就够了,确实帮助理解公式)

利用R的aov()让生活更美好。

这里的零假说是:

  • 所有组都没有区别

这个p值表示,应该驳回零假说,结论是4个组是不同的。

与t检验类似,在零假说显著性检验后,还可以计算效应值(effect size)作为结论的辅助

  • R22
  • η2=SSA/SSTotal
  • SSTotal = Σ(Yij-YT)2

R示例:

计算效应值

同样也有函数可以调用:etaSquared()

下面回顾一下方差分析的前提假设:

  1. 结果变量是连续型的变量
  2. 结果变量是正态分布的
  3. 方差同质性(Homogeneity of variance),即所有组组内的方差与总体方差相等,同样可以用Levene's test来检验。

R示例:

实际上应该是进行方差分析之前就检验方差齐性,实际使用时注意

零假说是:方差一致。

这里的p值表示,不违背方差同质性。

事后检验(post hoc test)

如果我们对同一个数据集的多个变量间作很多组匹配检验,则会增加1型错误的概率。

因此在进行多组匹配检验后,需要进行事后检验。

有许多可以使用的事后检验方法,其核心思想都是对p值的判断标准进行调整。

两种类型的事后检验介绍可以见我的另一篇博文里的相关部分 :

 http://www.ryanzhang.info/archives/1602 

R示例:

仅以TukeyHSD事后检验做示例:

结果表明: 经过事后检验,组间差异均仍然是显著的

因素方差分析(factorial anova)

因素方差分析适用于:

  • 两个类别型自变量和一个连续型因变量

例如:研究开车时打电话对犯错的影响。

  • 自变量A是路程的难度(分成三个难度)
  • 自变量B是对话的难度(分成三个难度)
  • 因变量是开车时犯错的次数(数值)

可以进行3种检验:

  • 路程的难度是否影响犯错的次数
  • 对话的难度是否影响犯错的次数
  • 路程难度和对话难度的相互作用是否影响犯错的次数

会产生相应的3个F值:

  • FA
  • FB
  • FA×B

下面是一些因素方差分析的概念解释:

  1. 主要影响(main effect):一个自变量在另一个自变量的不同级别情况下的平均影响。例如,无论路程难度如何,对话的难度对犯错次数的影响。
  2. 交互影响(interaction effect):一个自变量在另一个自变量的不同级别情况下对因变量的不同影响。例如,在不同的路程难度下,同一级别的对话难度对犯错次数的影响。
  3. 简单影响(simple effect):一个自变量在另一个自变量的一个特定级别情况下对因变量的影响。例如,在难度为难的路程上,不同级别的对话难度对犯错次数的影响。

注意到主要影响和交互影响之间的事相互独立的

记住:因素方差分析是多元回归的一个特例,是由完全独立的预测变量的多元回归

因此,用韦恩图解释均方差之间的关系,没有相互包含的关系。

QQ截图20140104111932

方差分析采用的是一般线性模型(GLM)的框架,上面的例子为:

  • Y=B0+B1X1+B2X2+B3X3+e

其中:

  • X1=XA
  • X2=XB
  • X3=XA×XB

相应的三个F值计算方法如下:

  • FA=MSA/MSS/AB
  • FB=MSB/MSS/AB
  • FA×B=MSA×B/MSS/AB
  • MSA=SSA/dfA
  • MSB=SSB/dfB
  • MSA×B=SSA×B/dfA×B
  • MSS/AB=SSS/AB/dfS/AB
  • dfA=a-1
  • dfB=b-1
  • dfA×B=(a-1)(b-1)
  • dfS/AB=ab(n-1)
  • dfTotal=abn-1=N-1

在F值计算完后,需要:

  • 对主要影响:做事后检验
  • 对交互影响:利用单因素ANOVA或t检验进行简单影响的分析
  • 计算交互影响的效应值η2=SSeffect/SStotal

上式是完全η2的计算方法,大多时候人们会选择采用部分η2(partial eatSquared)

  • 部分η2=SSeffect/(SSeffect+SSS/AB

其原因是可以减少系统性误差。

最后是因素方差分析的前提假设,与之前一样的三条:

  1. 结果变量是连续型的变量
  2. 结果变量是正态分布的
  3. 方差同质性

R示例:

以上面举的开车错误的影响因素研究为例

  • $conversation是对话的不同难度
  • $driving是路程的不同难度
  • $errors是犯错的次数

检验方差同质性:

结果的p值表明:不违背方差同质性的前提假设

进行因素方差分析,手动计算就不演示了,与之前的单因素方差分析大同小异

直接调用aov()函数 :

三个p值都<0.05,即:

  • 路程难度对犯错有显著影响
  • 对话难度对犯错有显著影响
  • 路程和对话的相互作用对犯错有显著影响

如果像这样,发现了显著的交互影响,应该对简单影响进行分析

可以选择:不同级别难度的路程下,对话难度对犯错的影响是否显著

也可以选择:不同级别难度的对话下,路程难度对犯错的影响是否显著

只需要二选一即可,不需要都做

下面进行简单影响分析,分析在不同的路程难度情况下,对话难度对犯错的影响是否显著

结果表明:在不同级别难度的路程上,对话的难度对犯错都有显著影响

这个结论能够帮助解释为什么会有对话难度和路程难度之间的交互作用能够影响犯错的次数

检查效应值

Tukey's HSD事后检验:

重复测量方差分析(repeated measures ANOVA)

上面的单因素方差分析和因素方差分析都是组间比较,比较的是不同组之间的差异。

重复测量方差分析分析适用于:

  • 分析对一组对象在三种以上不同状态的不同观测。

重复测量方差分析的优点:

  1. 代价少,需要观测对象的数量少
  2. 有更强的统计分析能力,原因是系统性误差更小

分组比较时涉及两个偏差:

  1. 组间偏差
  2. 组内偏差

重复测量方差分析设计两个偏差:

  1. 组间偏差
  2. 观测对象与状态之间的交互作用导致的偏差

F值的计算公式为:

  • FA=MSA/MSA×S
  • MSA=SSA/dfA
  • MSAxS=SSAxS/dfAxS

重复测量方差分析的缺点:

  1. 需要决定不同状态的观测顺序排序,需要平衡处理
  2. 容易导致数据缺失
  3. 有额外的前提假设

平衡处理的作用是:消除观测顺序的影响

考虑对同一组观测对象进行两个状态的观测A1和A2,需要决定两种观测的顺序

一种方法是分组设计(blocked design)

  • 将观测对象随机分为两组,一组先A1后A2,另一组先A2后A1。

另一种方法是随机设计(randomized design):

  • 对不同状态的观测以一种随机的连续的方式进行如:A2,A1,A1,A2,A1.....

对于分组实验,如果观测状态有a种,则需要设计!a个组。!4=24就已经很难实现了,因此有一种改进方法叫拉丁方设计(latin squares design):

如a=3,用拉丁方方法,只有3种观测顺序:

  1. A1,A2,A3
  2. A2,A3,A1
  3. A3,A1,A2

这种方法虽然并不完美,但其中每种观测都在不同的观测顺序中出现了。

缺失数据可能造成的影响主要是在于:

  • 数据的缺失可能是有规律的,可能与其他变量有相关性关系

检验的方法是增加新的类型变量"缺失",缺失为0,不缺失为1

然后对"缺失"和其他自变量做t检验看是否显著

重复测量方差分析的额外的前提假设称为:球形假设(sphericity assumption):

球形假设包括两项内容:

  • 方差同质性
  • 协方差同质性

球形假设的检验方法为Mauchly's test

相应的也需要对p值进行调整,方法有Huyn-FeldtGreenhouse-Geisser

R演示:

将之前data种08.12.17.19四组对不同对象的观测想象成对同一组对象不同时期的观测结果。。。

对数据进行处理,人工加上subject号,重复测量方差分析一样aov()函数,需要额外注明交互影响:

首先显示的不同观测对象导致的偏差

然后显示的是观测对象和状态之间交互影响的统计结果,根据p值得值影响是显著的。

此后也需要做事后检验:

事后检验的逻辑都是对p值进行调节,减小1型误差

R默认的重复测量方差检验的事后检验使用的是Holm检验

也可以明确指明使用最严苛的Bonferroni

结果发现有一组(训练了19天河训练了17天的提高值)差异不再呈现显著性了。

 

Leave a Reply

Your email address will not be published. Required fields are marked *