R: Как извлечь доверительный интервал из функции cor.test

Я пытаюсь извлечь 95 percent confidence interval из результата корреляции Пирсона.

Мой вывод выглядит так:

Pearson's product-moment correlation

data:  newX[, i] and newY
t = 2.1253, df = 6810, p-value = 0.0336
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.001998576 0.049462864
sample estimates:
       cor 
0.02574523 

Я получаю это со следующим кодом

t <- apply(FNR[, -1], 2, cor.test, FNR$HDL, method="pearson")

Буду признателен за любую помощь. Спасибо.


person user6108949    schedule 01.07.2016    source источник


Ответы (2)


Давайте посмотрим на страницу ?cor.test, а затем изменим последний пример, чтобы он напоминал ваш код:

t <- apply(USJudgeRatings[, -1], 2, cor.test, USJudgeRatings$CONT, method="pearson")

Это первый подсписок возвращаемого значения:

> str(t[1])
List of 1
 $ INTG:List of 9
  ..$ statistic  : Named num -0.861
  .. ..- attr(*, "names")= chr "t"
  ..$ parameter  : Named int 41
  .. ..- attr(*, "names")= chr "df"
  ..$ p.value    : num 0.395
  ..$ estimate   : Named num -0.133
  .. ..- attr(*, "names")= chr "cor"
  ..$ null.value : Named num 0
  .. ..- attr(*, "names")= chr "correlation"
  ..$ alternative: chr "two.sided"
  ..$ method     : chr "Pearson's product-moment correlation"
  ..$ data.name  : chr "newX[, i] and USJudgeRatings$CONT"
  ..$ conf.int   : atomic [1:2] -0.417 0.174
  .. ..- attr(*, "conf.level")= num 0.95
  ..- attr(*, "class")= chr "htest"

Чтобы получить все узлы conf.int из этого списка с 11 элементами, используйте sapply с функцией "[[" и задайте символьное имя "conf.int":

> sapply(t, "[[", "conf.int")
           INTG       DMNR       DILG       CFMG       DECI       PREP
[1,] -0.4168591 -0.4339992 -0.2890276 -0.1704402 -0.2195110 -0.2898732
[2,]  0.1741182  0.1537524  0.3115762  0.4199860  0.3770813  0.3107427
           FAMI       ORAL       WRIT       PHYS       RTEN
[1,] -0.3234896 -0.3112193 -0.3396845 -0.2501717 -0.3306462
[2,]  0.2768389  0.2893898  0.2599541  0.3489073  0.2694228

Функция sapply возвращает результат матрицы, ориентированной на столбцы (по крайней мере, с упрощенным значением по умолчанию = TRUE), если задан набор аргументов, которые возвращают значения одинаковой длины, как в данном случае.

person IRTFM    schedule 01.07.2016
comment
В качестве альтернативы вы можете использовать sapply(t, broom::tidy) и получить доверительные интервалы из столбцов результирующего фрейма данных. - person Benjamin; 01.07.2016

cor.test возвращает список с различными элементами, включая доверительный интервал. Вы можете увидеть структуру объекта, возвращаемого cor.test, следующим образом (используя встроенный фрейм данных mtcars для иллюстрации):

ct = cor.test(mtcars$mpg, mtcars$wt, method="pearson")

str(ct)
List of 9
 $ statistic  : Named num -9.56
  ..- attr(*, "names")= chr "t"
 $ parameter  : Named int 30
  ..- attr(*, "names")= chr "df"
 $ p.value    : num 1.29e-10
 $ estimate   : Named num -0.868
  ..- attr(*, "names")= chr "cor"
 $ null.value : Named num 0
  ..- attr(*, "names")= chr "correlation"
 $ alternative: chr "two.sided"
 $ method     : chr "Pearson's product-moment correlation"
 $ data.name  : chr "mtcars$mpg and mtcars$wt"
 $ conf.int   : atomic [1:2] -0.934 -0.744
  ..- attr(*, "conf.level")= num 0.95
 - attr(*, "class")= chr "htest"

Теперь извлеките доверительный интервал:

ct$conf.int[1:2]   

[1] -0.9338264 -0.7440872

person eipi10    schedule 01.07.2016