ottenere gradi di libertà da Lmer


11

Ho adattato un modello lmer con il seguente (anche se prodotto in uscita):

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

Mi piacerebbe davvero costruire un intervallo di confidenza per ciascun effetto usando la seguente formula:

(n-1)S2χα/2,n-12,(n-1)S2χ1-α/2,n-12

C'è un modo per uscire comodamente dai gradi di libertà?


1
Penso che tu voglia controllare lmerTest . Ci sono una serie di approssimazioni per approssimare il df in un modello a effetti misti per gli effetti fissi (es. Satterthwaite , Kenward-Roger, ecc.) Per il tuo caso mi sembra che tu abbia complicato la tua vita. Supponi che ogni effetto sia gaussiano. Usa la deviazione standard per ottenere l'intervallo di confidenza che preferisci.
usεr11852,

3
@ usεr11852 In un modello a effetti misti supponi che ogni effetto sia gaussiano, ma il parametro è la varianza della distribuzione gaussiana, non la media. Pertanto, la distribuzione del suo stimatore sarà molto distorta e l'intervallo di confidenza delle deviazioni standard ± 2 normali non sarà appropriato.
Karl Ove Hufthammer,

1
@KarlOveHufthammer: hai ragione a sottolinearlo; Vedo cosa intendi tu (e probabilmente l'OP). Pensavo fosse preoccupato per i mezzi e / o le realizzazioni degli effetti casuali mentre menzionava i gradi di libertà.
usεr11852,

i gradi di libertà sono "problematici" per i modelli misti, vedi: stat.ethz.ch/pipermail/r-help/2006-May/094765.html e stats.stackexchange.com/questions/84268/…
Tim

Risposte:


17

Vorrei invece solo creare intervalli di confidenza della probabilità del profilo . Sono affidabili e molto facili da calcolare usando il pacchetto 'lme4'. Esempio:

> 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       

Ora puoi calcolare gli intervalli di confidenza della probabilità del profilo con la confint()funzione:

> 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

È inoltre possibile utilizzare il bootstrap parametrico per calcolare gli intervalli di confidenza. Ecco la sintassi R (usando l' parmargomento per limitare per quali parametri vogliamo intervalli di confidenza):

> 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

I risultati varieranno naturalmente in qualche modo per ogni corsa. È possibile aumentare nsimper ridurre questa variazione, ma ciò aumenterà anche il tempo necessario per stimare gli intervalli di confidenza.


1
Buona risposta (+1). Vorrei anche menzionare il fatto che in questo caso si possono ottenere anche elementi della configurazione da bootstrap parametrico . Questo thread contiene una discussione molto interessante sull'argomento.
usεr11852,

@ usεr11852 Grazie per il suggerimento. Ho ora aggiunto un esempio usando il bootstrap parametrico.
Karl Ove Hufthammer,

6

I gradi di libertà per i modelli misti sono "problematici". Per saperne di più puoi consultare lmer, i valori p e tutto quel post di Douglas Bates. Anche le domande frequenti sui modelli misti r-sig sintetizzano i motivi per cui è fastidioso:

  • In generale non è chiaro che la distribuzione nulla del rapporto calcolato delle somme dei quadrati sia in realtà una distribuzione F, per qualsiasi scelta di gradi di libertà del denominatore. Sebbene ciò sia vero per casi speciali che corrispondono a disegni sperimentali classici (nidificati, splitplot, blocchi randomizzati, ecc.), Apparentemente non è vero per progetti più complessi (sbilanciati, GLMM, correlazione temporale o spaziale, ecc.).
  • Per ogni semplice ricetta di gradi di libertà suggerita (traccia della matrice del cappello, ecc.) Sembra esserci almeno un controesempio abbastanza semplice in cui la ricetta fallisce male.
  • Altri schemi di approssimazione df che sono stati suggeriti (Satterthwaite, Kenward-Roger, ecc.) Sarebbero apparentemente abbastanza difficili da implementare in lme4 / nlme,
    (...)
  • Perché gli autori primari di lme4 non sono convinti dell'utilità dell'approccio generale dei test con riferimento a una distribuzione nulla approssimativa, e a causa del sovraccarico di chiunque scava nel codice per abilitare la funzionalità pertinente (come patch o aggiunta -on), è improbabile che questa situazione cambi in futuro.

Le FAQ offrono anche alcune alternative

  • usa MASS :: glmmPQL (usa le vecchie regole nlme approssimativamente equivalenti alle regole SAS "interno-esterno") per i GLMM o (n) lme per i LMM
  • Indovina il denominatore df dalle regole standard (per i disegni standard) e applicale ai test t o F.
  • Esegui il modello in lme (se possibile) e usa il denominatore df qui riportato (che segue una semplice regola 'interno-esterno' che dovrebbe corrispondere alla risposta canonica per i disegni semplici / ortogonali), applicato ai test t o F. Per la specifica esplicita delle regole utilizzate da lme, vedere pagina 91 di Pinheiro e Bates: questa pagina è disponibile su Google Libri
  • usare SAS, Genstat (AS-REML), Stata?
  • Supponiamo un denominatore infinito df (cioè test Z / chi-quadrato anziché t / F) se il numero di gruppi è grande (> 45? Sono state poste varie regole empiriche per quanto è grande "approssimativamente infinito", tra cui [in Angrist e Pischke '' Mostly Harmless Econometrics ''], 42 (in omaggio a Douglas Adams)

Ma se sei interessato a intervalli di confidenza ci sono approcci migliori, ad esempio basati sul bootstrap come suggerito da Karl Ove Hufthammer nella sua risposta, o quelli proposti nelle FAQ.


"Indovina il denominatore df dalle regole standard (per i disegni standard) e applicale ai test t o F"; Mi piacerebbe davvero che qualcuno potesse approfondire questo. Ad esempio, per un disegno nidificato (es. Pazienti vs controlli, diversi campioni per soggetto; con l'ID soggetto come effetto casuale), come possiamo ottenere i gradi di libertà per un tale disegno?
Arnaud A
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.