如何在 r 中使用 fisher 的最小显着差异 (lsd)
单向方差分析用于确定三个或更多独立组的平均值之间是否存在统计显着差异。
单向方差分析中使用的假设是:
- H 0 :每组的平均值相等。
- H A :至少有一种方式与其他方式不同。
如果方差分析的p 值低于一定的显着性水平(例如 α = 0.05),我们可以拒绝原假设并得出结论:组均值中至少有一个与其他均值不同。
但要准确了解哪些组彼此不同,我们需要进行事后测试。
常用的事后检验是Fisher 最小显着差异 (LSD) 检验。
您可以使用agricolae包中的LSD.test()函数在 R 中执行此测试。
下面的例子展示了如何在实际中使用这个功能。
示例:R 中的 Fisher LSD 测试
假设一位教授想知道三种不同的学习技巧是否会导致学生的考试成绩不同。
为了测试这一点,她随机分配 10 名学生使用每种学习技巧并记录他们的考试结果。
下表显示了每个学生根据所使用的学习技术的考试结果:
我们可以使用以下代码创建该数据集并在 R 中对其执行单向方差分析:
#create data frame
df <- data. frame (technique = rep(c("tech1", "tech2", "tech3"), each = 10 ),
score = c(72, 73, 73, 77, 82, 82, 83, 84, 85, 89,
81, 82, 83, 83, 83, 84, 87, 90, 92, 93,
77, 78, 79, 88, 89, 90, 91, 95, 95, 98))
#view first six rows of data frame
head(df)
technical score
1 tech1 72
2 tech1 73
3 tech1 73
4 tech1 77
5 tech1 82
6 tech1 82
#fit one-way ANOVA
model <- aov(score ~ technique, data = df)
#view summary of one-way ANOVA
summary(model)
Df Sum Sq Mean Sq F value Pr(>F)
technical 2 341.6 170.80 4.623 0.0188 *
Residuals 27,997.6 36.95
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
由于方差分析表中的 p 值 (0.0188) 小于 0.05,因此我们可以得出结论,三组之间的所有平均考试成绩并不相等。
因此,我们可以执行 Fisher 的 LSD 检验来确定哪些组均值不同。
以下代码展示了如何执行此操作:
library (agricolae)
#perform Fisher's LSD
print( LSD.test (model," technic "))
$statistics
MSerror Df Mean CV t.value LSD
36.94815 27 84.6 7.184987 2.051831 5.57767
$parameters
test p.adjusted name.t ntr alpha
Fisher-LSD none technical 3 0.05
$means
std score r LCL UCL Min Max Q25 Q50 Q75
tech1 80.0 5.868939 10 76.05599 83.94401 72 89 74.00 82.0 83.75
tech2 85.8 4.391912 10 81.85599 89.74401 81 93 83.00 83.5 89.25
tech3 88.0 7.557189 10 84.05599 91.94401 77 98 81.25 89.5 94.00
$comparison
NULL
$groups
score groups
tech3 88.0 a
tech2 85.8a
tech1 80.0 b
attr(,"class")
[1] “group”
结果中我们最感兴趣的部分是名为$groups的部分。组列中具有不同特征的技术有很大不同。
从结果我们可以看出:
- 技术 1 和技术 3 的平均考试成绩显着不同(因为 tech1 的值为“b”,tech3 的值为“a”)。
- 技术 1 和技术 2 的平均考试成绩显着不同(因为 tech1 的值为“b”,tech2 的值为“a”)。
- 技术 2 和技术 3 的平均考试成绩没有显着差异(因为它们都有“a”值)
其他资源
以下教程解释了如何在 R 中执行其他常见任务:
如何在 R 中执行单向方差分析
如何在 R 中执行 Bonferroni 事后测试
如何在 R 中执行 Scheffe 事后测试