Получить одно значение из любых статистических тестов (например, значение spearman rho из cor.test) - PullRequest
17 голосов
/ 10 июля 2011

Статистика теста в R выводит множество описаний. Хотя они полезны, как мы можем просто выводить или извлекать отдельные значения?

> cor.test(x,y,method="spearman", exact=F)

        Spearman's rank correlation rho

data:  x and y 
S = 12767993, p-value = 0.0001517
alternative hypothesis: true rho is not equal to 0 
sample estimates:
      rho 
-0.188074 

в частности, что нужно сделать, чтобы получить эти значения 0,0001517 и -0,188074 , чтобы я мог сохранить их для дальнейшего анализа?

Ответы [ 3 ]

29 голосов
/ 10 июля 2011

Вы можете использовать $ подмножество тестового объекта.Соответствующие имена p.value и estimate.

> tst<-cor.test(1:10,rnorm(10),method="spearman")
> tst

        Spearman's rank correlation rho

data:  1:10 and rnorm(10) 
S = 140, p-value = 0.6818
alternative hypothesis: true rho is not equal to 0 
sample estimates:
      rho 
0.1515152 

.

> tst$p.value
[1] 0.6818076
> tst$estimate
      rho 
0.1515152 

Редактировать

Другие ответы указывают на то, чтоВы можете исследовать структуру объекта с помощью str, чтобы найти имена для использования с поднабором $.Вы также можете узнать имена с помощью names:

> names(tst)
[1] "statistic"   "parameter"   "p.value"     "estimate"    "null.value" 
[6] "alternative" "method"      "data.name" 

Еще одна вещь, которую следует учитывать, это то, что вы смотрите на печатную версию объекта, и метод печати может выполнять некоторые вычисления (это не так.не в этом случае).Вы можете проверить класс объекта с помощью class(tst), который показывает, что он имеет класс htest.print.htest - это соответствующий метод печати, но он невидим, поэтому для его просмотра используйте getAnywhere(print.htest).

17 голосов
/ 10 июля 2011
test.res <- cor.test(x,y,method="spearman", exact=F)

Используйте str (test.res), чтобы увидеть структуру вашего объекта

> str(test.res)
List of 8
 $ statistic  : Named num 182
  ..- attr(*, "names")= chr "S"
 $ parameter  : NULL
 $ p.value    : num 0.785
 $ estimate   : Named num -0.103
  ..- attr(*, "names")= chr "rho"
 $ null.value : Named num 0
  ..- attr(*, "names")= chr "rho"
 $ alternative: chr "two.sided"
 $ method     : chr "Spearman's rank correlation rho"
 $ data.name  : chr "1:10 and rnorm(10)"
 - attr(*, "class")= chr "htest"

Любой из них доступен с использованием нотации $. Если вы ищете p.value, используйте следующее:

test.res$p.value
6 голосов
/ 10 июля 2011
test.res <- cor.test(x,y,method="spearman", exact=F)
test.res[1:8]

то, что вы ищете, будет там.

для конкретных значений добавьте еще один префикс индекса следующим образом:

test.res[1][1]

, чтобы найти конкретный элемент, который вы могли бы str(test.res) чтобы найти его местоположение и заменить его, например, test.res[1][5]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...