Qu'est-ce qu'une analyse post-hoc valide pour une ANOVA à trois mesures répétées?

10

J'ai effectué une mesure répétée à trois voies ANOVA; quelles analyses post-hoc sont valables?

Il s'agit d'une conception entièrement équilibrée (2x2x2) avec l'un des facteurs ayant une mesure répétée intra-sujets. Je connais les approches multivariées des mesures répétées de l'ANOVA dans R, mais mon premier instinct est de procéder avec un simple style aov () d'ANOVA:

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

DV = variable de réponse

IV1 = variable indépendante 1 (2 niveaux, A ou B)

IV2 = variable indépendante 2 (2 niveaux, oui ou non)

IV3 = Temps (2 niveaux, avant ou après)

Sujet = ID du sujet (40 sujets au total, 20 pour chaque niveau d'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 

Alternativement, je pensais à utiliser le package nlme pour une ANOVA de style 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

Mon premier instinct post-hoc d'interactions bidirectionnelles significatives avec les contrastes de Tukey en utilisant glht () du package 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

Le principal problème que je vois avec ces analyses post-hoc sont des comparaisons qui ne sont pas utiles pour mes hypothèses.

Toutes les suggestions pour une analyse post-hoc appropriée sont grandement appréciées, merci.

Edit: question et réponse pertinentes qui pointent vers le test de matrices de contraste manuelles

RobJackson28
la source
Votre modèle à effet aléatoire semble étrange: /est utilisé pour désigner l'imbrication (comme on le voit généralement dans une expérience de parcelle fractionnée), contrairement à son utilisation dans le Errorterme aov()où il indique principalement comment créer des strates d'erreur .
chl
@chl J'ai formaté le Errorterme de aov()cette façon pour spécifier que Timec'est le facteur intra-groupes. De Baron Error(subj/(color + shape))semble être utilisé de la même manière.
RobJackson28
@chl Merci d'avoir présenté le lmemodèle, je ne suis pas sûr de la bonne utilisation de /. Comment spécifieriez-vous Timele facteur intra-groupe comme Error()avec aov()?
RobJackson28

Réponses:

2

Je pense que les statisticiens vous diront qu'il y a toujours un problème avec toute analyse post hoc car voir les données peut influencer ce que vous regardez et vous pourriez être biaisé parce que vous cherchez des résultats significatifs. La FDA dans les études d'essais cliniques exige que le plan statistique soit complètement énoncé dans le protocole. dans un modèle linéaire, vous pourriez certainement préspécifier les contrastes que vous aimeriez examiner dans le cas où l'ANOVA ou l'ANCOVA trouve une différence globale. De tels contrastes préspécifiés seraient bien à considérer tant que le traitement habituel pour la multiplicité en fait également partie.

Michael R. Chernick
la source
C'est à peu près le problème que j'ai, étant donné que l'analyse m'a été remise (sans aucune planification statistique a priori autre que «exécutons un tas de tests t»). J'ai réussi à distiller les hypothèses de base qui étaient initialement prévues, mais j'ai un peu de mal avec la syntaxe post-hoc. Justifier toutes ces étapes à l'expérimentateur est mon objectif principal, afin d'éviter le dogme du t-test. Le but ultime: faire de la planification statistique une nécessité pour les futurs plans expérimentaux. Pour le moment, je dois travailler avec ce que j'ai.
RobJackson28
1
Ensuite, tout ce que j'ajouterais, c'est que si vous voulez aller de l'avant avec des analyses post-hoc, je ne vois aucun problème tant que vous effectuez un ajustement de multiplicité approprié.
Michael R. Chernick
1
Ai-je raison de supposer que les ajustements de la multiplicité sont analogues aux ajustements d'erreur par famille? Par exemple, Tukey's, Bonferroni, etc.?
RobJackson28
Exactement raison. les méthodes d'amorçage et de permutation sont également disponibles en SAS par exemple avec Proc MULTTEST. Voir le travail de Westfall et Young.
Michael R. Chernick
Merci pour l'assistance @Michael, je l'apprécie. Cependant, je ne suis toujours pas clair sur la syntaxe à utiliser dans R. Plus précisément, je ne sais pas s'il est plus approprié de spécifier manuellement des matrices de contraste pour les contrastes Tukey pertinents à l'aide glht(), ou d'effectuer toutes les comparaisons par défaut. De plus, je ne sais pas comment gérer correctement la mesure répétée de Timeen termes de post-hoc.
RobJackson28
1

Si vous avez un progiciel comme SAS, vous utiliserez probablement proc mixed pour faire le modèle mixte de mesures répétées et si vous spécifiez le contraste que vous souhaitez utiliser, SAS le traitera correctement pour vous. Vous pouvez également le faire avec l'option répétée dans PROC GLM mais soyez prudent car ils se comportent différemment et font des hypothèses différentes. Les observations répétées sont généralement corrigées car elles ont quelque chose de commun. J'ai souvent répété des mesures sur le même patient à différents moments. Ainsi, dans le calcul des contrastes, les termes de covariance entrent en jeu.

Michael R. Chernick
la source