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

使用R和ddply的“超过30对的相关性和显著性”,r,correlation,plyr,pearson,significance,R,Correlation,Plyr,Pearson,Significance,我在这里找到的问题解决方案的一部分: 除了计算皮尔逊r的cor之外,我还计算p值的cor.检验。但如果有限的观测不够,这就失败了,所以当一些ID是单独的,在我的例子中,它们经常是单独的 所以我只需要计算r,如果有超过30对的数据,如果有更少的,我想要NA 第二个问题是cor.test的详细输出会使生成的数据帧膨胀,即使我唯一想要的是p值。也就是说,如果p实际上是,我理解它是什么。这是r的意义吗 我只知道t检验,用来计算r的显著性 {t-test-value的公式:t=r·n-2^0.5/1-r^

我在这里找到的问题解决方案的一部分:

除了计算皮尔逊r的cor之外,我还计算p值的cor.检验。但如果有限的观测不够,这就失败了,所以当一些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语句中}

尝试以下方法:

> 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
试试这个:

> 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

哇!很快,很好的回答!工作起来很有魅力。谢谢:哇!很快,很好的回答!工作起来很有魅力。谢谢: