我想对跨多个组的两种治疗使用 Wilcoxon 2 面检验,即对几个样本位点中的每一个都有一个治疗前后 (Conc)。我想按站点将数据集拆分为一个列表,然后应用测试,这样我就可以分别为每个站点提供一个输出,但是,我无法将其设置为可以重复的函数。
我有多个站点 (Site) 和两个级别的治疗 (Scenario),结果得分 (Conc):
'data.frame': 7344 obs. of 6 variables:
$ Site : chr "A" "B" "C" "D" ...
$ Scenario : chr "1" "1" "1" "1" "2" "2" "2" "2" ...
$ Conc : num 4.7727 0.055 0.0552 0.055 0.055 ...
每个站点/场景组合中有多个 Conc 数据点 (~60)。我选择 Wilcoxon 测试的原因主要是因为我在每个站点的处理(场景)之间的样本数量略有不均匀。
当我将此代码用于整个数据集时,我得到了一个合理的结果:
t1 <- wilcox.test(Conc ~ Scenario, data = data.frame)
t1
但是,此代码不会单独为每个站点应用测试。
我查看了我能找到的所有类似示例(在 SO 和其他地方),这是我能想到的最好的代码:
t2 = data.frame %>% group_by(Site) %>% do(tidy(wilcox.test(Conc~Scenario, data=data.frame), na.rm=TRUE, equal.var=FALSE))
t2
这段代码为每个站点提供了一个输出,但所有测试输出都是相同的,即使是 p 值:
# A tibble: 107 x 5
# Groups: Site [107]
Site statistic p.value method alternative
<chr> <dbl> <dbl> <chr> <chr>
1 A 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
2 B 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
3 C 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
4 D 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
5 E 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
6 F 6145702 0.690 Wilcoxon rank sum test with continuity correction two.sided
谁能看到我做错了什么?感谢您的帮助