Split-Plot ANOVA: тести порівняння моделей в R


12

Як я можу перевірити ефекти в розділі ANOVA на розділеному ділянці, використовуючи відповідні порівняння моделі для використання з Xта Mаргументів anova.mlm()у R? Мені знайомий ?anova.mlmі Dalgaard (2007) [1]. На жаль, це лише щітки дизайну спліт-сюжетів. Робимо це в повністю рандомізованому дизайні з двома внутрішніми факторами:

N  <- 20  # 20 subjects total
P  <- 3   # levels within-factor 1
Q  <- 3   # levels within-factor 2
DV <- matrix(rnorm(N* P*Q), ncol=P*Q)           # random data in wide format
id <- expand.grid(IVw1=gl(P, 1), IVw2=gl(Q, 1)) # intra-subjects layout of data matrix

library(car)        # for Anova()
fitA <- lm(DV ~ 1)  # between-subjects design: here no between factor
resA <- Anova(fitA, idata=id, idesign=~IVw1*IVw2)
summary(resA, multivariate=FALSE, univariate=TRUE)  # all tests ...

Наступні порівняння моделей призводять до тих же результатів. Обмежена модель не включає ефект, про який йде мова, але всі інші ефекти того ж порядку чи нижче, повна модель додає відповідний ефект.

anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitA, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                      X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Сплит-сплат-дизайн з одним фактором всередині та одним предметом:

idB  <- subset(id, IVw2==1, select="IVw1")          # use only first within factor
IVb  <- gl(2, 10, labels=c("A", "B"))               # between-subjects factor
fitB <- lm(DV[ , 1:P] ~ IVb)                        # between-subjects design
resB <- Anova(fitB, idata=idB, idesign=~IVw1)
summary(resB, multivariate=FALSE, univariate=TRUE)  # all tests ...

Це anova()команди для копіювання тестів, але я не знаю, чому вони працюють. Чому тести наведених нижче порівнянь моделей призводять до однакових результатів?

anova(fitB, idata=idB, X=~1, test="Spherical") # IVw1, IVw1:IVb
anova(fitB, idata=idB, M=~1, test="Spherical") # IVb

Два чинники всередині суб'єкта та один фактор між суб'єктами:

fitC <- lm(DV ~ IVb)  # between-subjects design
resC <- Anova(fitC, idata=id, idesign=~IVw1*IVw2)
summary(resC, multivariate=FALSE, univariate=TRUE)  # all tests ...

Як повторити наведені вище результати з відповідними модельними порівняннями для використання з Xі Mаргументами anova.mlm()? Яка логіка цих порівнянь моделей?

EDIT: suncoolsu зазначив, що для всіх практичних цілей дані цих конструкцій повинні аналізуватися за допомогою змішаних моделей. Тим НЕ менше, я все ще хотів би зрозуміти , як відтворити результати , отримані summary(Anova())з anova.mlm(..., X=?, M=?).

[1]: Dalgaard, P. 2007. Нові функції багатоваріантного аналізу. R News, 7 (2), 2-7.


Привіт @caracal, я думаю, що ти використовуєш "Спліт-сюжетний дизайн" - це не такий спосіб, як Казелла, Джордж визначає це у своїй книзі "Статистичний дизайн". Роздільна ділянка безумовно говорить про гніздування, але це особливий спосіб нав'язування кореляційної структури. І більшу частину часу ви в кінцевому підсумку використовуєте lme4пакет, щоб відповідати моделі І НЕ lm. Але це може бути дуже специфічний погляд на книжці. Я дам коментар іншим про це. Я можу навести приклад, грунтуючись на тому, як я інтерпретую його, який відрізняється від вашого.
suncoolsu

2
@suncoolsu Термінологія в соціальних науках може бути різною, але і Кірк (1995, p512), і Максвелл, і Делані (2004, p592) називають моделі з однією між і однією з факторів "розділеної ділянки". Міжфактор забезпечує «ділянки» (аналогічні сільськогосподарському походженню).
каракал

Наразі у мене на тарілці багато речей. Я розгорну свою відповідь, щоб бути більш конкретним до вашого питання. Я бачу, що ви вклали багато зусиль у постановку свого питання. Дякую за це.
suncoolsu

Відповіді:


10

XІ в Mосновному визначають дві моделі , які ви хочете порівняти, але тільки з точки зору наслідків внутрішньогрупових суб'єкта; Потім він показує результати взаємодії всіх суб'єктних ефектів (включаючи перехоплення) з внутрішньопредметними ефектами, які змінювалися між Xта M.

Ваші приклади на fitBпростіші для розуміння, якщо ми додамо параметри за замовчуванням для Xта M:

anova(fitB, idata=idB, M=~1, X=~0, test="Spherical") # IVb
anova(fitB, idata=idB, M=diag(3), X=~1, test="Spherical") # IVw1, IVw1:IVb

Перша модель - це зміна відсутності в межах предметних ефектів (всі мають однакове середнє значення) на різну середню для кожного, тому ми додали idвипадковий ефект, який є правильним для перевірки загального перехоплення та загального між предметним ефектом на.

Друга модель рекламує id:IVw1взаємодію, яка є правильною для перевірки IVw1та протилежних IVw1:IVbумов. Оскільки існує лише один ефект в межах суб'єкта (з трьома рівнями), за замовчуванням diag(3)у другій моделі буде враховано це; було б рівнозначно бігати

anova(fitB, idata=idB, M=~IVw1, X=~1, test="Spherical") # IVw1, IVw1:IVb

Для вашого fitC, я вважаю, ці команди відновлять Anovaпідсумок.

anova(fitC, idata=id, M=~1, X=~0, test="Spherical") #IVb
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitC, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                  X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Тепер, як ви виявили, ці команди справді хитрі. На щастя, немає більше причин використовувати їх більше. Якщо ви готові припустити сферичність, вам просто слід використовувати aovабо для ще простішого синтаксису просто використовувати lmта обчислити правильні F-тести самостійно. Якщо ви не бажаєте припускати сферичність, використовуйте lmeнасправді шлях, оскільки ви отримуєте набагато більше гнучкості, ніж ви коригуєте GG та HF.

Наприклад, ось aovі lmкод для вашого fitA. Вам потрібно спочатку мати дані у довгому форматі; ось один із способів зробити це:

library(reshape)
d0 <- data.frame(id=1:nrow(DV), DV)
d0$IVb <- IVb
d0 <- melt(d0, id.vars=c(1,11), measure.vars=2:10)
id0 <- id
id0$variable <- factor(levels(d0$variable), levels=levels(d0$variable))
d <- merge(d0, id0)
d$id <- factor(d$id)

А ось lm andкод aov`:

anova(lm(value ~ IVw1*IVw2*id, data=d))
summary(aov(value ~ IVw1*IVw2 + Error(id/(IVw1*IVw2)), data=d))

Дуже дякую, саме це я шукав! Мене ще цікавило anova()через Anova()описану тут проблему . Але ваша остання пропозиція працює так само добре і простіше. (Незначна річ: я думаю, що в останніх двох рядках відсутня 1 дужка, що закривається, і її слід прочитати Error(id/(IVw1*IVw2)))
каракал

8

Сплит-сюжетні проекти зародилися в сільському господарстві, звідси і назва. Але вони часто трапляються, і я б сказав - робочий коник більшості клінічних випробувань. Основний сюжет обробляється рівнем одного фактора, тоді як рівні якогось іншого фактору дозволяють змінюватися залежно від підгруп. Конструкція виникає внаслідок обмежень на повну рандомізацію. Наприклад: поле можна розділити на чотири підмножини. Можна висаджувати різні сорти в субплоти, але для всього поля можна використовувати лише один вид поливу. Не є різницею між розщепленнями та блоками. Блоки - це особливості експериментальних одиниць, якими ми можемо скористатися в експериментальній конструкції, оскільки ми знаємо, що вони там є. Розщеплення, з іншого боку, накладає обмеження на те, які можливі призначення факторів. Вони пред'являють вимоги до конструкції, що перешкоджає повної рандомізації.

Вони дуже часто використовуються в клінічних випробуваннях, коли один фактор легко змінити, а інший потребує набагато більше часу для зміни. Якщо експериментатор повинен виконати всі прогони для кожного рівня важко змінюваного коефіцієнта послідовно, то розбиття дизайну ділянки приводить до важко зміненого коефіцієнта, який представляє весь фактор сюжету.

Наведемо приклад. У ході випробування на сільськогосподарському полі завдання було визначити вплив двох сортів сільськогосподарських культур та чотирьох різних методів поливу. Доступно вісім полів, але до кожного поля може бути застосований лише один вид зрошення. Поля можуть бути розділені на дві частини з різною різноманітністю в кожній частині. Весь сюжетний фактор - це зрошення, яке повинно бути випадково віднесено до полів. У межах кожного поля присвоюється різноманітність.

Ось як це робиться в R:

install.packages("faraway")
data(irrigation)
summary(irrigation)

library(lme4)

R> (lmer(yield ~ irrigation * variety + (1|field), data = irrigation))
Linear mixed model fit by REML 
Formula: yield ~ irrigation * variety + (1 | field) 
   Data: irrigation 
  AIC  BIC logLik deviance REMLdev
 65.4 73.1  -22.7     68.6    45.4
Random effects:
 Groups   Name        Variance Std.Dev.
 field    (Intercept) 16.20    4.02    
 Residual              2.11    1.45    
Number of obs: 16, groups: field, 8

Fixed effects:
                       Estimate Std. Error t value
(Intercept)               38.50       3.02   12.73
irrigationi2               1.20       4.28    0.28
irrigationi3               0.70       4.28    0.16
irrigationi4               3.50       4.28    0.82
varietyv2                  0.60       1.45    0.41
irrigationi2:varietyv2    -0.40       2.05   -0.19
irrigationi3:varietyv2    -0.20       2.05   -0.10
irrigationi4:varietyv2     1.20       2.05    0.58

Correlation of Fixed Effects:
            (Intr) irrgt2 irrgt3 irrgt4 vrtyv2 irr2:2 irr3:2
irrigation2 -0.707                                          
irrigation3 -0.707  0.500                                   
irrigation4 -0.707  0.500  0.500                            
varietyv2   -0.240  0.170  0.170  0.170                     
irrgtn2:vr2  0.170 -0.240 -0.120 -0.120 -0.707              
irrgtn3:vr2  0.170 -0.120 -0.240 -0.120 -0.707  0.500       
irrgtn4:vr2  0.170 -0.120 -0.120 -0.240 -0.707  0.500  0.500

В основному, що говорить ця модель, зрошення та різноманітність є фіксованими ефектами, а різноманітність вкладається в полив. Поля є випадковими ефектами, і мальовниче буде щось подібне

І_1 | І_2 | І_3 | І_4

V_1 V_2 | V_1 V_2 | V_1 V_2 | V_1 V_2

Але це був особливий варіант із фіксованим ефектом цілого сюжету та ефектом субплоти. Можуть бути варіанти, в яких одне або більше випадкових. Можуть бути і більш складні конструкції, такі як спліт-спліт .. сюжетні проекти. В основному, ви можете піти диким і божевільним. Але з огляду на базову структуру та розподіл (тобто фіксований чи випадковий, вкладений чи перекреслений, ..) чітко зрозуміло, lmer-Ninjaу моделювання не виникне проблем. Можливо, інтерпретація буде безладом.

Що стосується порівняння, скажімо , у вас є lmer1і lmer2:

anova(lmer1, lmer2)

дасть вам відповідний тест на основі статистики тестування chi-sq зі ступенями свободи, рівними різниці параметрів.

пор .: Далекий, Дж., Розширення лінійних моделей з Р.

Казелла, Г., Статистичний дизайн


Я вдячний вступі до аналізу конструкцій розділених сплайтів із моделями зі змішаними ефектами та подальшою довідковою інформацією! Це, безумовно, є кращим способом проведення аналізу. Я оновив своє запитання, щоб підкреслити, що я все ще хотів би знати, як це зробити "по-старому".
каракал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.