方差分析(ANOVA)的基本原理及R实现(单因素)

这篇具有很好参考价值的文章主要介绍了方差分析(ANOVA)的基本原理及R实现(单因素)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方差分析(analysis of variance,ANOVA)几乎是在统计学分析中最常用的方法,通过分析各变量主效应(main effect)和交互效应(interaction effect),从而发现因变量(dependent variable)的变异源。另外,通过配合使用多重比较的检验方法,其也常用于比较不同处理导致的因变量的差异。

一、基本原理

假设我们实验获得了这样的一组数据:通过对研究对象(各实验单位)进行不同处理(控制各变量的水平),导致实验对象的某一指标(因变量)在实验单位间出现差异。同时,为了更好的探讨差异的来源,同时提高结果的可靠性,同样的处理我们做了多次重复(一般要大于3)。

1、数学模型

这样就可以将数据的变异划分为组内变异和组间变异,组内变异即各实验重复间的差异,由于随机误差导致。组间变异即各处理组之间的差异,由随机误差和处理效应导致。方差分析的基本思路就是将变异分解为组间变异和组内变异差异的大小(服从 F F F分布),并使用 F F F检验来比较二者差异的显著性。

设实验一共有 k \red{k} k个处理,每个处理有 n \red{n} n个重复,因此第 i \red{i} i个处理的第 j \red{j} j次重复的观测表示为 x i j \red{x_{ij}} xij,且有 μ \mu μ总体平均数 μ = ∑ μ i k \mu=\frac{\sum\mu_{i}}{k} μ=kμi k k k为处理数, μ i \mu_{i} μi为各处理组的均值), α i \alpha_{i} αi处理效应(样本为总体时, ∑ α i = 0 \sum\alpha_{i}=0 αi=0), ε i j \varepsilon_{ij} εij随机误差(相互独立且 ε \varepsilon ε~ N ( o , σ 2 ) N(o,\sigma^{2}) N(o,σ2)),则观测与变异间的关系可表示为:
x i j = μ + α i + ε i j x_{ij}=\mu+\alpha_{i}+\varepsilon_{ij} xij=μ+αi+εij
使用样本统计数表示就是:
x i j = x ‾ + α i + e i j   ,   e i j :样本随机误差 x_{ij}=\overline{x}+\alpha_{i}+e_{ij}~,~e_{ij:\text{样本随机误差}} xij=x+αi+eij , eij样本随机误差

2、方差分解

在方差分析中,通常使用方差 s 2 s^{2} s2来表征数据的变异,而方差通过平方和自由度来计算:
S 2 = ∑ ( x i − x ‾ ) d f S^{2}=\frac{\sum(x_{i}-\overline x)}{df} S2=df(xix)
所以,将总变异分解为组间变异组内变异实质上就是分解平方和自由度

(1)平方和的分解

沿用上述的例子,则总变异的平方和 S S T \red{SS_{T}} SST为:

S S T = ∑ i = 1 k ∑ j = 1 n ( x i j − x ‾ ) 2 SS_{T}= \sum_{i=1}^{k} \sum_{j=1}^{n} (x_{ij}-\overline x)^2 SST=i=1kj=1n(xijx)2

化简得:

S S T = ∑ i = 1 k ∑ j = 1 n ( x ‾ i − x ‾ ) 2 + ∑ i = 1 k ∑ j = 1 n ( x i j − x ‾ i ) 2 SS_{T}= \sum_{i=1}^{k} \sum_{j=1}^{n} (\overline x_{i}-\overline x)^2+ \sum_{i=1}^{k} \sum_{j=1}^{n} (x_{ij}-\overline x_{i})^2 SST=i=1kj=1n(xix)2+i=1kj=1n(xijxi)2

可以看出组间平方和 S S t \red{SS_t} SSt(处理平方和)为:

S S t = ∑ i = 1 k ∑ j = 1 n ( x ‾ i − x ‾ ) 2 = n ∑ i = 1 k ( x ‾ i − x ‾ ) 2 \begin{aligned} SS_t &=\sum_{i=1}^{k} \sum_{j=1}^{n} (\overline x_{i}-\overline x)^2\\ &=n\sum_{i=1}^{k} (\overline x_{i}-\overline x)^2 \end{aligned} SSt=i=1kj=1n(xix)2=ni=1k(xix)2

组内平方和 S S e \red{SS_e} SSe(误差平方和)为:

S S e = ∑ i = 1 k ∑ j = 1 n ( x i j − x ‾ i ) 2 SS_e= \sum_{i=1}^{k} \sum_{j=1}^{n} (x_{ij}-\overline x_{i})^2 SSe=i=1kj=1n(xijxi)2

也有 快速计算 \red{快速计算} 快速计算的公式:
{ C = T 2 / ( k n ) S S T = ∑ ∑ x i j 2 − C S S t = ∑ ( T i 2 / n ) − C S S e = S S T − S S t \begin{cases} C&=T^{2}/(kn)\\ SS_T&=\sum\sum x^{2}_{ij}-C\\ SS_t&=\sum(T^2_{i}/n)-C\\ SS_e&=SS_T-SS_t \end{cases} CSSTSStSSe=T2/(kn)=∑∑xij2C=(Ti2/n)C=SSTSSt

(2)自由度的分解

在计算方差的时候,各方差的自由度受对应的平方和的约束,所以可以分别得出总自由度、处理自由度和误差自由度:

总自由度 d f T \red{df_{T}} dfT

d f T = k n − 1 df_T=kn-1 dfT=kn1

处理自由度 d f t \red{df_t} dft:

d f t = k − 1 df_{t}=k-1 dft=k1

误差自由度 d f e \red{df_e} dfe

d f e = k ( n − 1 ) df_e=k(n-1) dfe=k(n1)

(3)方差和 F F F统计量

所以通过上述推导可得分解后得自由度和平方和,并以此计算方差(方差分析中表示为 M S \red{MS} MS,即均方):

{ 处理均方: M S t = S S t / d f t 误差均方: M S e = S S e / d f e \begin{cases} 处理均方:\red{MS_t}=SS_t/df_t\\ 误差均方:\red{MS_e}=SS_e/df_e \end{cases} {处理均方:MSt=SSt/dft误差均方:MSe=SSe/dfe

因此, F F F统计量为:

F = M S t M S e \red{F}= \frac{MS_t}{MS_e} F=MSeMSt

通过 F F F统计量即可确定处理效应是否显著( F > F 0.05 F>F_{0.05} F>F0.05)。

3、多重比较

在确定处理均方(处理效应)是否显著后,即可通过多重比较检验各处理组别间差异的显著性。主要的检验方法可大致分为两类:最小显著差数法最小显著极差法。常用的方法如下:
多重比较 { 最小显著差数法 { L S D  test Sidak test Bonferroni test 特点:差数标准固定 最小显著极差法 { Tukey test S-N-K test Tukey’s-b test Duncan test 特点:差数标准随秩次变化 多重比较 \begin{cases} &\text{最小显著差数法} \begin{cases} &LSD~\text{test}\\ &\text{Sidak~test}\\ &\text{Bonferroni~test} \end{cases} 特点:差数标准固定\\ &\text{最小显著极差法} \begin{cases} &\text{Tukey~test}\\ &\text{S-N-K~test}\\ &\text{Tukey's-b~test}\\ &\text{Duncan~test} \end{cases} 特点:差数标准随秩次变化 \end{cases} 多重比较 最小显著差数法 LSD testSidak testBonferroni test特点:差数标准固定最小显著极差法 Tukey testS-N-K testTukey’s-b testDuncan test特点:差数标准随秩次变化

4、方差分析表

为了更好的解读方差分析结果,有必要按特定的规范书写方差分析,一般方差分析的结果可表示为:
变异源 S S d f M S F 处理效应 S S t = ∑ ( T i 2 / n ) − C d f t = k − 1 M S t = S S t / d f t F = M S t / M S e ∗ ∗ ∗ 随机误差 S S e = S S T − S S t d f e = k ( n − 1 ) M S e = S S e / d f e   总变异 S S T = ∑ ∑ x i j 2 − C d f T = k n − 1     \begin{array}{ccccc} 变异源 & SS & df & MS & F\\ \hline 处理效应 & SS_t=\sum(T^2_{i}/n)-C & df_{t}=k-1 & MS_t=SS_t/df_t & F=MS_t/MS_e^{***}\\ 随机误差 & SS_e=SS_T-SS_t & df_e=k(n-1) & MS_e=SS_e/df_e & ~\\ 总变异 & SS_T=\sum\sum x^{2}_{ij}-C & df_T=kn-1 & ~ & ~\\ \end{array} 变异源处理效应随机误差总变异SSSSt=(Ti2/n)CSSe=SSTSStSST=∑∑xij2Cdfdft=k1dfe=k(n1)dfT=kn1MSMSt=SSt/dftMSe=SSe/dfe FF=MSt/MSe∗∗∗  
F F F值得上标 ∗ ∗ ∗ \red{***} 表示处理效应显著性,有时也会额外加一列表示处理效应的显著性,例如R中agricolae包的结果:
anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论

二、R实现

1、方差分析

R中提供了很多用于方差分析得包,这里以stats包为例:

setwd("your workspace")
#加载包
library(agricolae)
#R version(4.0.5)

#读取数据
data <- read.csv("data.csv",header = T)

数据集data.csv是某一作物在不同激素浓度处理Treat k = 4 , n = 5 k=4,n=5 k=4,n=5)下对叶长Length)生长量的影响。
单因素方差分析


#描述性统计
#方差分析
fit <- aov(Length ~ Treat, data = data)
#结果
summary(fit)

输出结果如下:
anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论
可看出不同激素处理对叶长生长量的变化( F = 12.02 F=12.02 F=12.02)极显著( P = 0.000227 P=0.000227 P=0.000227)。

2、多重比较

使用 L S D  test LSD~\text{test} LSD testagricolae包)进行多重比较

#显著性检验(LSD检验)
var<- LSD.test(fit, "Treat")
#结果
var

输出结果如下:
anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论
从结果中可看出四种处理下叶长生长量大小关系为: A 1 > A 3 > A 2 > A 4 A1>A3>A2>A4 A1>A3>A2>A4,其中 A 2 A2 A2 A 3 A3 A3处理的差异并不显著。另外,结果中还列出了均值、标准差、分位数、 α \alpha α等关键信息。

3、可视化

单因素方差分析结果一般辅以箱型图来展示,可有效的提供处理效应显著性、差异显著性、数据分布等有效信息。

(1)ggplot法

ggplot系列包因为可以图层叠加,可以极大的节省后期修图的工作量,目前基本已成为R语言可视化的首选。
下列代码以ggplot2绘制箱型图,数据集仍为data.csv,最后使用ggsignif标记差异显著性
绘制箱形图

#加载ggplot2包
library(ggplot2)

#绘制箱型图
boxplot=
  ggplot(data, aes(x=Treat, y=Length, fill=Treat))+#定义图形属性
  geom_boxplot()+#以箱型图显示
  #添加图例、标题等信息
  labs(title="Effect of Hormones on Leaf Length (p<0.001)", x="Treat", y="Length")+
  theme(plot.title=element_text(hjust=0.5), 
        legend.title=element_blank())#定义主题

#查看可视化结果
boxplot

anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论

添加差异显著性标签

#加载ggsignif
library(ggsignif)

#添加差异显著性标签
boxplot = boxplot +
  #A1对A2
  geom_signif(comparisons = list(c(1, 2)),#处理组对比对
              y_position = 18.9,          #标签位置对应y轴的值
              tip_length = 0,             #标签竖线长度
              annotations = "P < 0.05")+  #标签文本
  #A1对A3
  geom_signif(comparisons = list(c(1, 3)),
              y_position = 15.9,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A1对A4
  geom_signif(comparisons = list(c(1, 4)),
              y_position = 15,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A3对A4
  geom_signif(comparisons = list(c(3, 4)),
              y_position = 18.5,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A2对A4
  geom_signif(comparisons = list(c(2, 4)),
              y_position = 18.7,         
              tip_length = 0,             
              annotations = "P < 0.05")
#查看结果
boxplot

anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论
可以看出,在比较组别较多的时候ggsignif包的方法得到的结果会过于复杂,违反了直观性原则。因此,也可以直接使用AI根据多重比较结果进行标记
anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论

(2)基础绘图法

基础绘图也提供了可视化方法,使用上述的方差分析结果fit进行多重比较(TukeyHSD test),并使用data数据集绘制均值图,涉及的包为gplots:

#加载包
library(gplots)

#绘图
par(mfcol=c(1,2))
par(las = 2)
plotmeans(data = data,
          Length ~ Treat,
          xlab = "Treatment",
          ylab = "Length",
          main = "Effect of Hormones on Leaf Length (p<0.001)")

#使用ukey HSD进行多重比较并可视化
Tukey = TukeyHSD(fit)
par(las = 2)
plot(Tukey)

anova方差分析数学原理,数理统计及概率论,r语言,经验分享,概率论
不难看出,使用不同方法进行多重比较,获得的结果并不相同,这是因为两类检验方法在确定显著性的标准上有一定的差异。因此,在实际操作中,需要根据自己的数据集特点,选择合适的检验方法。文章来源地址https://www.toymoban.com/news/detail-784093.html

Ending!!!

到了这里,关于方差分析(ANOVA)的基本原理及R实现(单因素)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 方差分析的数学原理与公式讲解

    方差分析是一种统计分析方法,它用来检验两个或多个样本来自同一总体的假设。它可以用来比较不同小组间的平均值差异是否显著。方差分析有一些假设,包括: 样本是随机选取的 样本是独立的 样本来自同一总体,且总体服从正态分布 方差分析的基本公式如下: 总平方

    2024年02月12日
    浏览(48)
  • R语言数据分析笔记——方差分析(单因素方差分析、双因素方差分析)在Excel、SPSS、R语言中的操作)

    前言:本文为个人学习笔记,为各大网站上的教学内容之综合整理,综合整理了①方差分析的基础知识、②方差分析(单因素方差分析、双因素方差分析)在Excel、SPSS、R语言中的操作),尽量标明出处。另因能力所限或有纰漏之处,故仅供参考,欢迎交流指正。 基本概念 指

    2024年02月05日
    浏览(48)
  • 单因素方差分析--R

    三个剂量水平的药物处理受试者,每个剂量水平十个受试者,现在收集到数据后,问: 药物剂量水平显著影响受试者的response? 或者不同剂量药物处理受试者有显著效果的差异吗?

    2024年01月24日
    浏览(33)
  • 多因素方差分析

    1.多因素方差分析的基本思想 方差分析中当涉及两个或两个以上的分类型自变量时,则需要进行多因素方差分析。进行多因素方差分析时,要首先确定因变量和若干个自变量,其次分析数值型因变量的方差,最后分别比较因变量总离差平方和各部分所占比例,进而推断自变量

    2023年04月27日
    浏览(33)
  • 单因素方差分析

    理论依据 【基本思想】 方差分析是检验两个或两个以上的样本均值之间的差异是否具有统计学意义的一种方法,目的是推断两个或两个以上的总体均值是否相同。它所研究的是分类型自变量对数值型因变量的影响。当只涉及一个分类型自变量时,该分析称为单因素方差分析

    2024年02月11日
    浏览(37)
  • SPSS单因素方差分析

    前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为: SPSS25.0 本专栏所有的数据文件请点击此链接下载:SPSS数据分析专栏附件! 目录   1.单因素方差分析 2.

    2024年02月05日
    浏览(42)
  • SPSS结果解读【单因素方差分析】

    方差分析 (Analysis of Variance,简称ANOVA)主要用于验证两组样本,或者两组以上的样本均值是否有显著性差异(是否一致) 单因素方差分析 是指试验中只有一个因素变化,若有两个因素改变则称为双因素试验,若有多个因素改变则称为多因素试验。 实际操作案例(随意的数

    2024年02月16日
    浏览(32)
  • 2023年数学建模:方差分析与回归分析

    2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 1. 方差分析 1.1 方差分析的原理 1.2 MATLAB 代码实现 1.3 数学建模案例

    2024年02月13日
    浏览(52)
  • 生存分析原理简明教程 单因素生存分析 Kaplan-Meier、LogRank 只能针对单一的变量进行 多因素cox回归分析

    一、生存分析 狭义上来说,生存分析用来分析病人的生存和死亡情况。广义上讲的是事件是否发生。在这里就用是否死亡来代替。一般来说,生存的数据一般有两个变量,一个事件是否发生,病人是否死亡,死亡为1,未死亡为0,一个是事件发生经历的时间,这里用生存时间

    2024年02月02日
    浏览(38)
  • 2019年亚太杯APMCM数学建模大赛B题区域经济活力及其影响因素的分析与决策求解全过程文档及程序

    原题再现    区域(或城市或省级)经济活力是区域综合竞争力的重要组成部分。近年来,为了提高经济活力,一些地区推出了许多刺激经济活力的优惠政策,如减少招商审批环节、为创业提供资金支持、降低落户门槛以吸引人才。然而,由于资源禀赋不同,这些政策在不

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包