Тест Левена, извлекающий значение p?

Я какое-то время пытался использовать R, и я не могу извлечь значение p (значение для «Pr (> f))» для теста levene. Обычный подход к статистическому тесту R состоит в том, чтобы завершить тестовую команду $p.value в конце. Однако это, похоже, не работает для теста Левена, как показано:

> leveneTest(all.vec,factors)
Levene's Test for Homogeneity of Variance (center = median)
        Df F value    Pr(>F)    
group    3  8.9261 6.982e-06 ***
      2607                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> leveneTest(all.vec,factors)$p.value
NULL

Кроме того, аналогичным образом для теста jarque bera я не могу извлечь значение p.value таким же образом.

> jarque.bera.test(lg.day.ret.vec)

    Jarque Bera Test

data:  lg.day.ret.vec
X-squared = 63087.83, df = 2, p-value < 2.2e-16

> jarque.bera.test(lg.day.ret.vec)$p.value
X-squared 
        0 

Спасибо за помощь


person Vik    schedule 19.02.2015    source источник


Ответы (3)


Есть несколько способов. Вот воспроизводимый пример для работы:

library("car")
test <- with(Moore, leveneTest(conformity, fcategory))

Во-первых, посмотрите на структуру возвращаемого объекта, так как это обычно говорит вам, с чем вы играете:

str(test)

это дает:

> str(test)
Classes ‘anova’ and 'data.frame':   2 obs. of  3 variables:
 $ Df     : int  2 42
 $ F value: num  0.046 NA
 $ Pr(>F) : num  0.955 NA
 - attr(*, "heading")= chr "Levene's Test for Homogeneity of Variance (center = median)"

Мы видим, что объект является фреймом данных и что значения p находятся в 3-м столбце. Следовательно, любое из следующих действий будет извлекать данные

test[,3]          # pull out the entire 3rd column
test[1,3]         # pull out only the none NA p-value
test$`Pr(>F)`     # pull out the P-value column by name
test$`Pr(>F)`[1]  # as above, but then take only the 1st element

Это дает для приведенного выше примера:

> test[,3]
[1] 0.9550975        NA
> test[1,3]
[1] 0.9550975
> test$`Pr(>F)`
[1] 0.9550975        NA
> test$`Pr(>F)`[1]
[1] 0.9550975
person Gavin Simpson    schedule 19.02.2015
comment
Это работает с тестом Левене, но с тестом Харке Бера кажется, что решение равно 0, что неверно. - person Vik; 21.02.2015
comment
Если вы скажете мне, в каком пакете находится эта функция, я посмотрю, но теперь вы сможете разобраться с этим самостоятельно. Назначьте результат теста объекту, скажем, test, затем выполните str(test) и найдите, где хранится значение p. - person Gavin Simpson; 21.02.2015

Вы также можете использовать функцию levene.test в пакете lawstat:

> df<-data.frame(group=c(rep(LETTERS[1],20),rep(LETTERS[2],20)),
               value=c(sample(1:10,size=20,replace=T),sample(30:40,size=20,replace=T)))

> df
   group value
1      A     8
2      A     4
3      A     8
4      A     3
5      A     2
6      A     3
7      A     4
8      A     5
9      A     8
10     A     6
11     A     1
12     A     4
13     A     9
14     A     7
15     A     8
16     A     4
17     A     2
18     A    10
19     A     8
20     A     7
21     B    40
22     B    37
23     B    39
24     B    30
25     B    30
26     B    30
27     B    34
28     B    39
29     B    40
30     B    34
31     B    30
32     B    33
33     B    32
34     B    39
35     B    36
36     B    37
37     B    35
38     B    39
39     B    34
40     B    34

> library(lawstat)
> levene.test(df$value,df$group,location='median')

modified robust Brown-Forsythe Levene-type test based on the absolute deviations from the median

data:  df$value
Test Statistic = 1.7537, p-value = 0.1933

> levene.test(df$value,df$group,location='median')$p.value
[1] 0.1933243
person ccapizzano    schedule 19.02.2015

Вы также можете написать leveneTest(all.vec,factors)$F value

person not_now_d    schedule 18.12.2020