Как получить точное значение p теста Крускала-Уоллиса в R?

Как получить точное значение p теста Краскела-Уоллиса (например, с 3 группами) в R?

Пример данных:

df <- data.frame(
    dv = c(0.80, 0.83, 1.89, 1.04, 1.45, 1.38, 1.91, 1.64, 0.73, 1.46,
           1.15, 0.88, 0.90, 0.74, 1.21),
    group = factor(rep(c("A", "B", "C"), c(5, 5, 5))))

Я попробовал пакет coin, используя функцию kruskal_test

kruskal_test(dv ~ group, data = df,distribution= "exact")

Хотя выдает ошибку:

Error in .local(object, ...) : ‘object’ is not a two-sample problem

Если я поменяю "exact" на "approximate", он запустится, но это не точное распределение...

Есть предположения?


person Sinval    schedule 22.05.2020    source источник
comment
возможно, вам нужен парный тест   -  person akrun    schedule 23.05.2020
comment
Попробуйте combn(levels(df$group), 2, FUN = function(x) kruskal_test(dv ~ group, data = subset(df, group %in% x), distribution = 'exact'), simplify = FALSE)   -  person akrun    schedule 23.05.2020
comment
Вы пробовали stats::kruskal.test(dv ~ group, data = df)?   -  person duckmayr    schedule 23.05.2020
comment
@duckmayr, да, извините, вы правы, я как-то на мгновение запутался между kruskal.test и ks.test. Я тоже добился успеха с вашим kruskal.test подходом.   -  person Ian Campbell    schedule 23.05.2020
comment
Не беспокойтесь, @IanCampbell! Мы все время от времени оборачиваемся   -  person duckmayr    schedule 23.05.2020
comment
Да, это приближение хи-квадрат. Я видел в этом 2013, что ни один пакет этого не делает... но я хотел бы знать, кто-то уже внедрил его (помимо модуля SPSS exact...   -  person Sinval    schedule 23.05.2020
comment
Ах, теперь я понимаю вашу проблему @Sinval, мои извинения. Я не знаю решения именно вашей проблемы, извините   -  person duckmayr    schedule 23.05.2020
comment
@Sinval Я немного осмотрелся, и, насколько мне известно, еще нет реализации точного алгоритма для › 2 групп в R. Алгоритмы для этого представлены, например, в tandfonline.com/doi/abs/ 10.1081/SAC-120023876 , поэтому, если вам это действительно нужно, можно реализовать самостоятельно.   -  person duckmayr    schedule 23.05.2020
comment
Спасибо, действительно кажется, что это еще не реализовано в R. :/   -  person Sinval    schedule 23.05.2020


Ответы (1)


Причина, по которой вы получаете ошибку, заключается в том, что вы можете точно рассчитать распределение только для задачи с двумя выборками.

От 1_:

... распределение можно аппроксимировать с помощью повторной выборки Монте-Карло или точно вычислить для одномерных задач с двумя выборками, установив для распределения значение «приблизительно» или «точно» соответственно.

person Ian Campbell    schedule 22.05.2020
comment
Ну, если я установлю "approximate", это сработает. Так что это верно только для опции "exact". - person Sinval; 23.05.2020
comment
@Sinval Я нашел несколько документов, в которых говорится о точном подходе SAS, но я не смог найти ничего, реализованного в R. Если этот ответ бесполезен, я могу удалить его. - person Ian Campbell; 23.05.2020
comment
Спасибо, я знаю, что модуль IBM SPSS Statistics Exact Tests также может получить эти точные p-значения. Я действительно хотел использовать R из-за пакета exams, который я использую со своими студентами. Я хочу, чтобы они проверили точную таблицу p-значений, а затем вставили их в экзаменационную платформу Moodle. После того, как значения будут сравниваться со значениями, полученными с помощью R... - person Sinval; 23.05.2020