Получите одно значение из любых статистических тестов (например, значение 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, чтобы сохранить их для дальнейшего анализа?
Ответы
Ответ 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]