相关文章推荐
微醺的勺子  ·  Failed to use ...·  10 月前    · 
温柔的槟榔  ·  PHP: fgets - Manual·  1 年前    · 
豪气的青蛙  ·  can't import ...·  1 年前    · 

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

一、基本原理

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

1、数学模型

这样就可以将数据的变异划分为组内变异和组间变异, 组内变异 即各实验重复间的差异,由于随机误差导致。 组间变异 即各处理组之间的差异,由随机误差和处理效应导致。方差分析的 基本思路 就是将变异分解为组间变异和组内变异差异的大小(服从 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 S S T = i = 1 k j = 1 n ( x i x ) 2 + i = 1 k j = 1 n ( x ij x i ) 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} S S t = i = 1 k j = 1 n ( x i x ) 2 = n i = 1 k ( x i x ) 2

组内平方和 \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} C S S T S S t S S e = T 2 / ( kn ) = ∑∑ x ij 2 C = ( T i 2 / n ) C = S S T S S t

(2)自由度的分解

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

多重比较 \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} 多重比较 最小显著差数法 L S D test Sidak test Bonferroni test 特点:差数标准固定 最小显著极差法 Tukey test S-N-K test Tukey’s-b test Duncan test 特点:差数标准随秩次变化

为了更好的解读方差分析结果,有必要按特定的 规范 书写方差分析,一般方差分析的结果可表示为:
\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} 变异源 处理效应 随机误差 总变异 SS S S t = ( T i 2 / n ) C S S e = S S T S S t S S T = ∑∑ x ij 2 C df d f t = k 1 d f e = k ( n 1 ) d f T = kn 1 MS M S t = S S t / d f t M S e = S S e / d f e F F = M S t / M S e ∗∗∗

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

(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

添加差异显著性标签

#加载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

在这里插入图片描述
可以看出,在比较组别较多的时候ggsignif包的方法得到的结果会过于复杂,违反了直观性原则。因此,也可以直接使用AI根据多重比较结果进行标记
在这里插入图片描述

(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)

在这里插入图片描述
不难看出,使用不同方法进行多重比较,获得的结果并不相同,这是因为两类检验方法在确定显著性的标准上有一定的差异。因此,在实际操作中,需要根据自己的数据集特点,选择合适的检验方法。

Ending!!!

因素或因子(factor):所要检验的对象,要分析行业对投诉次数是否有影响,行业是要检验的因素或因子 水平或处理(treatment):因素的不同表现,即每个自变量的不同取值称为因素的水平 观察值:在每个因素水平下得到的样本值,每个行业被投诉的次数就是观察值 试验:这里只涉及一个因素,因此称为因素四水平的试验 总体:因素的每一个水平可以看作是一个总体,比如零售业、旅游业、航空公司、家电制造业可以看作是四个总体 是用来研究一个控制变量的不同水平是否对观测变量产生了显著影响。这里,由于仅研究因素对观测变量的影响,因此称为因素方差分析。 例如,分析不同施肥量是否给农作物产量带来显著影响,考察地区差异是否影响妇女的生育率,研究学历对工资收入的影响等。这些问题都可以通过因素方差分析得到答案。 因素方差分析步骤: 第一步是明确观测变量和控制变量。例如,上述问题中的
自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~ 本文重点:因素方差分析(以下:方差分析) 【1.方差分析原理和前提条件】 【2.方差分析和t检验的区别】 【3.方差分析代码(配对/独立+事后检验+效应量)】
虽然网上也有很多关于方差分析的介绍,但是我还是想结合自己在学校所学的统计学专业知识以及网上的一些优秀文档做一个笔记整理,不为别的,只为以后用到这方面知识的时候有笔记可查,分享到博客也是为了和大家一起学习探究,无其他过分的想法,谢谢各位。 PS:由于markdown编辑器不支持数学公式的直接复制,所以只能先在Word文档编辑好,然后以插图的形式放进来,因此在文章发现有文档的插图请不要奇怪,正常... 样本的总体符合正态分布,偏态分布不适用于方差分析。 对偏态分布应考虑用对数转换、平方根变换、倒数变换、平方根反正弦变换等变量变换方法变为正态或接近正态分布后再进行方差分析 各组样本具有相同的方差 基本原理由于各种因素的影响,方差分析研究的数据呈
SPSS:因素方差分析方差分析因素方差分析因素方差分析的原理因素方差分析的SPSS操作 方差分析是一种假设检验,它把观测总变异的平方和与自由度分解为对应不同变异来源的平方和与自由度,将某种控制性因素所导致的系统性误差和其他随机性误差进行对比,从而推断各组样本之间是否存在显著性差异,以分析该因素是否对总体存在显著性影响。方差分析法采用离差平方和对变差进行度量,从总离差平方和分解出可追溯到指定来源的部分离差平方和。方差分析要求样本满足以下条件: 可比性:资料中各组均数本身必须具有可比性,这是
ANOVA 方法通常需要使用 R 中的 stats 包。stats 包是 R 的基本统计分析包,其中包括用于方差分析anova() 函数。此外,如果你需要进行多元方差分析或混合设计方差分析,你可能还需要使用其他包,如 multcomp 和 car 等。在使用这些包之前,你需要先安装它们。你可以使用以下命令来安装这些包: install.packages("stats") install.packages("multcomp") install.packages("car") 安装完成之后,你可以使用 library() 命令来加载这些包: library(stats) library(multcomp) library(car) 这样就可以使用其中的函数来进行方差分析

4、方差分析表