Матрица корреляции с dplyr, tidyverse и метлой - матрица P-значения - PullRequest
0 голосов
/ 22 мая 2018

все.Я хочу получить значение p из корреляционной матрицы, используя dplyr и / или пакеты метлы и тестируя несколько переменных одновременно .Я знаю о других методах, но dplyr кажется мне проще и понятнее.Кроме того, dplyr потребуется сопоставить каждую переменную, чтобы получить конкретное значение p, что делает процесс более простым и быстрым.

Я проверил другие ссылки, но они не работали для этого вопроса (пример )1 , пример 2 , пример 3 ) Когда я использую этот код, сообщаются коэффициенты корреляции.Однако P-значения не являются.

agreg_base_tipo_a %>% 
  dplyr::select(S2.RT, BIS_total, IDATE, BAI, ASRS_total) %>% 
  do(as.data.frame(cor(., method="spearman", use="pairwise.complete.obs")))

Пожалуйста, проверьте этот воспроизводимый код на слово:

set.seed(1164)

library(tidyverse)
ds <- data.frame(id=(1) ,a=rnorm(10,2,1), b=rnorm(10,3,2), c=rnorm(5,1,05))

ds %>% 
  select(a,b,c) %>% 
  do(as.data.frame(cor(., method="spearman", use="pairwise.complete.obs")))

1 Ответ

0 голосов
/ 22 мая 2018

Этот ответ основан на комментарии akrun к этому сообщению .Используя функцию rcorr, мы можем вычислить корреляции и значения P.Для доступа к этим компонентам используйте ds_cor$r и ds_cor$P.

set.seed(1164)

library(tidyverse)
library(Hmisc)

ds <- data.frame(id=(1) ,a=rnorm(10,2,1), b=rnorm(10,3,2), c=rnorm(5,1,05))

ds_cor <- ds %>%
  select(-id) %>% 
  as.matrix() %>%
  rcorr(type = "spearman")

ds_cor
#    a     b     c
# a  1.00  0.28 -0.42
# b  0.28  1.00 -0.25
# c -0.42 -0.25  1.00
# 
# n= 10 
# 
# 
# P
#   a      b      c     
# a        0.4250 0.2287
# b 0.4250        0.4929
# c 0.2287 0.4929       
...