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