Che cos'è un'analisi post-hoc valida per una ANOVA di misure ripetute a tre vie?


10

Ho eseguito una misurazione ripetuta a tre vie ANOVA; quali analisi post hoc sono valide?

Questo è un design completamente bilanciato (2x2x2) con uno dei fattori che hanno una misura ripetuta all'interno dei soggetti. Sono a conoscenza di approcci multivariati a misure ripetute ANOVA in R, ma il mio primo istinto è quello di procedere con un semplice stile aov () di ANOVA:

aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)

DV = variabile di risposta

IV1 = variabile indipendente 1 (2 livelli, A o B)

IV2 = variabile indipendente 2 (2 livelli, Sì o No)

IV3 = Tempo (2 livelli, Prima o Dopo)

Oggetto = ID soggetto (40 soggetti totali, 20 per ogni livello di IV1: nA = 20, nB = 20)

summary(aov.repeated)

    Error: Subject
          Df Sum Sq Mean Sq F value   Pr(>F)   
IV1       1   5969  5968.5  4.1302 0.049553 * 
IV2       1   3445  3445.3  2.3842 0.131318   
IV1:IV2   1  11400 11400.3  7.8890 0.007987 **
Residuals 36  52023  1445.1                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Error: Subject:Time
               Df Sum Sq Mean Sq F value   Pr(>F)   
Time            1    149   148.5  0.1489 0.701906   
IV1:Time        1    865   864.6  0.8666 0.358103   
IV2:Time        1  10013 10012.8 10.0357 0.003125 **
IV1:IV2:Time    1    852   851.5  0.8535 0.361728   
Residuals      36  35918   997.7                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

In alternativa, stavo pensando di usare il pacchetto nlme per un ANOVA in stile lme:

aov.repeated2 <- lme(DV ~ IV1 * IV2 * Time, random = ~1|Subject/Time, data=data)
summary(aov.repeated2)

Fixed effects: DV ~ IV1 * IV2 * Time 
                                Value Std.Error DF   t-value p-value
(Intercept)                      99.2  11.05173 36  8.975972  0.0000
IV1                              19.7  15.62950 36  1.260437  0.2156
IV2                              65.9  15.62950 36  4.216385  0.0002 ***
Time                             38.2  14.12603 36  2.704228  0.0104 *
IV1:IV2                         -60.8  22.10346 36 -2.750701  0.0092 **
IV1:Time                        -26.2  19.97722 36 -1.311494  0.1980
IV2:Time                        -57.8  19.97722 36 -2.893295  0.0064 **
IV1:IV2:Time                     26.1  28.25206 36  0.923826  0.3617

Il mio primo istinto post-hoc di interazioni significative a 2 vie con Tukey contrasta usando glht () dal pacchetto multcomp:

data$IV1IV2int <- interaction(data$IV1, data$IV2)
data$IV2Timeint <- interaction(data$IV2, data$Time)

aov.IV1IV2int <- lme(DV ~ IV1IV2int, random = ~1|Subject/Time, data=data)
aov.IV2Timeint <- lme(DV ~ IV2Timeint, random = ~1|Subject/Time, data=data)

IV1IV2int.posthoc <- summary(glht(aov.IV1IV2int, linfct = mcp(IV1IV2int = "Tukey")))
IV2Timeint.posthoc <- summary(glht(aov.IV2Timeint, linfct = mcp(IV2Timeint = "Tukey")))

IV1IV2int.posthoc
#A.Yes - B.Yes == 0        0.94684   
#B.No - B.Yes == 0         0.01095 * 
#A.No - B.Yes == 0         0.98587    I don't care about this
#B.No - A.Yes == 0         0.05574 .  I don't care about this
#A.No - A.Yes == 0         0.80785   
#A.No - B.No == 0          0.00346 **

IV2Timeint.posthoc 
#No.After - Yes.After == 0           0.0142 *
#Yes.Before - Yes.After == 0         0.0558 .
#No.Before - Yes.After == 0          0.5358   I don't care about this
#Yes.Before - No.After == 0          0.8144   I don't care about this
#No.Before - No.After == 0           0.1941  
#No.Before - Yes.Before == 0         0.8616

Il problema principale che vedo con queste analisi post-hoc sono alcuni confronti che non sono utili per le mie ipotesi.

Eventuali suggerimenti per un'adeguata analisi post-hoc sono molto apprezzati, grazie.

Modifica: domande e risposte pertinenti che puntano al test delle matrici di contrasto manuali


Il tuo modello a effetto casuale sembra strano: /viene usato per indicare l'annidamento (come si vede in genere in un esperimento a trama divisa), a differenza del suo uso nel Errortermine in aov()cui indica principalmente come costruire strati di errore .
chl

@chl Ho formattato il Errortermine in aov()questo modo per specificare che Timeè il fattore all'interno dei gruppi. Dal barone Error(subj/(color + shape))sembra essere usato allo stesso modo.
RobJackson28,

@chl Grazie per aver sollevato il lmemodello, non sono chiaro sul corretto utilizzo di /. Come specificheresti Timecome fattore all'interno dei gruppi come in Error()con aov()?
RobJackson28,

Risposte:


2

Penso che gli statistici ti diranno che c'è sempre un problema con qualsiasi analisi post hoc perché vedere i dati può influenzare ciò che guardi e potresti essere di parte perché stai cercando risultati significativi. La FDA negli studi di sperimentazione clinica richiede che il piano statistico sia completamente spiegato nel protocollo. in un modello lineare potresti certamente prespecificare i contrasti che vorresti guardare nel caso in cui ANOVA o ANCOVA trovino una differenza complessiva. Tali contrasti prespecificati andrebbero bene a patto che anche il solito trattamento per la molteplicità ne faccia parte.


Questo è praticamente il problema che sto riscontrando, dato che l'analisi mi è stata consegnata (senza una pianificazione statistica a priori diversa da "eseguiamo un gruppo di t-test"). Sono riuscito a distillare le ipotesi di base originariamente previste, ma sto avendo un piccolo problema con la sintassi post-hoc. Giustificare tutti questi passaggi allo sperimentatore è il mio obiettivo principale, in modo da evitare il dogma del test t. L'obiettivo finale: rendere la pianificazione statistica una necessità per i futuri progetti sperimentali. Per ora, devo lavorare con quello che ho.
RobJackson28,

1
Quindi tutto ciò che aggiungerei è che se vuoi andare avanti con le analisi post-hoc, non vedo alcun problema finché fai la corretta regolazione della molteplicità.
Michael R. Chernick,

1
Sono corretto nel ritenere che le regolazioni della multiciplicità siano analoghe alle rettifiche di errori a livello familiare? Ad esempio Tukey's, Bonferroni, ecc.?
RobJackson28,

Completamente giusto. I metodi bootstrap e permutazione sono disponibili anche in SAS, ad esempio con Proc MULTTEST. Guarda il lavoro di Westfall e Young.
Michael R. Chernick,

Grazie per l'assistenza @Michael, lo apprezzo molto. Tuttavia, non sono ancora chiaro sulla sintassi da utilizzare R. In particolare, non sono sicuro se sia più appropriato specificare manualmente le matrici di contrasto per i relativi contrasti Tukey utilizzando glht()o eseguire tutti i confronti per impostazione predefinita. Inoltre, non sono sicuro di come gestire correttamente la misura ripetuta Timein termini di post-hoc.
RobJackson28,

1

Se si dispone di un pacchetto software come SAS, probabilmente si utilizzerà proc mixed per eseguire il modello misto di misure ripetute e se si specifica quale contrasto si desidera utilizzare SAS lo gestirà correttamente. Potresti anche essere in grado di farlo con l'opzione ripetuta in PROC GLM ma fai attenzione perché si comportano diversamente e fanno ipotesi diverse. Le osservazioni ripetute sono di solito correalizzate perché hanno qualcosa di comune. Spesso ho ripetute misure sullo stesso paziente in diversi momenti. Quindi nel calcolo dei contrasti i termini di covarianza entrano nel problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.