专注系列化高质量的R语言教程

推文索引 | 联系小编 | 付费合集


方差分析(Analysis of Variance, ANOVA)于1918年由Ronald Fisher(也是F分布的提出者)提出,用于比较多组样本的均值是否存在显著差异,是t检验的拓展。本篇来介绍单因素方差分析,目录如下:

  • 1 单因素方差分析

    • 1.1 学生t检验和Welch t检验

    • 1.2 单因素方差分析

    • 1.3 aov函数

    • 1.4 单因素方差分析与t检验的关系

    • 1.5 oneway.test函数

    • 1.6 方差分析与线性回归的关系

1 单因素方差分析

在单因素方差分析(One-way ANOVA)里,只有一个分组变量。

通过推文t检验和F检验,我们知道t检验也可以检验组间样本均值的差异,但它最多允许样本分为两组。比如根据性别(分组变量)可以将人群分为男、女两类,使用t检验(独立样本t检验)可以检验不同性别在某变量(如身高)上是否存在显著性差异。而组别如果在三个及以上,t检验就不适用了,比如根据种族(分组变量)可以将人群分为黄色、白色、黑色、棕色人种。

  • 注意,这里样本虽然被分为多个组别,但分组变量只有一个(性别、种族)。

1.1 学生t检验和Welch t检验

推文t检验和F检验已经介绍过t检验了,这里针对独立样本t检验再加以补充。参考资料[1]:https://www.statology.org/welchs-t-test/。

由William Sealy Gosset(笔名Student,t分布的提出者)提出的t检验称为学生t检验(Student’s t-test)。它假设两组样本的总体方差相同,在此基础上检验总体均值是否存在显著性差异。它的t统计量的计算公式为:

自由度为,即。

由B. L. Welch改进的t检验称为Welch t检验(Welch's t-test)[2]。它不需要假设两组样本的总体方差相等。它的t统计量的计算公式为:

自由度为。

  • 当两组的样本数相同时(),两种t统计量相等;

  • 关于总体方差是否具有显著性差异,可以使用F检验,详见推文t检验和F检验;

  • 相比之下,Welch t检验更具有一般性,因此是t检验的默认形式[3]t.test()函数的var.equal参数的默认值就是FALSE。

例1

set.seed(1112)
x = rnorm(30, 5, sd = 0.1)
y = rnorm(30, 5.2, sd = 0.1) ## 默认形式(Welch's t-test)
t.test(x, y)
##  Welch Two Sample t-test
##
## data:  x and y
## t = -5.8794, df = 55.926, p-value = 2.396e-07
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.2257523 -0.1110069
## sample estimates:
## mean of x mean of y
##  5.017888  5.186268## 总体方差相等(Student’s t-test)
t.test(x, y, var.equal = T)
## data:  x and y
## t = -5.8794, df = 58, p-value = 2.153e-07
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.2257070 -0.1110522
## sample estimates:
## mean of x mean of y
##  5.017888  5.186268  ## 手动计算t统计量
(mean(x) - mean(y))/sqrt(29*(var(x) + var(y))/58*(2/30))
## [1] -5.87936
(mean(x) - mean(y))/sqrt((var(x)+var(y))/30)
## [1] -5.87936
  • 当两组的样本数相同时()时,两种情况的t统计量相等;

  • 两种情况的自由度df和值p-value不同。

1.2 单因素方差分析

假设分组变量将个样本分为组,使用表示分组标识()。方差分析认为样本之间的差异来自两个方面,一个是组间差异,另一个是组内差异。

组间离差平方和():

  • 表示第组的样本均值,表示所有样本的均值;

  • 的自由度为。

组内离差平方和():

  • 表示样本值,表示第组的样本均值;

  • 的自由度为。

总离差平方和():

  • 自由度为。

方差分析也要求各组样本的总体方差相同,在此基础上使用如下统计量检验各组样本的总体均值是否具有显著性差异:

在零假设(各组样本的总体均值没有显著性差异)下,上述统计量服从F分布。

1.3 aov函数

stats工具包中,可以使用aov()函数进行方差分析。它的语法结构如下:

aov(formula, data = NULL, projections = FALSE, qr = TRUE, contrasts = NULL, ...)

例2

aov()函数所需要的数据结构与t.test()不同,应为包含样本取值变量和分组变量的数据框:

data = data.frame(value = c(x, y),group = c(rep(1, 30), rep(2, 30)))
data
##       value group
## 1  5.078769     1
## 2  4.957798     1
## ...
## 30 5.165296     1
## 31 5.267878     2
## 32 5.188655     2
## ...
## 60 5.247890     2aov.fit <- aov(value ~ group, data = data)
summary(aov.fit)
##             Df Sum Sq Mean Sq F value   Pr(>F)
## group        1 0.4253  0.4253   34.57 2.15e-07 ***
## Residuals   58 0.7136  0.0123
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • 可以看出,方差分析的Pr(>F)与例1中的学生t检验的p-value相同;

  • group行对应的是组间分析结果,Residuals对应的是组内分析结果;Df为自由度,Sum Sq为离差平方和,Mean Sq表示离差均值(等于离差平方和除以自由度)。

例3

当分组数在三个及以上时,t检验不再适用,但仍然可以使用方差分析:

sleep
##    extra group ID
## 1    0.7     1  1
## 2   -1.6     1  2
## 3   -0.2     1  3
## 4   -1.2     1  4
## ...
## 20   3.4     2 10summary(aov(extra ~ ID, data = sleep))
##             Df Sum Sq Mean Sq F value Pr(>F)
## ID           9  58.08   6.453   3.345 0.0368 *
## Residuals   10  19.29   1.929
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

1.4 单因素方差分析与t检验的关系

单因素方差分析是t检验的拓展,它们都可以用于检验两组样本的均值是否存在显著差异。从前面的例子也可以看到,方差分析和学生t检验计算的p值完全相同。

其实从理论上看,t分布和F检验也存在内在联系:假设服从t分布,那么就服从F分布。下面推导学生t统计量和方差分析的F统计量之间存在平方关系。

对于的情况,所有样本的均值与两组样本均值的关系如下:

因此,组间平方和:

R语言基础 | 方差分析(1):单因素方差分析相关推荐

  1. 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析

    基本原理 方差分析(Analysis of variance, ANOVA)是用于两个或两个以上样本均数比较的方法,还可以分析两个或多个研究因素的交互交互作用以及回归方程的线性假设检验等.其基本思想是 ...

  2. R语言aov函数进行单因素方差分析(One-way ANOVA)、使用Q-Q图来评估方差分析因变量的正态性、Bartlett验证方差的相等性(齐次性)、car包中的outlierTest函数异常检验

    R语言使用aov函数进行单因素方差分析(One-way ANOVA).使用Q-Q图来评估方差分析因变量的正态性假设.Bartlett检验验证方差的相等性(齐次性).car包中的outlierTest函 ...

  3. R语言基础 | 方差分析(2):多因素方差分析(上)

    专注系列化.高质量的R语言教程 推文索引 | 联系小编 | 付费合集 当存在两个及以上的分组变量时,可以使用多因素方差分析(N-way  ANOVA.Multifactor ANOVA)检验各组的样本 ...

  4. R语言差异检验:单因素方差分析

    文章目录 @[toc] 方差分析介绍 适用条件 分类 R语言 单因素方差分析示例 数据集 示例 多重比较 评估检验的假设条件 t检验可以解决单样本.双样本时的均数比较.当要比较的组多于两个时,t检验方 ...

  5. R语言Welch方差分析(Welch’s ANOVA)实战:Welch方差分析是典型的单因素方差分析的一种替代方法,当方差相等的假设被违反时我们无法使用单因素方差分析,这时候Welch’s出来救场了

    R语言Welch方差分析(Welch's ANOVA)实战:Welch方差分析是典型的单因素方差分析的一种替代方法,当方差相等的假设被违反时我们无法使用单因素方差分析,这时候Welch's出来救场了 ...

  6. R语言基础统计分析:正态性检验、方差齐性检验、T检验、方差分析、秩和检验

    R语言基础统计分析 1. 正态性检验 1.1 Shapiro-Wilk正态检验方法 1.2 QQ图 2. 方差齐性检验 2.1 Bartlett检验,适用于正态分布数据 2.2 Levene检验,非正 ...

  7. 数据分析必备:掌握这个R语言基础包1%的功能让你事半功倍!(附代码)

    来源:大数据 本文约7100字,建议阅读15分钟. 本文介绍了utils包在R语言基础的用途. [ 导读 ]无论数据分析的目的是什么,将数据导入R中的过程都是不可或缺的.毕竟巧妇难为无米之炊.util ...

  8. 《R语言机器学习:实用案例分析》——1.2节R的数据结构

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.2节R的数据结构,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sark ...

  9. 《R语言机器学习:实用案例分析》——1.3节使用函数

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.3节使用函数,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar ...

最新文章

  1. MySql批量插入时,如何不插入重复的数据
  2. 高仿书旗小说 Flutter版,支持iOS、Android
  3. 小码哥iOS学习笔记第二天: OC对象的分类
  4. 【阿里巴巴】CBU技术部招聘
  5. 设计模式05-建造者模式
  6. 【mysql】启动mysql 服务器 Redirecting to /bin/systemctl start mysql.service
  7. JS三教九流系列-require.js-网站模块化开发
  8. 新玩法,CentOS7中LVM通过扩展逻辑卷扩展swap空间
  9. sql嵌套查询返回多个字段_list4 SQL复杂查询
  10. 初识Android应用程序的五大基本组件
  11. 企业即时通讯市场增长500%
  12. 详细讲解 委托和事件
  13. python电子病历交接班系统_专科电子病历
  14. Java-bug记录【1】
  15. ubuntu常用功能安装集锦
  16. SI24R1兼容NRF24L01P DEMO板使用说明书
  17. mysql索引失效的几种情况分析
  18. 基于SSM生产计划排程管理系统
  19. 简单BroadcastRecevier
  20. html js音乐歌词滚动,如何用html+js实现音乐歌词同步播放器

热门文章

  1. 烟台计算机教师招聘的题型,山东教师招聘考试题型分值比例
  2. 写CUDA到底难在哪?
  3. 在线服务器系统安装,Win2003 服务器系统安装图文教程
  4. iOS 开发 二维码扫描详解
  5. nest keyword_如何使用Nest Thermostat手动运行HVAC风扇
  6. 软件设计师-11.知识产权与标准化
  7. 给PyQt5 exe程序设置自启动(Windows)
  8. 汽车电子_EMC测试_CE电流法整改
  9. 输入百度网址地址后面有tn小尾巴解决办法
  10. 【python制作小游戏】能用工具尽量别耗时间,速战速决,见识新的天空——开心消消乐