Вывод 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       
Другие вопросы по тегам