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(ピアソンrを計算する)に加えて、 ( cor.testp値に対して)計算します。しかし、これは「十分な有限の観測がない」場合には失敗するため、一部のIDがソロである場合、私の場合は非常に頻繁に発生します。

したがって、データのペアが30以上ある場合にのみ、rを計算する必要があります。それより少ない場合は、NAが必要です。

2番目の問題は、の冗長な出力がcor.test結果のデータフレームを膨らませることです。たとえ私が欲しかったのはp値だけだとしても。つまり、pが実際にそうである場合、私はそれが何であるかを理解しています。それはrの意味ですか?

rの有意性を計算するためのt検定しか知りません。

{t検定値の式: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 に答える