Wie wird ein Post-Hoc-Test an einem älteren Modell durchgeführt?


18

Dies ist mein Datenrahmen:

Group   <- c("G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3")
Subject <- c("S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15")
Value   <- c(9.832217741,13.62390117,13.19671612,14.68552076,9.26683366,11.67886655,14.65083473,12.20969772,11.58494621,13.58474896,12.49053635,10.28208078,12.21945867,12.58276212,15.42648969,9.466436017,11.46582655,10.78725485,10.66159358,10.86701127,12.97863424,12.85276916,8.672953949,10.44587257,13.62135205,13.64038394,12.45778874,8.655142642,10.65925259,13.18336949,11.96595556,13.5552118,11.8337142,14.01763101,11.37502161,14.14801305,13.21640866,9.141392359,11.65848845,14.20350364,14.1829714,11.26202565,11.98431285,13.77216009,11.57303893)

data <- data.frame(Group, Subject, Value)

Dann führe ich ein linear gemischtes Effektmodell aus, um die Differenz der 3 Gruppen zu "Value" zu vergleichen, wobei "Subject" der Zufallsfaktor ist:

library(lme4)
library(lmerTest)
model <- lmer (Value~Group + (1|Subject), data = data)
summary(model)

Die Ergebnisse sind:

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept) 12.48771    0.42892 31.54000  29.114   <2e-16 ***
GroupG2     -1.12666    0.46702 28.00000  -2.412   0.0226 *  
GroupG3      0.03828    0.46702 28.00000   0.082   0.9353    

Wie kann man jedoch Gruppe2 mit Gruppe3 vergleichen? Was ist die Konvention in wissenschaftlichen Artikeln?

Antworten:


16

Sie könnten emmeans::emmeans()oder lmerTest::difflsmeans(), oder verwenden multcomp::glht().

Ich bevorzuge emmeans(vorher lsmeans).

library(emmeans)
emmeans(model, list(pairwise ~ Group), adjust = "tukey")

Note difflsmeanskann keine Mehrfachvergleiche korrigieren und verwendet statt der von emmeans verwendeten Kenward-Roger-Methode standardmäßig die Satterthwaite-Methode zur Berechnung von Freiheitsgraden.

library(lmerTest)
difflsmeans(model, test.effs = "Group")

Die multcomp::glht()Methode wird in der anderen Antwort auf diese Frage von Hack-R beschrieben.

Sie können die ANOVA-p-Werte auch abrufen, indem Sie laden lmerTestund dann verwenden anova.

library(lmerTest)
anova(model)

Um ganz klar zu sein, Sie wollten, dass der Wert für jedes Thema dreimal bewertet wird, oder? Es sieht so aus, als wäre die Gruppe innerhalb der Subjekte und nicht zwischen den Subjekten.


1
Ich möchte der Antwort von Kayle Sawyer nur hinzufügen, dass das Paket lsmeans zugunsten von emmeans veraltet ist .
Downhiller

Hinweis: Wenn Sie die Bibliothek angeben, müssen Sie für anova () lmerTest :: lmer () und nicht lme4 :: lmer () verwenden, um die p-Werte anzuzeigen.
Kayle Sawyer

11

Nachdem Sie Ihr lmerModell angepasst haben, können Sie ANOVA, MANOVA und mehrere Vergleichsverfahren für das Modellobjekt ausführen.

library(multcomp)
summary(glht(model, linfct = mcp(Group = "Tukey")), test = adjusted("holm"))
   Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lmer(formula = Value ~ Group + (1 | Subject), data = data)

Linear Hypotheses:
             Estimate Std. Error z value Pr(>|z|)  
G2 - G1 == 0 -1.12666    0.46702  -2.412   0.0378 *
G3 - G1 == 0  0.03828    0.46702   0.082   0.9347  
G3 - G2 == 0  1.16495    0.46702   2.494   0.0378 *
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- holm method)

Was die Konvention in akademischen Veröffentlichungen betrifft, so wird dies je nach Fachgebiet, Zeitschrift und spezifischem Thema sehr unterschiedlich sein. In diesem Fall lesen Sie einfach die zugehörigen Artikel und sehen Sie, was sie tun.


Vielen Dank. Aber welche Einstellung wurde tatsächlich verwendet? Tukey oder holm? Warum erscheinen beide im Post-Hoc-Test?
Ping Tang

@PingTang Gern geschehen. Es ist eine Bonferroni-Holm-Korrektur des Mehrfachvergleichs aller Paare. Das ist natürlich nur eine Option. Das könntest du auch tun summary(glht(model, linfct = mcp(Group = "Tukey"))). Wenn Sie die vollständigen akademischen / statistischen Beschreibungen der verschiedenen Tests sehen möchten, die durchgeführt werden können, lesen Sie die Referenzen in ?glhtund multicompallgemeiner. Ich denke, Hsu 1996 wäre das wichtigste.
Hack-R

3
@PingTang, die mcpFunktion, die Group = Tukeynur bedeutet, alle paarweisen Gruppen in der Variablen "Group" zu vergleichen. Dies bedeutet keine Tukey-Anpassung.
Sal Mangiafico
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.