百日筑基篇—— 方差分析(R语言初识十一)

百日筑基篇—— 方差分析(R语言初识十一)


前言

当要比较不同组之间的差异性时,一般会考虑使用方差分析,它是一种实用的方法,它可以帮助比较不同组别之间的差异性,从而给实验提供可靠的统计依据,本章将会详细介绍方差分析。

一、方差分析是什么?

方差分析是一种用于比较多个组之间差异性的统计方法,通常用于比较不同组的均值是否有显著差异。它基于组间方差和组内方差的比较来判断组别之间的差异是否显著。
如果组间的差异性显著大于组内的差异性,那么就可以得出不同组之间存在显著差异的结论。

从广义上来讲,方差分析也属于回归分析的一种,只不过线性回归的因变量一般是连续型变量,而方差分析自变量是因子,研究关注的重点通常会从预测转向不同组之间差异的比较。

方差分析也分为很多种,比如单因素方差分析,双因素方差分析、协方差分析、多元方差分析、多元协方差分析。

方差分析多采用aov()函数进行分析,aov()函数的用法与lm()函数类似。

二、单因素方差分析

一种用于比较在一个自变量(因素)下,三个或更多组别之间均值差异是否显著的统计方法

library(multcomp)
cholesterol#这个数据集是50个患者接受降低胆固醇治疗的五种疗法的数据,50个患者分为10人一组,每天服用20克药物

#这个方案只有治疗方案这一个因子,所以被称为单因素方差分析
attach(cholesterol)
> table(trt)
trt
 1time 2times 4times  drugD  drugE 
    10     10     10     10     10 
    
tapply(response,list(trt),mean)
#aggregate(response,by=list(trt),mean)

fit <- aov(response~trt,data=cholesterol)
> summary(fit)
            Df Sum Sq Mean Sq F value   Pr(>F)    
trt          4 1351.4   337.8   32.43 9.82e-13 ***
Residuals   45  468.8    10.4                     
---
Signif. codes:  
0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
#"trt"表示组别或处理,"Df"表示自由度,"Sum Sq"表示平方和,"Mean Sq"表示均方差,"F value"表示F值,"Pr(>F)"表示F统计量的p值。
#剩余项(Residuals)是指未被解释的方差或误差。它表示模型中不能被自变量和协变量解释的部分,即因变量中未被考虑的变异
##方差分析的结果主要看F值和P值,F值越大说明组间差异越显著,这里就是五组之间平均值的差别,而P值只是用来衡量F值,P值越小说明F值越可靠,

三、双因素方差分析

> head(ToothGrowth)
   len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5

attach((ToothGrowth))
xtabs(~supp+dose)


> aggregate(len,by=list(supp,dose),mean)
  Group.1 Group.2     x
1      OJ     0.5 13.23
2      VC     0.5  7.98
3      OJ     1.0 22.70
4      VC     1.0 16.77
5      OJ     2.0 26.06
6      VC     2.0 26.14
#分组统计平均数的结果显示,剂量越小,二者的差异越明显

dose <- as.factor(dose)
dose
fit <- aov(len~supp*dose,data=ToothGrowth)#转化为因子才不会被识别成协变量
> summary(fit)
            Df Sum Sq Mean Sq F value   Pr(>F)    
supp         1  205.4   205.4  12.317 0.000894 ***
dose         1 2224.3  2224.3 133.415  < 2e-16 ***
supp:dose    1   88.9    88.9   5.333 0.024631 *  
Residuals   56  933.6    16.7                     
---
Signif. codes:  
0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1



四、协方差分析

用于比较不同组或处理之间的均值差异,同时控制(调整)一个或多个协变量的影响。协变量是与因变量相关的连续型变量
协方差分析的目标是去除或减小协变量对因变量的影响,从而更准确地评估和比较组别或处理之间的均值差异。

litter#其中weight是这个数据集的响应变量:
> table(litter$dose)

  0   5  50 500 
 20  19  18  17 

> aggregate(litter$weight,by=list(litter$dose),mean)
  Group.1        x
1       0 32.30850
2       5 29.30842
3      50 29.86611
4     500 29.64647


#使用方差分析检验一下组间是否有显著的差异
#越基础性的效应越需要放在表达式前面,最好首先是协变量,然后是主效应,以此类推:
fit <- aov(weight~gesttime+dose,data=litter)
> summary(fit)
            Df Sum Sq Mean Sq F value  Pr(>F)   
gesttime     1  134.3  134.30   8.049 0.00597 **
dose         3  137.1   45.71   2.739 0.04988 * 
Residuals   69 1151.3   16.69                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
#F值的检验表明,怀孕时间与幼崽出生的体重有关,控制怀孕时间,药物剂量与体重相关,证明药物是有影响的,而不是随机产生的


#检验方差齐性
library(car)
> leveneTest(weight~dose, data=litter)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value  Pr(>F)  
group  3  3.1788 0.02925 *
      70                  
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
#p-value为0.02925,小于显著性水平0.05,因此可以拒绝原假设,即存在组间方差差异。这意味着weight的方差在不同dose组之间存在显著差异

五、多元方差分析

多元方差分析旨在比较多个连续型因变量在不同水平的一个或多个自变量下的均值是否存在显著差异,使用manova().

library(MASS)
?UScereal	#美国谷物数据框,有65行和11列
attach(UScereal)
class(shelf)
shelf <- as.factor(shelf)
> aggregate(cbind(calories,fat,sugars),by=list(shelf),mean)
  Group.1 calories       fat    sugars
1       1 119.4774 0.6621338  6.295493
2       2 129.8162 1.3413488 12.507670
3       3 180.1466 1.9449071 10.856821
#aggregate只能接受一个变量进行分组,所以这里使用cbind()将三个因变量组合成一个数据框

fit <- manova(cbind(calories,fat,sugars)~shelf)

> summary(fit)
          Df Pillai approx F num Df den Df    Pr(>F)    
shelf      2 0.4021   5.1167      6    122 0.0001015 ***
Residuals 62                                            
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

#自变量shelf有2个自由度,Pillai's Trace(值越大表示组间差异越大)值为0.4021,近似F值为5.1167,分子自由度为6,分母自由度为122。在统计推断中,Pr(>F)表示p值,即显著性水平。

summary.aov(fit)#使用summary.aov()函数分别查看每个变量的结果

六、多元协方差分析

多元协方差分析旨在评估多个自变量对多个因变量的影响,同时控制一个或多个协变量的影响。其假设是自变量对因变量的影响是统计不显著的,当控制了协变量后.
多元协方差分析和多元方差分析的主要区别在于是否考虑协变量的影响.

#多元协方差分析
> class(carbo)
[1] "numeric"
> fit <- manova(cbind(calories,fat,sugars)~shelf+ carbo)
> summary(fit)
          Df  Pillai approx F num Df den Df    Pr(>F)    
shelf      2 0.95566   18.302      6    120 5.243e-15 ***
carbo      1 0.92673  248.749      3     59 < 2.2e-16 ***
Residuals 61                                             
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
#shelf和carbo对于calories、fat和sugars的组合变量具有显著影响

总结

本章主要介绍了方差分析中的几种类型。共同点是因变量都要是连续型变量

  1. 其中单、双因素方差分析的因变量只有一个,自变量(分类变量)分别为1,2个;而多元方差分析则是有多个因变量,有一个或多个自变量。

  2. 协方差分析则是因变量为一个,在存在分类变量的情况下有一个或多个协变量。至于多元协方差分析则是多个因变量,在存在分类变量的情况下同时控制一个或多个协变量的影响。

  3. 也就是说要弄清楚因变量是连续型变量;自变量是分类变量;协变量是连续型变量。

  4. 多元协方差分析和多元方差分析的主要区别在于是否考虑协变量的影响

  5. 对于一元协方差分析,协变量在分类变量之前。与多元协方差分析相反

舞幽壑之潜蛟,泣孤舟之嫠妇

–2023 -7-29 筑基篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星石传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值