R: Linear mixed effects models

Reading time ~1 minute

Einleitung Linear mixed effects modeling ist eine schöne Sache, gerade wenn man -  wie so oft in psycholinguistischen Experimenten - komplexe Daten analysieren muss. Top beschrieben sind diese in:

Baayen, R. H., Davidson, D. J., & Bates, D. M. (2008). Mixed-effects modeling with crossed random effects for subjects and items. Journal of Memory and Language, 59(4), 390-412.

In der folgenden Einführung werden die Packages languageR und foreign benötigt und die Funktionen read.spss(), lmer(), sowie pvals.fnc() verwendet.

Basics 1. Modell definieren

>mod_1<-lmer(answertime~data_corr$viert+(1|proband)+(1|image), data=data_corr)

In dem Modell mod_1 wird answertime vorhergesagt durch die Variable viert. Proband und image sind crossed-random factors.

  1. Parameter ausgeben
>print(mod_1)

Gibt die  Modellparameter (Schätzer, t-Werte, etc.) aus.

  1. Statistiken berechnen
>pvals.fnc(mod_1)

Führt eine Marcov-Chain-Monte Carlo (MCMC) Simulation für die Parameter durch.

Der Einfluss einzelner Prädiktoren Wenn man wissen will, ob und wie die Hinzunahme eines Prädiktors die Vorhersage durch andere Faktoren beeinflusst, gibt es drei Wege Ihr wollt also zwei Modelle vergleichen, die so ähnlich aussehen.

  1. Modellvergleiche
>mod_0<-lmer(RT~F1+F2+F3+(1|proband)+(1|image))   2. >mod_1<-lmer(RT~F1+F2+F3+Rating+(1|proband)+(1|image)) mod_0 = RTs nur durch drei Haupteffekte vorhergesagt mod_1 = RT durch drei Haupteffekte plus Rating vorhergesagt.

Im Prinzip hat man nach der MCMC-Simulation Mittelwerte und Standardabweichungen für die einzelnen Modellparameter, z.B. das Betagewicht von F3 und man kann testen, ob dieses in den beiden Modellen gleich oder signifikant unterschiedlich ist.

  1. Interaktionstest Evtl. ist man aber auch an Interaktionen zwischen F3 und Rating interessiert, Dann kann man ein Modell mod_2 definieren, das anstelle der Haupteffekte F3+Rating die Interaktion F3*Rating beeinhaltet. Diese sollte dann signifikant werden.

  2. Vergleich der gesamten Modelle Außerdem könnt Ihr auch die Modelle insgesamt miteinander vergleichen und gucken, ob die Hinzunahme eines Faktors den Modellfit signifikant verbessert. Das geht mit

>anova(mod_0, mod_1)
Hier würde ich dann aber ein Modell mod_3<-lmer(RT~F1+F2+Rating+(1 proband)+(1 image), data=SabrinasDaten) mit mod_1 vergleichen (> anova(mod_3, mod_1) ) und erwarten, dass die Hinzunahme von F3 zu keiner signifikanten Verbesserung führt.

Beispielskript

#Notwendige Packages laden
require(foreign)
require(languageR)

#Daten einlesen und bereinigen also falsche Antworten raus etc.
temp<-read.spss("TEAP_Komplett.sav")

temp2<-data.frame(temp)
data<-subset(temp2, temp2$question_id==75)
data_corr<-data[data$answertime<60,]
attach(data_corr)

#Model definieren, Parameter ausgeben und Statistiken berechnen
lmer<-lmer(answertime~viert+(1|proband)+(1|image), data=data_corr)
print(lmer, cor=F)
#pvals.fnc(lmer, addPlot=T)$fixed

The world is flat F(1,18) = 39.200; p = .335 - or p < .01 or p <.001? - Check your stats!

A reviewers dream has come true. The new __statcheck__-package for [R](r-project.org) automagically checks the accurate __reporting__ of ...… Continue reading

Publication-lists-4-Your-Website

Published on June 19, 2015

Relaunch on Jekyll

Published on June 04, 2015