Freiheitsgrade von lmer bekommen


11

Ich habe ein lmer-Modell mit folgendem (wenn auch erfundener Output) ausgestattet:

Random effects:
 Groups        Name        Std.Dev.
 day:sample (Intercept)    0.09
 sample        (Intercept) 0.42
 Residual                  0.023 

Ich möchte wirklich ein Konfidenzintervall für jeden Effekt mit der folgenden Formel erstellen:

(n- -1)s2χα/.2,n- -12,(n- -1)s2χ1- -α/.2,n- -12

Gibt es eine Möglichkeit, die Freiheitsgrade bequem herauszuholen?


1
Ich denke, Sie möchten lmerTest überprüfen . Es gibt eine Reihe von Annäherungen, um den df in einem Mischeffektmodell für die festen Effekte zu approximieren (z. B. Satterthwaite , Kenward-Roger usw.). Für Ihren Fall scheint es mir, dass Sie Ihr Leben überkomplizieren. Sie nehmen an, dass jeder Effekt Gaußsch ist. Verwenden Sie einfach die Standardabweichung, um das Konfidenzintervall Ihrer Wahl zu erhalten.
usεr11852 sagt Reinstate Monic

3
@ usεr11852 In einem Modell mit gemischten Effekten nehmen Sie an, dass jeder Effekt Gaußsch ist, aber der Parameter ist die Varianz der Gaußschen Verteilung, nicht der Mittelwert. Daher ist die Verteilung des Schätzers sehr verzerrt, und das Konfidenzintervall für normale ± 2 Standardabweichungen ist nicht angemessen.
Karl Ove Hufthammer

1
@KarlOveHufthammer: Sie haben Recht, darauf hinzuweisen; Ich verstehe, was Sie (und wahrscheinlich das OP) meinen. Ich dachte, er sei besorgt über die Mittel und / oder die Realisierung der zufälligen Effekte, als er Freiheitsgrade erwähnte.
usεr11852 sagt Reinstate Monic

Freiheitsgrade sind für gemischte Modelle "problematisch", siehe: stat.ethz.ch/pipermail/r-help/2006-May/094765.html und stats.stackexchange.com/questions/84268/…
Tim

Antworten:


17

Ich würde stattdessen nur Konfidenzintervalle für die Profilwahrscheinlichkeit erstellen . Sie sind zuverlässig und mit dem 'lme4'-Paket sehr einfach zu berechnen. Beispiel:

> library(lme4)
> fm = lmer(Reaction ~ Days + (Days | Subject),
            data=sleepstudy)
> summary(fm)
[]
Random effects:
 Groups   Name        Variance Std.Dev. Corr
 Subject  (Intercept) 612.09   24.740       
          Days         35.07    5.922   0.07
 Residual             654.94   25.592       

Sie können jetzt die Konfidenzintervalle für die Profilwahrscheinlichkeit mit der folgenden confint()Funktion berechnen :

> confint(fm, oldNames=FALSE)
Computing profile confidence intervals ...
                               2.5 %  97.5 %
sd_(Intercept)|Subject        14.381  37.716
cor_Days.(Intercept)|Subject  -0.482   0.685
sd_Days|Subject                3.801   8.753
sigma                         22.898  28.858
(Intercept)                  237.681 265.130
Days                           7.359  13.576

Sie können auch den parametrischen Bootstrap verwenden, um Konfidenzintervalle zu berechnen. Hier ist die R-Syntax (mit dem parmArgument einschränken, für welche Parameter Konfidenzintervalle gewünscht werden):

> confint(fm, method="boot", nsim=1000, parm=1:3)
Computing bootstrap confidence intervals ...
                              2.5 % 97.5 %
sd_(Intercept)|Subject       11.886 35.390
cor_Days.(Intercept)|Subject -0.504  0.929
sd_Days|Subject               3.347  8.283

Die Ergebnisse variieren natürlich für jeden Lauf etwas. Sie können nsimdiese Abweichung erhöhen , um sie zu verringern. Dies erhöht jedoch auch die Zeit, die zum Schätzen der Konfidenzintervalle benötigt wird.


1
Gute Antwort (+1). Ich würde auch die Tatsache erwähnen, dass man in diesem Fall auch CIs vom parametrischen Bootstrap erhalten kann. Dieser Thread enthält eine sehr interessante Diskussion zu diesem Thema.
usεr11852 sagt Reinstate Monic

@ usεr11852 Danke für den Vorschlag. Ich habe jetzt ein Beispiel mit dem parametrischen Bootstrap hinzugefügt.
Karl Ove Hufthammer

6

Freiheitsgrade für gemischte Modelle sind "problematisch". Um mehr darüber zu lesen, können Sie die lmer, p-Werte und alle Beiträge von Douglas Bates überprüfen . Auch die FAQ zu R-Sig-Mixed-Modellen fasst die Gründe zusammen, warum es störend ist:

  • Im Allgemeinen ist nicht klar, dass die Nullverteilung des berechneten Verhältnisses der Quadratsummen tatsächlich eine F-Verteilung für jede Wahl von Nennerfreiheitsgraden ist. Während dies für Sonderfälle gilt, die klassischen experimentellen Designs entsprechen (verschachtelt, Split-Plot, randomisierter Block usw.), gilt dies anscheinend nicht für komplexere Designs (unsymmetrisch, GLMMs, zeitliche oder räumliche Korrelation usw.).
  • Für jedes vorgeschlagene Rezept mit einfachen Freiheitsgraden (Spur der Hutmatrix usw.) scheint es mindestens ein ziemlich einfaches Gegenbeispiel zu geben, bei dem das Rezept schlecht ausfällt.
  • Andere vorgeschlagene df-Approximationsschemata (Satterthwaite, Kenward-Roger usw.) wären anscheinend ziemlich schwer in lme4 / nlme zu implementieren,
    (...)
  • Weil die Hauptautoren von lme4 nicht von der Nützlichkeit des allgemeinen Testansatzes in Bezug auf eine ungefähre Nullverteilung überzeugt sind und weil sich jeder andere in den Code vertieft, um die relevanten Funktionen (als Patch oder Add) zu aktivieren -on) ist es unwahrscheinlich, dass sich diese Situation in Zukunft ändert.

Die FAQ gibt auch einige Alternativen

  • Verwenden Sie für GLMMs MASS :: glmmPQL (verwendet alte nlme-Regeln, die ungefähr den SAS-Regeln für Innen und Außen entsprechen) oder für LMMs (n) lme
  • Erraten Sie den Nenner df anhand von Standardregeln (für Standarddesigns) und wenden Sie sie auf t- oder F-Tests an
  • Führen Sie das Modell in lme aus (falls möglich) und verwenden Sie den dort angegebenen Nenner df (der einer einfachen 'Innen-Außen'-Regel folgt, die der kanonischen Antwort für einfache / orthogonale Designs entsprechen sollte), angewendet auf t- oder F-Tests. Die explizite Spezifikation der von mir verwendeten Regeln finden Sie auf Seite 91 von Pinheiro und Bates - diese Seite ist in Google Books verfügbar
  • SAS, Genstat (AS-REML), Stata verwenden?
  • Nehmen Sie einen unendlichen Nenner df an (dh Z / Chi-Quadrat-Test anstelle von t / F), wenn die Anzahl der Gruppen groß ist (> 45? Es wurden verschiedene Faustregeln für die Größe "ungefähr unendlich" aufgestellt, einschließlich [in Angrist und Pischke's "Meist harmlose Ökonometrie"], 42 (als Hommage an Douglas Adams)

Wenn Sie jedoch an Konfidenzintervallen interessiert sind, gibt es bessere Ansätze, z. B. basierend auf dem Bootstrap, wie er von Karl Ove Hufthammer in seiner Antwort vorgeschlagen wurde, oder den in den FAQ vorgeschlagenen.


"Errate den Nenner df anhand von Standardregeln (für Standarddesigns) und wende sie auf t- oder F-Tests an"; Ich würde wirklich gerne, wenn jemand darauf näher eingehen könnte. Wie erhalten wir beispielsweise für ein verschachteltes Design (z. B. Patienten gegen Kontrollen, mehrere Stichproben pro Subjekt; wobei die Subjekt-ID der zufällige Effekt ist) die Freiheitsgrade für ein solches Design?
Arnaud A
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.