如何在 r 中执行弗里德曼检验
弗里德曼检验是重复测量方差分析的非参数替代方法。它用于确定每组中出现相同受试者的三个或更多组的平均值之间是否存在统计显着差异。
本教程介绍如何在 R 中执行 Friedman 测试。
示例:R 中的弗里德曼检验
要在 R 中执行 Friedman 测试,我们可以使用Friedman.test()函数,该函数使用以下语法:
Friedman.test(y、组、块)
金子:
- y:响应值向量。
- groups:指示观察所属“组”的值向量。
- 块:指示“阻塞”变量的值向量。
此函数生成卡方检验统计量和相应的 p 值。如果 p 值低于一定的显着性水平(常见选择为 0.10、0.05 和 0.01),则有足够的证据表明每个组之间的均值不相等。
为了说明如何使用此功能,我们将创建一个数据集,显示五名患者对四种不同药物的反应时间。由于每位患者都对四种药物中的每一种进行测量,因此我们将使用弗里德曼测试来确定药物之间的平均反应时间是否不同。
首先,我们将创建数据集:
#create data data <- data.frame(person = rep(1:5, each=4), drug = rep(c(1, 2, 3, 4), times=5), score = c(30, 28, 16, 34, 14, 18, 10, 22, 24, 20, 18, 30, 38, 34, 20, 44, 26, 28, 14, 30)) #view data data person drug score 1 1 1 30 2 1 2 28 3 1 3 16 4 1 4 34 5 2 1 14 6 2 2 18 7 2 3 10 8 2 4 22 9 3 1 24 10 3 2 20 11 3 3 18 12 3 4 30 13 4 1 38 14 4 2 34 15 4 3 20 16 4 4 44 17 5 1 26 18 5 2 28 19 5 3 14 20 5 4 30
接下来,我们将使用分数作为响应变量、药物作为分组变量、人作为阻塞变量来执行弗里德曼检验:
#perform Friedman Test
friedman.test(y=data$score, groups=data$drug, blocks=data$person)
Friedman rank sum test
data: data$score, data$drug and data$person
Friedman chi-squared = 13.56, df = 3, p-value = 0.00357
卡方检验统计量为13.56 ,相应的 p 值为0.00357 。由于该 p 值小于 0.05,我们可以拒绝所有四种药物的平均响应时间相同的原假设。我们有足够的证据得出结论,所使用的药物类型会导致反应时间在统计上存在显着差异。
尽管弗里德曼检验告诉我们药物之间的平均反应时间是否存在差异,但它并没有具体告诉我们哪些药物具有不同的平均反应时间。为了理解这一点,我们需要进行事后测试。
对于 Friedman 检验,适当的事后检验是带有 Bonferroni 校正的成对 Wilcoxon 秩和检验,可以使用以下语法实现:
pairwise.wilcox.test(数据$分数,数据$药物,p.adj =“bonf”)
金子:
- x:响应向量
- g:向量分组
- p.adj: p值调整方法;选项包括 holm、hochberg、hommel、bonferroni、BH、BY、fdr 和 none
以下是我们将在示例中使用的语法:
#perform post-hoc tests
pairwise.wilcox.test(data$score, data$drug, p.adj = "bonf")
Pairwise comparisons using Wilcoxon rank sum test
data: data$score and data$drug
1 2 3
2 1,000 - -
3 0.449 0.210 -
4 1,000 1,000 0.072
P value adjustment method: bonferroni
这会生成一个矩阵,显示每个成对 Wilcoxon 秩和检验的 p 值。我们可以看到,唯一具有 0.10 统计显着差异的药物组是第 3 组和第 4 组 ( p = 0.072 )。