示例数据集如下:
导入数据作简单可视化
library(tidyverse)
test <- rio::import('ANOVA.xlsx')
boxplot(value ~ group,data = test)
正态性检验
- 当分析小于50行的小样本数据时,用Shapiro-Wilk 检验
- 当分析大于50行的大样本数据时,用Kolmogorov-Smirnov检验
by(test, test$group, function(df) shapiro.test(df[,2]))
各组符合正态分布
方差齐性检验
bartlett.test(value ~ group,data = test)
各组方差齐
单因素方差分析
ANOVA <- aov(value ~ group,data = test)
summary(ANOVA)
多组之间存在两组,总体均数不等
多重比较
- 事前比较的常用方法有LSD法、Dunnett-t检验
- 事后比较的常用方法有SNK法、Turkey法、Scheffe法
- 事前比较和事后比较都可以采用的方法有Bonferroni法、Sidak法
LSD法
p.adj=”none”
时,为LSD法,p.adj="bonferroni"
时为Bonferroni法
# install.packages("agricolae")
library(agricolae)
res <- LSD.test(ANOVA, 'group', p.adj = 'none')
res
plot(res)
可见显著性字母标识
TukeyHSD法
tuk <- TukeyHSD(ANOVA)
tuk
plot(tuk)
完整代码
library(tidyverse)
test <- rio::import('ANOVA.xlsx')
boxplot(value ~ group,data = test)
# 正态性检验
by(test, test$group, function(df) shapiro.test(df[,2]))
# 方差齐性检验
bartlett.test(value ~ group,data = test)
# 单因素方差分析
ANOVA <- aov(value ~ group,data = test)
summary(ANOVA)
# 多重比较
# 1. LSD法
# install.packages("agricolae")
library(agricolae)
res <- LSD.test(ANOVA, 'group', p.adj = 'none')
res
plot(res)
# 2. TukeyHSD法
tuk <- TukeyHSD(ANOVA)
tuk
plot(tuk)