2015-08-31 4 views
0

Я работаю над измерением корреляции между месяцем & Temp из данных Mitchell (поставляется с пакетом alr3). Я хотел округлять коэффициент до ближайших тысячных, но когда я добавил round() в код, который я получил эту ошибку:Почему я не могу обойти cor.test

Error in round(cor.test(Month, Temp), 3) : 
    non-numeric argument to mathematical function 

Однако, если я поменять cor.test с cor Округления работ. Как насчет cor.test вызывает проблему? И как я могу настроить свой код (ниже), чтобы позволить округление работать?

with(Mitchell, round(cor.test(Month, Temp), 3)) 
+2

Согласно документации (? Смотрите в раздел «Значение» в 'cor.test'),' cor.test' возвращает список класса "htest". 'cor', с другой стороны, возвращает числовое значение (которое совпадает с значениями' cor.test() $ evaluation'). – Benjamin

ответ

2

См. Файл справки для cor.test. Функция cor.test возвращает список с атрибутом класса htest, а не числовым вектором, требуемым раундом.

Пример из файла справки:

x<-cor.test(~ CONT + INTG, data = USJudgeRatings) 

is.numeric(x) 
#> [1] FALSE 
class(x) 
#> [1] "htest" 

Вы просто хотите довольно печатать, используя различное количество цифр, в этом случае вы можете посмотреть на функции печати для данного класса.

getAnywhere(print.htest) 

Тем не менее, несмотря на то, есть digits аргумент, он соблюдается только для значения р. Таким образом, вы просто должны сделать свое собственное округление:

structure(rapply(z,function(x) if(is.numeric(x)) round(x,3) else x,how="replace"), 
    class="htest") 
 
     Pearson's product-moment correlation 

data: CONT and INTG 
t = -0.861, df = 41, p-value = 0.395 
alternative hypothesis: true correlation is not equal to 0 
95 percent confidence interval: 
-0.417 0.174 
sample estimates: 
    cor 
-0.133 
Смежные вопросы