【发布时间】:2016-05-23 13:42:36
【问题描述】:
这是我第一次在这里发帖,我希望这一切都在正确的地方。一段时间以来,我一直在使用 R 进行基本的统计分析,但还没有真正将它用于任何具有计算挑战性的事情,而且我在 R 的编程/数据操作方面非常初学者。
我拥有单个流域内 323 个地块中 72 种植物物种的存在/不存在(二进制)数据。数据框有 323 行,每行代表一个地块,有 72 列,每列代表一个物种。这是前 4 列的样本(缺少一些行号,因为 323 个地块是大量预先分配的地块的子集,并非所有地块都进行了调查):
> head(plots[,1:4])
Agrostis.canina Agrostis.capillaris Alchemilla.alpina Anthoxanthum.odoratum
1 1 0 0 0
3 0 0 0 0
4 0 0 0 0
5 0 0 0 0
6 0 0 0 0
8 0 0 0 0
我想确定该流域中的任何植物物种是否与其他任何植物物种相关,如果是,是正相关还是负相关。为此,我想对每个物种组合进行卡方独立性检验。我需要为每个物种x物种比较创建一个 2x2 列联表,对每个列联表运行卡方检验,并保存输出。最终,我想通过物种测试得出所有物种的列表或矩阵,以显示物种组合是否具有积极、消极或没有显着关联。我还想合并一些代码,仅当所有预期值都大于 5 时才将关联显示为正数。
我已经开始编写以下函数:
CHI <- function(sppx, sppy)
{test <- chisq.test(table(sppx, sppy))
result <- c(test$statistic, test$p.value,
sign((table(sppx, sppy) - test$expected)[2,2]))
return(result)
}
这将返回以下内容:
> CHI(plots$Agrostis.canina, plots$Agrostis.capillaris)
X-squared
1.095869e-27 1.000000e+00 -1.000000e+00
Warning message:
In chisq.test(chitbl) : Chi-squared approximation may be incorrect
现在我正在尝试找出一种方法来将此函数应用于数据框中的每个物种x物种组合。我基本上希望 R 获取每一列,将 CHI 函数依次应用于该列和其他列,依此类推,从数据框中减去每一列,这样就不会对同一物种对进行两次测试.我尝试了各种方法来尝试使用“for”循环或“apply”函数,但无法弄清楚这一点。 我希望这足够清楚。这里的任何帮助将不胜感激。我曾尝试在网上寻找针对此特定问题的现有解决方案,但未能找到任何真正有帮助的解决方案。如果有人可以将我链接到对此的现有答案,那也很棒。
【问题讨论】:
标签: r chi-squared