liucn的个人博客分享 http://blog.sciencenet.cn/u/liucn

博文

R语言:单因素方差分析详解

已有 3297 次阅读 2023-10-3 11:52 |个人分类:生物统计学|系统分类:科研笔记

方差分析,英文名称Analysis Of Variance,简写为ANOVA,单因素被称为one way,二者合并叫做单因素方差分析(One-way ANOVA),常用于检验单个因变量对一个独立变量的影响,其H0假设为判断不同组别之间的平均数是否相等。本文涉及到一些简单的统计学和R语言知识,适合有相关基础的人阅读,主要步骤如下:

1.导入数据

2.使用箱线图(boxplot)筛选异常值

3.绘制Q-Q图(qqnorm)观察变量是否为正态(或近似正态)分布

4.levene法(ggerrorplot)检验多组观测值的整体方差是否相等

5.单因素方差分析(One-way ANOVA)

a.方差不齐时可通过变量变换达到方差齐性要求,或者采用校正的单因素方差分析法(Welch test)进行比较

6.事后检验

a.方差不齐时多组间两两比较的Games-Howell

补充说明

a.适用于多组间两两比较的 SNK(q test)

b.适用于某指定组与其它各组比较的Dunnett-t(q' test)

c.适用于满足方差齐性时,可采用F检验(f test)进行单因素方差分析

本文所用的数据为3种猪饲料对猪体重变化的影响,探究哪种猪饲料的使用对猪体重变化的影响大,ID为猪的编号,group为不同饲料的编号,WG为体重前后差,数据及R语言代码详见附件或微信公众号邦兮彦彼

导入数据

mydata <- read.csv("单因素方差分析.csv") #导入CSV数据

View(mydata) #查看数据

使用箱线图(boxplot)筛选异常值

#按不同饲料拆分数据为三组,分别为zhuqiangzhuangzhupangpangzhujianqiang

Zhuqiangzhuang<-subset(mydata, mydata$group==1) #按组生成猪强壮

Zhupangpang<-subset(mydata, mydata$group==2) #按组生成猪胖胖

zhujianqiang<-subset(mydata, mydata$group==3) #按组生成猪强壮

##分组描述数据子集##

summary(Zhuqiangzhuang$WG) #描述猪强壮基本情况

summary(Zhupangpang$WG) #描述猪胖胖基本情况

summary(zhujianqiang$WG) #描述猪坚强基本情况

##分组查看缺失值情况##

is.na(Zhuqiangzhuang$WG) #查看猪强壮有无缺失值

is.na(zhujianqiang$WG) #查看猪胖胖有无缺失值

is.na(zhujianqiang$WG) #查看猪坚强有无缺失值

## 分组绘制箱线图##

labels <- c("猪强壮","猪胖胖","猪坚强") #设置分组标签

boxplot(mydata$WG ~ mydata$group, names = labels,

xlab = c("group"), ylab = expression("WG")) #分组绘制箱线图

 图片1.png 

1 实验数据基本情况

图片2.png

2 三种饲料体重变化箱线图

 

1 描述性分析(summary)命令运行结果,列出了观察变量的“Min.(最小值)“1st QU.(第一四分位数)”“Median(中位数)”“Mean(平均值)”“3st QU.(第三四分位数)“Max.(最大值)”依据专业可判断的上升克数均可能存在0.1 kg3.7 kg的情况;此外,图2中的箱线图也未提示任何异常值。综上,本案例未发现需要删除的异常值。

 

绘制Q-Q图(qqnorm)观察变量是否为正态(或近似正态)分布

##分组绘制Q-Q图##

par(mfrow = c(1, 3)) #设置13个图

qqnorm(Zhuqiangzhuang$WG, ylab="WG", main="猪强壮") #绘制猪强壮的qq

qqline(Zhuqiangzhuang$WG) #增加趋势线

qqnorm(zhujianqiang$WG, ylab="WG", main="猪胖胖") #绘制猪胖胖的qq

qqline(zhujianqiang$WG) #增加趋势线

qqnorm(zhujianqiang$WG, ylab="WG", main="猪坚强") #绘制猪坚强的qq

qqline(zhujianqiang$WG) #增加趋势线

##正态性检验 ##

tapply(mydata$WG, mydata$group, shapiro.test) #分组进行Shapiro-Wilk正态性检验

 

图片3.png

3 Q-Q

图片4.png

4 S-W正态性检验

 

3 Q-Q图上三组散点基本围绕对角线分布,提示三组数据呈正态分布;图4“Shapiro-Wilk normality test (S-W正态性检验)”结果分别显示三组的P=0.2960.4860.435,均>0.1,也示三组数据服从正态分布。

levene法(ggerrorplot)检验多组观测值的整体方差是否相等

##计算标准差##

library(psych) #调用包“psych”

describeBy(mydata$WG, group = mydata$group) #分组描述统计

## levene法方差齐性检验##

library(dplyr) #调用软件包“dplyr”

mydata4 <- mydata %>% mutate(group1=factor(group,labels=c("A","B","C"))) #把变量group转换为分类变量

library(car) #调用软件包“car”

leveneTest(WG~group1,data=mydata4,center=mean) #levene法方差齐性检验

图片5.png 

5 实验数据统计值

图片6.png 

6 方差齐性检验

5描述性分析 (describeBy)运行结果提供了各组观察变量的统计量,包括:“vars(能够返回变量的数量)”“n (样本量)”“Mean (均数)”“sd (标准差)”“median (中位数)”“terimmed(截尾均值)”绝对中位差(mad)”“min(最小值)”“max(最大值)”range(全距)“skew(偏度)”“kurtosis(丰度)”“se (标准误)”。结果可知,猪强壮猪胖胖猪坚强三组的标准差分别为0.870.740.54 kg,三组的标准差数值存在差异,但还需要依据统计学检验的结果进行判断。图6 Levene检验(LeveneTest)结果显示,F=2.6102P=0.08019<0.1,提示三组数据的方差不齐。

单因素方差分析(One-way ANOVA)

方差不齐时可通过Welch test进行比较

 

##单因素方差分析 ##

library(rstatix)

welch_anova_test(data = mydata,WG~group) #校正的单因素方差分析

图片7.png 

由于本案例不满足方差齐性,所以采用校正单因素方差分析(Welch’s)法的结果,F=5.48P=0.007;提示各组均数不全相等(至少有两组均数不相同)

事后检验

上面分析得出了各组均数不全相等的结论,但是具体是哪些组别之间存在差异尚不清楚,因此需要进行事后检验,开展两两比较

## 两两比较 ##

games_howell_test (data=mydata4,WG~group1,conf.level = 0.95, detailed = FALSE)

#注:当不满足方差齐性时采用“Games-Howell”法进行事后检验

 

图片8.png 

表格中提供了各组两两比较的“estimate “conf.low (95%置信区间下限)”“conf.high (95%置信区间上限)”“p.adj (调整过后的P)”。可知,猪强壮猪胖胖组之间的差异为-0.438 (95%CI-0.978~0.101) kg,但差异无统计学意义(P=0.132)猪强壮猪坚强之间的差异为-0.665 (95%CI-1.15~-0.179) kg,差异有统计学意义(P=0.005)猪胖胖猪坚强之间的差异为-0.227 (95%CI-0.661~0.207) kg,差异无统计学意义(P=0.421)。因此,可知猪强壮体重的上升数比猪坚强组高0.665 kg,差异有统计学意义(P=0.005)。因此,猪强壮猪胖胖猪坚强三种饲料体重的影响不一样,猪强壮饲料增重效果最好。

以上就是此次数据的全部分析过程了,部分没有涉及的知识,补充说明如下。

a.适用于多组间两两比较的 SNK(q test)

SNK法适合于多个样本均数两两之间的全面比较。只要是多组数据,就可以采用SNK检验。统计结果呈现形式结果为q值,并无P值。检验水平偏低,可能存在一定的假阳性结果。但此特征也有助于在探索性研究中敏感地发现组间差异。

b.适用于某指定组与其它各组比较的Dunnett-t(q' test)

Dunnett-t 检验适用于g个实验组与一个对照组均数差别的多重比较。采用Dunnett-t时,以对照组为基础的,故必须至少存在一个对照组,再在才实验组与对照组之间进行比较。例如四组实验,其中三组分别使用三组不同饲料喂养小猪,而空白对照则不使用特殊饲料喂养。为了对探究某种饲料与不加饲料对小猪体重的影响,此时适合采用Dunnett-t检验。但该法无法进行实验组之间的比较。

c.适用于满足方差齐性时,可直接进行单因素方差分析

aov<-aov(WG~group,data=mydata)#单因素方差分析

summary(aov)

 图片9.png 

结果P0.05,接受原假设,各组试验结果均值不存在差异(因为方差不齐,本案例直接使用单因素方差分析会得出错误的结果,请各位读者对自己的数据自行选择合适的方法)。

 




https://blog.sciencenet.cn/blog-3511108-1404543.html

上一篇:三种方法教你如何查看期刊的SCI分区
收藏 IP: 202.121.54.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-28 09:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部