2017-12-13 14 views
1

Ich mache eine Regressionsanalyse auf ökologischen Daten, die Körpergröße abhängig ist, d. H. Körpergröße sollte eine Kovariate sein. Also, ich habe zwei kategorische Variablen und eine kontinuierliche. Darüber hinaus zwei zufällige Effekte (räumliche Block-Struktur, experimentelle Einheit geschachtelt innerhalb - beide kategorisch). Ich bin mit lme und lmer, und mein Modell sieht wie folgt aus (in lmer -Syntax):Korrekte Syntax für Covariate in gemischten Modellen, oder Sternchen vs. Schrägstrich in lme/lmer

dep-var ~ fix-var1(cat) * fix-var2(cat) * covariate(cont) + (1|block/exp-unit) 

Jemand schlug vor, mit einem Schrägstrich / anstelle des Sternchens * für ein ANCOVA-Modell, so würde die Formel aussehen

dep-var ~ fix-var1 * fix-var2/covariate + (1|block/exp-unit) 

Dies gibt mir jedoch völlig andere Ausgabe, plötzlich Interaktionen werden signifikant, und Haupteffekte sind weg. Ich bin nicht in der Lage gewesen, Details darüber zu finden, was die genauen Unterschiede zwischen der Verwendung dieser Operatoren sind.

Kann mir bitte jemand aufklären?

+0

Was ist Ihr zufälliger Effekt? (Sie müssen einen zufälligen Effekt haben, wenn Sie 'lme' oder' lmer' verwenden ...) –

+0

richtig, vergessen zu erwähnen. editiert die Frage – lueromat

+0

oh nein, sieht aus wie das wird ein anderes Tumbleweed-Abzeichen sein. Hab ich hier etwas verpasst? – lueromat

Antwort

0

Wie viele, die sich auf die Interpretation von Modellformeln in R beziehen, ist diese Frage nicht spezifisch für gemischte Modelle, sondern allgemein für die Formeln erweiternde Maschinerie von R.

Ein guter Weg herauszufinden, was R macht, wenn er eine Formel interpretiert, ist model.matrix() (die die zugrundeliegende Modellmatrix konstruiert, die R verwendet, um das Modell anzupassen) und die Spaltennamen der Ausgabe betrachten.

Hier ist ein Beispiel mit einem 2x2 faktoriellen Design, sowie eine Kovariate:

dd <- expand.grid(fv1=c("a","b"), 
        fv2=c("A","B")) 
dd$covar <- 1:4 

Ihr erster Weg:

colnames(model.matrix(~fv1*fv2*covar,dd)) 
## [1] "(Intercept)"  "fv1b"   "fv2B"   "covar"   "fv1b:fv2B"  
## [6] "fv1b:covar"  "fv2B:covar"  "fv1b:fv2B:covar" 

x insgesamt 8 Parameter ((Intercept + Steigung) Es gibt 2 Ebenen von fv1 x 2 Ebenen von fv2). Das Modell ist als Schnittpunkt von (a, A) parametrisiert ((Intercept)); Unterschiede im Achsenabschnitt gemäß den Faktoren (b, B) und ihrer Wechselwirkung; Neigung von (a, A) (covar); und die Unterschiede in der Steigung entsprechend den Faktoren und ihrer Wechselwirkung.

Was passiert, wenn wir/stattdessen verwenden?

colnames(model.matrix(~fv1*fv2/covar,dd)) 
## [1] "(Intercept)"  "fv1b"   "fv2B"   "fv1b:fv2B"  "fv1a:fv2A:covar" 
## [6] "fv1b:fv2A:covar" "fv1a:fv2B:covar" "fv1b:fv2B:covar" 

Die Parametrierung für die Abschnitte sieht gleich aus, aber die Parametrisierung für die Piste schätzt eine separate Steigung für jede Kombination Faktor anstatt die Neigung Abschätzung für (a, A) und die Unterschiede der Pisten von dieser Basislinie für b, B und ihre Wechselwirkung. Dies ist höchstwahrscheinlich nicht das, was Sie wollen, es sei denn, Sie möchten die einzelnen Steigungen gegen eine Basislinie von Null testen (anstatt die Unterschiede zwischen Steigungen über Faktorkombinationen zu testen).

Wenn Sie stattdessen das Modell als ~(fv1*fv2)/covar angeben, werden sowohl der Achsenabschnitt als auch die Steigungsparameter in Faktorenkombinationsschätzungen anstatt in Differenzen zwischen Faktorenschätzungen erweitert.

colnames(model.matrix(~(fv1*fv2)/covar,dd)) 
## [1] "(Intercept)"  "fv1b"   
## [3] "fv2B"   "fv1b:fv2B"  
## [5] "fv1a:fv2A:covar" "fv1b:fv2A:covar" 
## [7] "fv1a:fv2B:covar" "fv1b:fv2B:covar" 
+0

Danke, Ben. In der Vergangenheit habe ich die Modellschätzungen verwendet, die mit der zweiten Formel erstellt wurden, um zwischen Populationsunterschieden in der Beziehung von zwei Merkmalen zu charakterisieren, ich denke, das könnte ein nützlicher Aspekt sein. ein Modell wie dieses zu spezifizieren. Also, nur um zu verdeutlichen: Die zweite Formel testet, ob die Steigung jeder Faktorkombination größer als Null ist? – lueromat

+0

Oh, und übrigens: ich konnte keine Unterschiede zwischen '(~ fv1 * fv2/covar)' und '(~ (fv1 * fv2)/covar)' finden - sind die Klammern überhaupt wichtig? – lueromat

Verwandte Themen