【问题标题】:R Kruskal-Wallis with multiple factors具有多个因素的 R Kruskal-Wallis
【发布时间】:2016-05-07 13:55:44
【问题描述】:

我正在寻求对我的一组数据执行 Kruskal-Wallis 检验以获取大量因素的帮助。我可以针对单一因素进行测试,例如 AD_1yr:

kruskal.test(Shannon ~ AD_1y, data=comm)

但是我有 50 多个因素要测试,并且希望有一个可以输入的代码来执行所有因素的测试,而无需手动执行 50 次不同的测试。

【问题讨论】:

  • 注:您可能需要考虑某种类型的校正计算,因为您正在制作multiple comparisons

标签: r kruskal-wallis


【解决方案1】:

我们可以使用lapply 循环遍历factor 列,使用“shannon”列创建data.frame 并执行kruskal.test

allfactorcolumns <- sapply(comm, is.factor)
lst <- lapply(comm[allfactorcolumns], function(x) 
    kruskal.test(Shannon~., data= data.frame(x, comm['Shannon'])))

如果我们需要提取'p.value'、'df'等

do.call(rbind, lapply(lst, function(x) data.frame(Pval= x$p.value, 
                     stat= x$statistic, df= x$parameter)))

【讨论】:

  • @user2988430 感谢您的反馈。我忘了结束)
  • OK 让它运行,但看起来它针对所有因素运行了 1 次测试。 data: Shannon by x Kruskal-Wallis chi-squared = 79, df = 79, p-value = 0.4788 我希望它分别针对每个因素运行 1 次测试。
  • @user2988430 实际上,它是用 'Shannon' 分别运行每个因子。
  • 嗯好的。我想得到一个输出,它显示了 each 因子的结果卡方、df 和 p 值。这可能吗?
  • @akun 在 lapply(lst, function(x) data.frame(Pval = x$p.value, stat = x$statistic, : object 'lst' not found
猜你喜欢
  • 2015-11-23
  • 2019-06-14
  • 2021-09-06
  • 2018-03-14
  • 2020-04-17
  • 2018-06-16
  • 2015-05-03
  • 2018-02-14
  • 1970-01-01
相关资源
最近更新 更多