1

我在这里找到了我的问题的部分解决方案:如何计算 R 中的相关性

set.seed(123)
X <- data.frame(ID = rep(1:2, each=5), a = sample(1:10), b = sample(1:10))
ddply(X, .(ID), summarize, cor_a_b = cor(a,b))

除了cor(计算 Pearsons r)之外,我还计算cor.test(对于 p 值)。但是在“没有足够的有限观察”的情况下这会失败,所以当一些 ID 是单独的时,在我的情况下它们经常出现。

因此,只有当数据对超过 30 对时,我才需要计算 r,如果更少,我想要 NA。

第二个问题是冗长的输出cor.test夸大了结果数据框——即使我唯一想要的就是 p 值。也就是说,如果 p 实际上是,我理解它是什么。是r的意义吗?

我只知道 t 检验,来计算 r 的显着性。

{t-test-value的公式:t = (r·(n-2)^0.5)/(1-r^2)^0.5)-但t还不是意义,否则我会尝试将公式实现到ddply语句中}

4

1 回答 1

4

试试这个:

> d <- data.frame(id = rep(1:3, c(5, 1, 10)), a = rnorm(16), b = rnorm(16))
> ddply(d, .(id), summarize, cor_a_b = if(length(id) < 3) {NA} else {cor.test(a, b)$p.value})
  id   cor_a_b
1  1 0.4393595
2  2        NA
3  3 0.5602855
于 2012-03-15T14:00:04.733 回答