概率统计组队学习 之 方差分析

1. 单因素组间实验设计(焦虑症治疗)

1A. 背景

    焦虑症现有两种治疗方案:认知行为疗法(CBT)和眼动脱敏再加工法
    (EMDR)。招募10位焦虑症患者作为志愿者,随机分配一半的人接受
    为期五周的CBT,另外一半接受为期五周的EMDR,在治疗结束时,每位
    患者都填写状态特质焦虑问卷(STAI),进行自我评测报告。

1B. 设计

    只有治疗方案一个变化因素,志愿者只接受其中一个治疗方案(CBT或
    EMDR),所以称为单因素组间实验。由于在每种治疗方案下观测数相等
    (下表格中两列行数相同),也称为均衡设计(balanced design);若观
    测数不同,则称作非均衡设计(unbalanced design)。

CBT EMDR
s1 s6
s2 s7
s3 s8
s4 s9
s5 s10

2. 单因素组内实验设计(依旧是焦虑症治疗)

2A. 背景

    研究某一种方案,比如CBT,在不同时间(5周或者6个月)对焦虑症的
    治疗效果(即STAI结果)。

2B. 设计

    此处变化的因素是时间,每个志愿者两个水平都会经历,所以叫做单因素
    组内实验。

志愿者 时间1 - 5周 时间2 - 6个月
s1
s2
s3
s4
s5
s6
s7
s8
s9
s10

3. 含组间和组内因子的双因素(依旧是焦虑症治疗)

3A. 背景

    研究两种治疗方案(CBT和EMDR),在不同时间(5周或者6个月)对焦
    虑症的治疗效果(即STAI结果)。

2B. 设计

    此处变化的因素有治疗方案和时间,可以分析疗法的影响(时间跨度上的
    平均)[主效应] 和时间的影响(疗法类型跨度上的平均)[主效应],又可
    分析疗法和时间的交互影响 [交互效应]。

疗法 志愿者 时间1 - 5周 时间2 - 6个月
CBT s1
s2
s3
s4
s5
EMDR s6
s7
s8
s9
s10

4. 焦虑症治疗实验设计扩展

  1. 除了焦虑症,抑郁症也会对病症治疗有影响,且抑郁症和焦虑症常常同时
  出现。所以可能两组疗法中的患者抑郁水平不同导致了治疗后的差异,而
  不是实验中的变化因素(比如治疗方案或者时间)导致的。抑郁症也可以
  解释因变量的组间差异,称为混淆因素(confounding factor)。由于实验
  中不希望抑郁症这个因素变化,也被称作干扰变数(nuisance variable)。

  2. 假设招募患者时使用抑郁症的自我评测报告,比如白氏抑郁症量表
  (BDI),记录了他们的抑郁水平,可以在评测疗法类型的影响前,对任何
  抑郁水平的组间差异进行统计性调整。此时BDI为协变量,该设计为协方差
  分析
(ANCOVA)。

  3. 为增强研究的有效性,可以对焦虑症进行其他的测量(比如家庭评分、医师
  评分,以及焦虑症对日常行为的影响评价)。此时有多个因变量,被称作多元
  方差分析
(MANOVA), 若协变量也存在, 那么就叫多元协方差分析
  (MANCOVA)。

5. 方差分析

1. 单因素方差分析

  此处借概率论与数理统计书中的一道例题来解释:
  假设一块地种小麦,进行品种试验,包含k=3个品种,分别重复4、5和3次,
  数据为(单位:斤/亩)
   品种1:390,410,372,385
   品种2:375,348,354,364,362
   品种3:413,383,408
  : 小麦品种对亩产量没有显著影响
  全部的算数平均为380.33,总平方和SST为
   = (390-380.33)^2 + (410-380.33)^2 + ...+(408-380.33)^2 =
  三个品种各自平均值为389.25, 360.60, 401.33
   = (390-389.25)^2 + (375-360.60)^2 + ...+(408-401.33)^2 =
   = 4*(389.25-380.33)^2 + 5*(360.60-380.33)^2 + 3*(401.33-380.33)^2 =
       = = -
   = 3588.05 / (3-1) =
   = 1686.62 / (12-3) =
   = = 1794.03 / 187.40 =
  计算出的方差分析表汇总如下:

项目 SS 自由度 MS F比 显著性
品种 3588.05 3-1=2 1794.03 9.57 **
F_2,9(0.01) = 8.02 < 9.57
误差 1686.62 11-2=9 187.40
总和 5274.67 12-1=11

  在R中使用aov()计算出的结果与手算结果一致:

> sample <- data.frame(Type=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C'), Output=c(390, 410, 372, 385, 375, 348, 354, 364, 362, 413, 383, 408))
> sample
   Type Output
1     A    390
2     A    410
3     A    372
4     A    385
5     B    375
6     B    348
7     B    354
8     B    364
9     B    362
10    C    413
11    C    383
12    C    408
> str(sample)
'data.frame':   12 obs. of  2 variables:
 $ Type  : Factor w/ 3 levels "A","B","C": 1 1 1 1 2 2 2 2 2 3 ...
 $ Output: num  390 410 372 385 375 348 354 364 362 413 ...
> fit <- aov(Output ~ Type, data=sample)
> summary(fit)
            Df Sum Sq Mean Sq F value  Pr(>F)   
Type         2   3588  1794.0   9.573 0.00591 **
Residuals    9   1687   187.4                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
2. 双因素方差分析

  此处借R包中的ToothGrowth数据集来解释:
  随机分配60只豚鼠,分别采用两种喂食方法(橙汁或维生素C),各喂食方法
  中抗坏血酸含量有三种水平(0.5mg、1mg或2mg),要探究他们与牙齿长度
  的关系:
  截取一部分数据:

supp dose len
VC 0.5 4.2
VC 0.5 11.5
... ... ...
OJ 0.5 15.2
... ... ...
OJ 1 19.7
... ... ...
OJ 2 23

  : 喂食方法对牙齿长度没有显著影响
  : 某种喂食方法抗坏血酸含量对牙齿长度没有显著影响
  : 喂食方法和不同抗坏血酸含量的交互作用对牙齿长度没有显著影响
  全部的算数平均为18.81,总平方和SST为
   = (4.2-18.81)^2 + ...+(23-18.81)^2 =
  VC平均值16.96, OJ平均值20.66, 0.5剂量平均值10.61, 1剂量平均值19.74,
  2剂量平均值26.1
   = 30*(16.96-18.81)^2 + 30*(20.66-18.81)^2=
   = 20*(10.61-18.81)^2 + 20*(19.74-18.81)^2 + 20*(26.1-18.81)^2 =
   = (这里计算有点复杂直接借用R求出)
  计算出的方差分析表汇总如下:

项目 SS 自由度 MS F比 显著性
喂食方法
因素A
205.35 1 205.4 15.572 ***
抗坏血酸含量
因素B
2426.43 2 1213.2 92.000 ***
喂食方法和抗坏血酸含量
交互作用
108.3 2 54.2 4.107 *
误差 712.1 54 13.2
总和 3452.21

  在R中代码为:

> attach(ToothGrowth)
The following object is masked _by_ .GlobalEnv:

    dose

> table(supp, dose)
    dose
supp 0.5  1  2
  OJ  10 10 10
  VC  10 10 10
> dose <- factor(dose)
> fit <- aov(len ~ supp * dose)
> summary(fit)
            Df Sum Sq Mean Sq F value   Pr(>F)    
supp         1  205.4   205.4  15.572 0.000231 ***
dose         2 2426.4  1213.2  92.000  < 2e-16 ***
supp:dose    2  108.3    54.2   4.107 0.021860 *  
Residuals   54  712.1    13.2                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

  结论:随着橙汁和维生素C中的抗坏血酸剂量的增加,牙齿长度变长。两种因
  素和其交互作用对结果的影响都显著。

6. 评估检验的假设条件

  方差分析结果的有效性是建立在一系列假设条件之上的,需要评估进行方差
  分析的数据,是否符合模型使用的假设条件。

6A. QQ 图(正态性检验)
library(car)
qqPlot(lm(response ~ trt, data=cholesterol),
       simulate=TRUE, main="Q-Q Plot", labels=FALSE)
# 下图说明符合正态分布
6B. K-S test

  用ks.test(x, pnorm)进行正态性检验,若结果中的p值大于0.05,则数据符合
  正态分布。

6C. Anderson–Darling test

  可以从nortest包中的ad.test()进行检验。若结果中的p值大于0.05,则数据符
  合正态分布。

6D. Shapiro-Wilk test

  Shapiro-Wilk检验在小样本情况下,是很普通的正态性检验方法,
  Shapiro.test()在默认安装的stats包中。

6E. Lilliefor test

  Lilliefor test是基于Kolmogorov–Smirnov test的一种正态性检验。原假设:
   数据符合正态分布,lillie.test()也在nortest包中。

6F. 方差齐性检验

  如果各个水平的观察值方差差异太大,只检验均值之间的差异就没有意义了,
  所以要进行方差齐性检验。
  Bartlett test可以用来检验数据的方差齐性。

> bartlett.test(response ~ trt, data=cholesterol)

    Bartlett test of homogeneity of variances

data:  response by trt
Bartlett's K-squared = 0.57975, df = 4, p-value = 0.9653

  其他检验如Fligner-Killeen检验(fligner.test()函数)和Brown-Forsythe检验
  (HH包中的hov()函数)获得的结果与Bartlett检验相同。

6G. 离群点检测

  方差齐性分析对离群点非常敏感。可利用car包中的outlierTest()函数来检测
  离群点:

outlierTest(fit)
No Studentized residuals with Bonferroni p < 0.05
Largest |rstudent|:
   rstudent unadjusted p-value Bonferroni p
19 2.251149           0.029422           NA

Credit:
笔记整理自:Datawhale 概率统计组队学习
书籍参考:陈希孺,概率论与数理统计

你可能感兴趣的:(概率统计组队学习 之 方差分析)