Стандартная статистика:: модуль kruskal.test позволяет вычислять тест kruskal-wallis на набор данных:
>>> data(diamonds)
>>> kruskal.test(price~carat, data=diamonds)
Kruskal-Wallis rank sum test
data: price by carat by color
Kruskal-Wallis chi-squared = 50570.15, df = 272, p-value < 2.2e-16
Это корректно, это дает мне вероятность, что у всех групп в данных есть среднее то же.
Однако я хотел бы иметь детали для каждого парного сравнения, как то, если ромбы цветов D и E имеют ту же среднюю цену, как некоторое другое программное обеспечение делает (SPSS), когда Вы просите тест Kruskal.
Я нашел kruskalmc от пакета pgirmess, который позволяет мне делать то, что я хочу сделать:
> kruskalmc(diamonds$price, diamonds$color)
Multiple comparison test after Kruskal-Wallis
p.value: 0.05
Comparisons
obs.dif critical.dif difference
D-E 571.7459 747.4962 FALSE
D-F 2237.4309 751.5684 TRUE
D-G 2643.1778 726.9854 TRUE
D-H 4539.4392 774.4809 TRUE
D-I 6002.6286 862.0150 TRUE
D-J 8077.2871 1061.7451 TRUE
E-F 2809.1767 680.4144 TRUE
E-G 3214.9237 653.1587 TRUE
E-H 5111.1851 705.6410 TRUE
E-I 6574.3744 800.7362 TRUE
E-J 8649.0330 1012.6260 TRUE
F-G 405.7470 657.8152 FALSE
F-H 2302.0083 709.9533 TRUE
F-I 3765.1977 804.5390 TRUE
F-J 5839.8562 1015.6357 TRUE
G-H 1896.2614 683.8760 TRUE
G-I 3359.4507 781.6237 TRUE
G-J 5434.1093 997.5813 TRUE
H-I 1463.1894 825.9834 TRUE
H-J 3537.8479 1032.7058 TRUE
I-J 2074.6585 1099.8776 TRUE
Однако этот пакет только допускает одну категорическую переменную (например, Я не могу изучить цены, кластеризируемые цветом и каратом, как я могу сделать с kruskal.test), и я ничего не знаю о pgirmess пакете, сохраняется ли это или нет, или если это тестируется.
Можно ли рекомендовать мне пакет для выполнения теста Kruskal-Wallis, который возвращает детали для каждого сравнения? Как Вы решили бы проблему?
Еще один подход, помимо kruskal :: Agricolae, упомянутый Мареком, - это тест Nemenyi-Damico-Wolfe-Dunn, реализованный на странице справки для oneway_test в пакете монет, который использует multcomp. Используя настройку Хадли и уменьшив значение B = для функции приближаться (), чтобы она завершилась за конечное время:
#updated translation of help page implementation of NDWD
NDWD <-
independence_test(dv ~ iv, data = sum_codings1, distribution = approximate(B = 10000),
ytrafo = function(data) trafo(data, numeric_trafo = rank_trafo),
xtrafo = mcp_trafo(iv = "Tukey"))
### global p-value
print(pvalue(NDWD))
### sites (I = II) != (III = IV) at alpha = 0.01 (page 244)
print(pvalue(NDWD, method = "single-step"))
Более стабильные результаты для большего набора данных могут потребовать увеличения значения B и увеличения терпения пользователя.
Январь: 2012 г .: Недавно в R-help было опубликовано сообщение о неожиданных результатах использования этого метода, поэтому я переслал это письмо специалисту по сопровождению. Марк Диффорд сказал, что подтвердил наличие проблем и предложил альтернативные тесты с пакетом nparcomp: https://stat.ethz.ch/pipermail/r-help/2012-January/300100.html
Также были на той же неделе пара других предложений по rhelp для post-hoc контрастов с тестами KW:
kruskalmc, предложенный Марио Гарридо Эскудеро и
rms :: polr
, за которым следует rms :: Contrasts
, предложенный Фрэнком Харреллом https://stat.ethz.ch/pipermail/r-help/2012-January/300329.html
ноя 2015 г. : Согласитесь с toto_tico, что код страницы справки пакета монет был изменен за прошедшие годы. На странице справки ? Independent_test
теперь предлагается многовариантный тест KW, а на странице справки ? Oneway_test
предыдущая реализация заменена приведенным выше кодом с использованием функции independent_test
.
Я бы подумал, что вы сможете сделать следующее:
data(diamonds, package = "ggplot2")
library(coin)
library(multcomp)
kt <- kruskal_test(price ~ clarity, data = diamonds)
glht(kt, mcp(clarity = "Tukey"))
Но похоже, что multcomp
не поддерживает монеты
объекты (пока?).
К сожалению, я не знаю такой функции. Если его еще нет, было бы интересной задачей создать функцию, которая возвращает матрицу со всеми попарными сравнениями обработок. Контраст считается значимым, если выполняется следующее неравенство
(источник: statsdirect.com )
где T - статистика критерия Краскела-Уоллиса для k выборок, S ^ 2 - знаменатель статистика T, N - общее число (все ni), Ri - сумма рангов (из всех объединенных выборок) для i-й выборки, а t - квантиль из t-распределения Стьюдента по Nk степеням свободы.
Я знаю, что не особо помог :)
Я тоже жду ответа получше