Як отримати результати постсоціального тесту Tukey HSD у таблиці, що показує згруповані пари?


13

Я хотів би провести пост-хок-тест TukeyHSD після моєї двосторонньої Anova з R, отримавши таблицю, що містить відсортовані пари, згруповані за суттєвою різницею. (Вибачте за формулювання, я все ще нова в статистиці.)

Я хотів би мати щось подібне:

введіть тут опис зображення

Отже, згруповані з зірками чи літерами.

Будь-яка ідея? Я перевірив функцію HSD.test()з agricolaeпакету, але, схоже, вона не обробляє двосторонні таблиці.

Відповіді:


22

agricolae::HSD.testФункція робить саме це, але вам потрібно буде дати йому знати , що ви зацікавлені в перспективі взаємодії . Ось приклад із набором даних Stata:

library(foreign)
yield <- read.dta("http://www.stata-press.com/data/r12/yield.dta")
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

Це дає результати, показані нижче:

Groups, Treatments and means
a        2.1     51.17547 
ab       4.1     50.7529 
abc      3.1     47.36229 
 bcd     1.1     45.81229 
  cd     5.1     44.55313 
   de    4.0     41.81757 
    ef   2.0     38.79482 
    ef   1.0     36.91257 
     f   3.0     36.34383 
     f   5.0     35.69507 

Вони відповідають тому, що ми отримали б із такими командами:

. webuse yield
. regress yield fertilizer##irrigation
. pwcompare fertilizer#irrigation, group mcompare(tukey)

-------------------------------------------------------
                      |                           Tukey
                      |     Margin   Std. Err.   Groups
----------------------+--------------------------------
fertilizer#irrigation |
                 1 0  |   36.91257   1.116571    AB    
                 1 1  |   45.81229   1.116571      CDE 
                 2 0  |   38.79482   1.116571    AB    
                 2 1  |   51.17547   1.116571         F
                 3 0  |   36.34383   1.116571    A     
                 3 1  |   47.36229   1.116571       DEF
                 4 0  |   41.81757   1.116571     BC   
                 4 1  |    50.7529   1.116571        EF
                 5 0  |   35.69507   1.116571    A     
                 5 1  |   44.55313   1.116571      CD  
-------------------------------------------------------
Note: Margins sharing a letter in the group label are
      not significantly different at the 5% level.

Пакет мультикомплектів також пропонує символічну візуалізацію ("відображення компактних літер", див. Алгоритми компактних літерних дисплеїв: порівняння та оцінка для більш детальної інформації) значних парних порівнянь, хоча він не подає їх у табличному форматі. Однак він має графічний метод, який дозволяє зручно відображати результати, використовуючи боксплотси. Порядок презентації також може бути змінений (опція decreasing=), і він має набагато більше варіантів для кількох порівнянь. Також є пакет multcompView, який розширює ці функції.

Ось той же приклад, проаналізований із glht:

library(multcomp)
tuk <- glht(amod, linfct = mcp(tx = "Tukey"))
summary(tuk)          # standard display
tuk.cld <- cld(tuk)   # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)

Лікування, що ділиться одним і тим же листом, не суттєво відрізняється на вибраному рівні (за замовчуванням, 5%).

введіть тут опис зображення

До речі, є новий проект, який зараз розміщується на R-Forge, який виглядає перспективно: factorplot . Він включає в себе відображення на основі рядків та літер, а також огляд матриці (через рівневий графік) всіх парних порівнянь. Тут можна знайти робочий документ: factorplot: Покращення представлення простих контрастів у ГММ


Дуже дякую за цю вичерпну відповідь! Я спробую ці різні методи, як тільки отримаю кілька хвилин. Ура!
страгу

Я спробував функцію пакету мультикомплектів, поставлений, коли я використовую функцію 'cld ()', я отримую помилку 'Помилка: sapply (split_names, length) == 2 - це не все ПРАВИЛЬНО' Будь-яка ідея чому?
stragu

1
@chtfn Здається, проблема з мітками змінних. Швидкий огляд вихідного коду вказує на те, що це повідомлення про помилку надходить з insert_absorb()якого намагається отримати пару процедур. Ви можете спробувати змінити роздільник, який ви використовували для кодування рівнів вашого терміна взаємодії? Без робочого прикладу важко сказати, що сталося.
chl

Я зрозумів це: у моїх генотипах та іменах лікування були пункти, і оскільки qlht () використовує крапку для поділу назви пар, це вийшло. Дуже дякую за всю вашу допомогу, chl! :)
stragu

3
Я помітив сьогодні , що тепер я повинен додати console=TRUEв HSD.test()для того , щоб отримати таблиці, в разі , якщо хто - то намагається це і не бачить ніякого результату. Можливо, оновлення agricolae.
страгу

2

Існує функція, яка називається TukeyHSD, згідно з файлом довідки, обчислює набір довірчих інтервалів на різниці між засобами рівнів фактора із заданою сімейною ймовірністю покриття. Інтервали базуються на статистиці діапазону Studentized, методі Тукі "Чесна суттєва різниця". Це робить те, що ти хочеш?

http://stat.ethz.ch/R-manual/R-patched/library/stats/html/TukeyHSD.html


Спасибі за вашу відповідь. Так, я спробував цю функцію, але вона дає мені сирі списки порівнянь. Мені б хотілося, щоб вони були згруповані як на зображенні в моєму запитанні, щоб було чітке уявлення про те, яка група відрізняється до якої групи, і врешті додайте назви груп у мої графіки (наприклад: a, ab, abc, bc , в)
страгу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.