P-Wert für den Interaktionsterm in Modellen mit gemischten Effekten unter Verwendung von lme4

10

Ich analysiere einige Verhaltensdaten mit lme4in R, hauptsächlich nach Bodo Winters hervorragenden Tutorials , aber ich verstehe nicht, ob ich mit Interaktionen richtig umgehe. Schlimmer noch, niemand anderes, der an dieser Forschung beteiligt ist, verwendet gemischte Modelle. Ich bin also ein bisschen treibend, wenn es darum geht, sicherzustellen, dass die Dinge richtig sind.

Anstatt nur um Hilfe zu rufen, dachte ich, ich sollte mein Bestes geben, um das Problem zu interpretieren, und dann um Ihre kollektiven Korrekturen bitten. Einige andere Nebeneffekte sind:

  • Während des Schreibens habe ich diese Frage gefunden , die zeigt, dass nlmedirekter p-Werte für Interaktionsterme angegeben werden, aber ich denke, es ist immer noch gültig, in Bezug auf zu fragen lme4.
  • Livius'Die Antwort auf diese Frage lieferte Links zu vielen zusätzlichen Lektüren, die ich in den nächsten Tagen durcharbeiten werde. Daher werde ich alle Fortschritte kommentieren, die sich daraus ergeben.

In meinen Daten habe ich eine abhängige Variable dv, eine conditionManipulation (0 = Kontrolle, 1 = experimentelle Bedingung, die zu einer höheren führen sollte dv) und auch eine Voraussetzung mit der Bezeichnung appropriate: Versuche, die dafür codiert sind, 1sollten den Effekt zeigen, aber Versuche, die codiert werden 0könnten nicht, weil ein entscheidender Faktor fehlt.

Ich habe auch zwei zufällige Abschnitte für subjectund für targetreflektierte dvWerte in jedem Subjekt und in jedem der 14 gelösten Probleme aufgenommen (jeder Teilnehmer löste sowohl eine Kontroll- als auch eine experimentelle Version jedes Problems).

library(lme4)
data = read.csv("data.csv")

null_model        = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model      = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
                         data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
                              (1 | subject) + (1 | target), data = data)
summary(interaction_model)

Ausgabe:

## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subject  (Intercept) 0.006594 0.0812  
##  target   (Intercept) 0.000557 0.0236  
##  Residual             0.210172 0.4584  
## Number of obs: 690, groups: subject, 38; target, 14
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                    0.2518     0.0501    5.03
## conditioncontrol               0.0579     0.0588    0.98
## appropriate                   -0.0358     0.0595   -0.60
## conditioncontrol:appropriate  -0.1553     0.0740   -2.10
## 
## Correlation of Fixed Effects:
## ...excluded for brevity.

ANOVA zeigt interaction_modeldann eine signifikant bessere Anpassung als mainfx_model, woraus ich schließe, dass eine signifikante Wechselwirkung vorliegt (p = 0,035).

anova(mainfx_model, interaction_model)

Ausgabe:

## ...excluded for brevity....
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## mainfx_model       6 913 940   -450      901                          
## interaction_model  7 910 942   -448      896  4.44      1      0.035 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Von dort isoliere ich eine Teilmenge der Daten, für die die appropriateAnforderung erfüllt ist (dh appropriate = 1), und passe dafür ein Nullmodell und ein Modell an, das conditionals Effekt enthält, vergleiche die beiden Modelle erneut mit ANOVA und siehe, finde das conditionist ein signifikanter Prädiktor.

good_data = data[data$appropriate == 1, ]
good_null_model   = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)

anova(good_null_model, good_mainfx_model)

Ausgabe:

## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## good_null_model    4 491 507   -241      483                          
## good_mainfx_model  5 487 507   -238      477  5.55      1      0.018 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Eoin
quelle
Überprüfen Sie diese Frage für weitere Informationen zu p-Werten in lme4: stats.stackexchange.com/questions/118416/…
Tim
Wenn Sie lmerTest :: anova () verwenden, erhalten Sie die Anova-Tabellen mit p-Werten für jeden Term. Auf diese Weise können Sie die Interaktion direkt untersuchen, anstatt die Gesamtmodelle zu vergleichen. Siehe diese Antwort auf die Frage @Tim verlinkt mit: stats.stackexchange.com/a/118436/35304
Kayle Sawyer

Antworten:

3

Ich sehe hier nicht zu viel zu sagen. Ich denke, Sie haben gute Arbeit geleistet.

Es gibt verschiedene Möglichkeiten, die diskutiert wurden, um Effekte zu testen und p-Werte für komplizierte Modelle mit gemischten Effekten zu erhalten. Es gibt einen guten Überblick hier . Am besten verwenden Sie rechenintensive Methoden (Bootstrapping oder Bayes'sche Methoden), die jedoch für die meisten Menschen weiter fortgeschritten sind. Die zweitbeste (und bequemste) Methode ist die Verwendung eines Likelihood-Ratio-Tests. Das macht anova()(technisch ? Anova.merMod () ). Es ist wichtig, nur einen Likelihood-Ratio-Test für Modelle zu verwenden, die mit der vollen maximalen Wahrscheinlichkeit übereinstimmen , und nicht die eingeschränkte maximale Wahrscheinlichkeit(REML). Auf der anderen Seite möchten Sie für Ihr endgültiges Modell und für die Interpretation REML verwenden. Dies ist für viele Menschen verwirrend. In Ihrer Ausgabe sehen wir, dass Sie Ihre Modelle mit REML anpassen (dies liegt daran, dass die Option TRUEstandardmäßig in aktiviert ist. Dies lmer()würde bedeuten, dass Ihr Test ungültig ist, da dies jedoch ein so häufiger Fehler ist und anova.merMod()ein refitArgument enthält , das von Die Standardeinstellung ist eingestellt TRUE, und Sie haben sie nicht geändert. Die Voraussicht der Paketentwickler hat Sie dort gespeichert.

In Bezug auf Ihre Strategie zum Auspacken der Interaktion ist das, was Sie getan haben, in Ordnung. Denken Sie daran, dass die Interaktion alle Daten für ihren Test verwendet. Es ist möglich, eine signifikante Interaktion zu haben, aber keiner der geschichteten Tests ist signifikant, was einige Leute verwirrt. (Es scheint dir aber nicht passiert zu sein.)

gung - Monica wieder einsetzen
quelle
0

Ich bin selbst ein Neuling und folge den Ratschlägen von Zuur et al. Ich verwende sie lmeaus dem nlmePaket, anstatt lme4einem ansonsten linearen Modell eine hierarchische Fehlerstruktur hinzuzufügen. Meine Antwort könnte weit weg sein.

Zwei Kommentare:

(1) Ich bin nicht sicher, ob es sinnvoll ist, nur dann conditionin der Teilmenge zu testen appropriate==1. Wenn Sie p-Werte für die Haupteffekte erhalten möchten, können Sie diese Anovaaus dem 'Auto'-Paket verwenden:

require(car)
Anova(M,type="III")# type III Sum of Squares. M was fitted using method=REML

Wenn Sie die Interaktion auflösen möchten, können Sie gepaarte Vergleiche direkt (?) Ausführen oder das tun, was Sie getan haben, jedoch für beide Teilmengen (dh auch für die Teilmenge wo appropriate==0).

(2) Möglicherweise möchten Sie zuerst Ihre Fehlerstruktur auswählen, anstatt davon auszugehen, dass dies (1 | subject) + (1 | target)die beste Fehlerstruktur ist. Nach dem, was Sie geschrieben haben, conditionist dies ein Faktor innerhalb des Subjekts, während appropriatees sich entweder um einen Zwischensubjekt- oder einen Zwischenzielfaktor handelt. Möglicherweise möchten Sie Steigungen für Faktoren innerhalb des Subjekts und / oder innerhalb des Ziels dv ~ condition + appropriate + (1+condition | subject) + (1 | target)hinzufügen , z. B.: Fügt eine zufällige Steigung für den Faktor innerhalb des Subjekts hinzu condition. Für Faktoren zwischen Subjekten / Zielen sind keine Steigungen erforderlich.

Prost

user42174
quelle
Vielen Dank. Werden Sie nicht Anovaeinfach so tun, als ob die Korrelationen zwischen Subjekt und Ziel nicht vorhanden wären? Der Grund, warum ich die Analyse nur mit Daten wiederhole, appropriate==1ist, dass sich gezeigt hat, dass einige der verwendeten Materialien nach dem Test problematisch und daher „unangemessen“ sind. Schließlich habe ich keine zufälligen Steigungen verwendet, weil das Modell ohne sie besser passt.
Eoin