如何在 R 中运行 Kruskal-Wallis 或 Mann-Whitney 检验?

问题描述

谁能给我一个关于如何运行下面的 Kruskal-Wallis 测试的提示

我的目标:对于每个家庭来说,森林和城市之间细菌的增长(agg_rel_abund)是否有任何意义。

我在 R 中尝试过的代码kruskal.test(Habitat ~ agg_rel_abund,data = my_data) 但显然我知道那是错误的......因为我没有达到我的目标......

让我简要解释一下我的数据:

样本有F和W两种。

当样本名称以 F 开头时,表示 Habitat 来自 Urban。

当样品名称以W开头时,表示栖息地来自森林。

如果想进行 Mann-Whitey 检验,或者任何非参数检验也可以......只要能够了解每个家庭在 Forest 和 Urban 之间的细菌生长(agg_rel_abund)的重要性。

样品 栖息地 家人 agg_rel_abund
F10 城市 醋杆菌科 0
F2 城市 醋杆菌科 0
F3 城市 醋杆菌科 0
F7 城市 醋杆菌科 0.000132118
F8 城市 醋杆菌科 0
W10 森林 醋杆菌科 0
W13 森林 醋杆菌科 0
W3 森林 醋杆菌科 0
W6 森林 醋杆菌科 0
W9 森林 醋杆菌科 0
F10 城市 杆菌科 0.00488836
F2 城市 杆菌科 0.000924825
F3 城市 杆菌科 0.001056943
F7 城市 杆菌科 0.002378121
F8 城市 杆菌科 0.002906593
W10 森林 杆菌科 0.000264236
W13 森林 杆菌科 0.027876866
W3 森林 杆菌科 0.001585414
W6 森林 杆菌科 0.001056943
W9 森林 杆菌科 0.004492007
F10 城市 肉杆菌科 0
F2 城市 肉杆菌科 0
F3 城市 肉杆菌科 0
F7 城市 肉杆菌科 0
F8 城市 肉杆菌科 0.000132118
W10 森林 肉杆菌科 0
W13 森林 肉杆菌科 0
W3 森林 肉杆菌科 0.000132118
W6 森林 肉杆菌科 0

解决方法

这个问题应该经过交叉验证。

如果您想知道增长是否随家庭而变化,而不管栖息地如何,您可以使用 agg_rel_abund 作为因变量,Family 作为自变量进行 kruskal.test。

kruskal.test(agg_rel_abund ~ Habitat,data = my_data)

Kruskal-Wallis rank sum test

data:  agg_rel_abund by Habitat
Kruskal-Wallis chi-squared = 0.0051556,df = 1,p-value = 0.9428

如果确定不同家族的生长没有差异,可以直接以agg_rel_abund为因变量,Habitat为自变量,直接进行kruskal.test。

kruskal.test(agg_rel_abund ~ Habitat,p-value = 0.9428

对于每个栖息地,您可以执行 kruskal.test 来检查家庭之间生长差异的显着性

library(dplyr)

    for (i in unique(family$Habitat)) {
  x <- kruskal.test(agg_rel_abund ~ family,data = family[family$Habitat==i,])
  out[[i]] <- c(Kruskal.Wallis.H = x[["statistic"]][["Kruskal-Wallis chi-squared"]],Sig = x[["p.value"]],df = x[["parameter"]][["df"]])
  }

out <- bind_rows(out)
out$Habitat <- unique(family$Habitat)