2016-06-16 4 views
1

Ich möchte ein lineares gemischtes Modell auf einer abhängigen Variablen DV, die unter zwei verschiedenen Condition bei drei verschiedenen Timepoint gesammelt wird. Die Daten sind wie folgt aufgebaut:Wie replizieren zufällige Effekte in Lme4 von SAS?

## dput(head(RawData,5)) 
    structure(list(Participant = structure(c(2L, 2L, 2L, 2L, 4L), 
    .Label = c("Jessie", "James", "Gus", "Hudson", "Flossy", 
"Bobby", "Thomas", "Alfie", "Charles", "Will", "Mat", "Paul", "Tim", 
    "John", "Toby", "Blair"), class = "factor"), 
xVarCondition = c(1, 1, 0, 0, 1), 
Measure = structure(c(1L, 2L, 3L, 4L, 1L), 
.Label = c("1", "2", "3", "4", "5", "6", "7", "8", 
"9", "10", "11", "12"), class = "factor"), 
Sample = structure(c(1L, 2L, 1L, 2L, 1L), 
.Label = c("1", "2"), class = "factor"), 
Condition = structure(c(2L, 2L, 1L, 1L, 2L), 
.Label = c("AM", "PM"), class = "factor"), 
Timepoint = structure(c(2L, 2L, 2L, 2L, 1L), 
.Label = c("Baseline", "Mid", "Post"), class = "factor"), 
DV = c(83.6381348645853, 86.9813802115179, 69.2691666620429, 
71.3949807856125, 87.8931998204771)), 
.Names = c("Participant", "xVarCondition", "Measure", 
    "Sample", "Condition", "Timepoint", "DV"), 
row.names = c(NA, 5L), class = "data.frame") 

Jeder Participant führen zwei Versuchen pro Condition über drei Timepoint s, wie durch Measure dargestellt; es fehlen jedoch Daten, also nicht unbedingt 12 Stufen pro Teilnehmer. Die Spalte xVarCondition ist einfach eine Dummy-Variable, die für jeden Eintrag von AM in Condition eine 1 enthält. Die Spalte Sample bezieht sich auf die 2 Versuche für jede Condition bei jeder Timepoint.

Ich bin ein R Benutzer aber die Statistiker ist ein SAS-Benutzer, der Code für das Modell glaubt sein sollte:

proc mixed data=RawData covtest cl alpha=α 
class Participant Condition Timepoint Measure Sample; 
model &dep=Condition Timepoint/s ddfm=sat outp=pred residual noint; 
random int xVarCondition xVarCondition*TimePoint*Sample 
      TimePoint/subject=Participant s; 

Die oben SAS Code gibt vernünftige Antworten und funktioniert perfekt. Wir glauben, dass die resultierende lme4 Syntax für das obige Modell zu sein:

TestModel = lmer(DV ~ Condition + Timepoint + 
       (1 | Participant/Timepoint) + 
       (0 + xVarCondition | Participant) + 
       (1 | Participant:xVarCondition:Measure), data = RawData) 

Allerdings habe ich die folgende Fehlermeldung bei der Ausführung dieses Modell:

Error: number of levels of each grouping factor must be < number of observations 

Sind die Zufallseffekte korrekt angegeben?

+0

Ich hatte bemerkt, dass Ihr beide festen Effekte, 'condition' und' Timepoint', beide Faktoren sind. Sind Sie sicher, dass ein gemischtes lineares Modell in diesem Fall der beste Ansatz ist? Außerdem bekomme ich den Unterschied zwischen 'xVarCondition' und' Condition' nicht. –

+0

Ich glaube, dass ein lineares gemischtes Modell angemessen ist, da wir an der Variation zwischen den Teilnehmern interessiert sind. xVarCondition ist einfach eine Dummy-Variable mit einer 1 für jedes Mal, wenn ein Teilnehmer die AM-Bedingung abschließt. – user2716568

Antwort

1

Ich kann nicht ganz aus Ihrer Beschreibung, aber wahrscheinlich Ihre Participant:xVarCondition:Measure Begriff Konstrukte eine Gruppierungsvariable, die nicht mehr als eine Beobachtung in jeder Ebene der Klassifizierung hat, die den (1|Participant:xVarCondition:Measure) Begriff mit dem Restfehler Begriff redundant machen wird Das ist immer in einem lmer Modell enthalten. Sie können die Fehler außer Kraft setzen, wenn Sie wirklich wollen, indem

control=lmerControl(check.nobs.vs.nlev = "ignore") 

in Ihrem Funktionsaufruf, einschließlich, aber (wenn ich das Problem richtig diagnostiziert haben) dies auf die Residualvarianz führen wird und die Participant:xVarCondition:Measure Varianz sind gemeinsam nicht identifizierbar. Eine solche Unidentifizierbarkeit verursacht normalerweise keine Probleme mit dem Rest des Modells, aber ich fühle mich mit einem identifizierbaren Modell wohler (es besteht immer die Möglichkeit, dass eine solche Nicht-Identifizierbarkeit zu numerischen Problemen führt).

Es gibt ein ähnliches Beispiel here.

Sie können meine Vermutung überprüfen, wie folgt:

ifac <- with(RawData, 
    interaction(Participant,xVarCondition,Measure,drop=TRUE)) 
length(levels(ifac)) == nrow(RawData) 
+0

Vielen Dank für das ähnliche Beispiel, aber auch wenn ich versuche, den Fehler zu überschreiben, bekomme ich immer noch die Fehlermeldung. Kann ich die zufälligen Effekte angeben, damit sie dem Modell in SAS entsprechen? Mit vernünftigen Antworten läuft es in SAS reibungslos. – user2716568

+0

könnten Sie versuchen, [email protected] (ich habe heute vielleicht keine Zeit dafür). Ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) wäre ebenfalls hilfreich –

Verwandte Themen