Часть решения моей проблемы я нашел здесь: Как рассчитать корреляцию В 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). Но это терпит неудачу в случае «недостаточно конечных наблюдений», поэтому, когда некоторые идентификаторы являются одиночными, что довольно часто в моем случае.
Поэтому мне нужно вычислять r, только если существует более 30 пар данных или меньше, я хочу NA.
Вторая проблема заключается в том, что подробный вывод cor.test
раздувает результирующий фрейм данных - даже если единственное, что я хотел, это p-значение. То есть, если р на самом деле, то, что я понимаю, что это. Это значение г?
Я знаю только t-критерий, чтобы вычислить значимость r.
{Формула t-критерия-значения: t = (r·(n-2)^0.5)/(1-r^2)^0.5)
- но значение t еще не имеет значения, в противном случае я бы попытался внедрить формулу в оператор ddply
}