Вывод N и значение для корреляции Пирсона в R
У меня 400 отделов магазина, и я управляю (Пирсоном) корреляциями между всеми отделами. Как вывести "N" (количество случаев) и уровень значимости (значение p)?
Я использую функцию cor. Вот мой текущий код, который работает нормально:
numprod <- ncol(data) - 2;
matrix <- as.matrix(data[ ,2:numprod]);
AllChannels <- cbind(matrix(nrow = numprod-1,"All channels"),cor(matrix, use="all.obs", method="pearson"));
В SPSS при запуске корреляции выводятся коэффициент корреляции, N и значимость. Это мой желаемый результат.
Спасибо всем!
Лукас
1 ответ
Если это просто длина одного из векторов, используйте length
, Если вы хотите, чтобы логические вычисления для коэффициента корреляции равнялись 0, используйте cor.test (в качестве страницы справки для ?cor
говорит вам.) Если это число степеней свободы для теста, то посмотрите более внимательно на ?cor.test
,
> cor.test(1:10,2:11)
Pearson's product-moment correlation
data: 1:10 and 2:11
t = 134217728, df = 8, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
1 1
sample estimates:
cor
1
Результатом cor.test будет список, поэтому использовать его будет бесполезно. cbind
, Пакет Hmisc имеет rcorr
:
install.packages("Hmisc")
library(Hmisc)
x <- c(-2, -1, 0, 1, 2)
y <- c(4, 1, 0, 1, 4)
z <- c(1, 2, 3, 4, NA)
v <- c(1, 2, 3, 4, 5)
rcorr(cbind(x,y,z,v))
# ======== Returns a list with three elements:
> rcorr(cbind(x,y,z,v))
x y z v
x 1 0.00 1.00 1
y 0 1.00 -0.75 0
z 1 -0.75 1.00 1
v 1 0.00 1.00 1
n
x y z v
x 5 5 4 5
y 5 5 4 5
z 4 4 5 4
v 5 5 4 5
P
x y z v
x 1.0000 0.0000 0.0000
y 1.0000 0.2546 1.0000
z 0.0000 0.2546 0.0000
v 0.0000 1.0000 0.0000