Подтвердить что ты не робот

Получите одно значение из любых статистических тестов (например, значение spearman rho из cor.test)

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

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

        Spearman 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, чтобы сохранить их для дальнейшего анализа?

4b9b3361

Ответ 1

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

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

        Spearman 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 

Edit

Другие ответы указывают, что вы можете исследовать структуру объекта с помощью 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) для его просмотра.

Ответ 2

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 rank correlation rho"
 $ data.name  : chr "1:10 and rnorm(10)"
 - attr(*, "class")= chr "htest"

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

test.res$p.value

Ответ 3

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]