使用R和ddply“相关性和显着性超过30对”

时间:2012-03-15 13:45:31

标签: r correlation plyr pearson significance

我在这里找到问题的部分解决方案:How to calculate correlation In 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是单独的时,它们经常出现在我的情况下。

所以我需要计算r,只要有超过30对左右的数据,如果我想要的NA少。

第二个问题是cor.test的详细输出会使结果数据框膨胀 - 即使我唯一需要的是p值。也就是说,如果p实际上是,我理解它是什么。这是r的意义吗?

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

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

1 个答案:

答案 0 :(得分: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