Come posso verificare se un effetto casuale è significativo?


34

Sto cercando di capire quando usare un effetto casuale e quando non è necessario. Mi è stato detto che una regola empirica è se hai 4 o più gruppi / individui che faccio (15 alci individuali). Alcuni di questi alci sono stati sperimentati 2 o 3 volte per un totale di 29 prove. Voglio sapere se si comportano in modo diverso quando si trovano in paesaggi a rischio più elevato. Quindi, ho pensato di impostare l'individuo come effetto casuale. Tuttavia, ora mi viene detto che non è necessario includere l'individuo come effetto casuale poiché non vi sono molte variazioni nella loro risposta. Quello che non riesco a capire è come verificare se c'è davvero qualcosa che viene preso in considerazione quando si imposta l'individuo come effetto casuale. Forse una domanda iniziale è: Quale test / diagnostica posso fare per capire se Individuo è una buona variabile esplicativa e dovrebbe essere un effetto fisso - grafici qq? istogrammi? grafici a dispersione? E cosa avrei cercato in quegli schemi.

Ho eseguito il modello con l'individuo come effetto casuale e senza, ma poi ho letto http://glmm.wikidot.com/faq dove dichiarano:

non confrontare i modelli lmer con i corrispondenti adattamenti lm o glmer / glm; le probabilità logaritmiche non sono commisurate (ovvero includono termini additivi diversi)

E qui suppongo che ciò significhi che non puoi confrontare tra un modello con effetto casuale o senza. Ma non saprei davvero cosa dovrei confrontare tra loro comunque.

Nel mio modello con l'effetto Casuale stavo anche provando a guardare l'output per vedere che tipo di evidenza o significato ha l'IR

lmer(Velocity ~ D.CPC.min + FD.CPC + (1|ID), REML = FALSE, family = gaussian, data = tv)

Linear mixed model fit by maximum likelihood 
Formula: Velocity ~ D.CPC.min + FD.CPC + (1 | ID) 
   Data: tv 
    AIC    BIC logLik deviance REMLdev
 -13.92 -7.087  11.96   -23.92   15.39
Random effects:
 Groups   Name        Variance Std.Dev.
 ID       (Intercept) 0.00000  0.00000 
 Residual             0.02566  0.16019 
Number of obs: 29, groups: ID, 15

Fixed effects:
              Estimate Std. Error t value
(Intercept)  3.287e-01  5.070e-02   6.483
D.CPC.min   -1.539e-03  3.546e-04  -4.341
FD.CPC       1.153e-04  1.789e-05   6.446

Correlation of Fixed Effects:
          (Intr) D.CPC.
D.CPC.min -0.010       
FD.CPC    -0.724 -0.437

Vedi che la mia varianza e SD dal singolo ID come effetto casuale = 0. Come è possibile? Cosa significa 0? È giusto? Quindi il mio amico che ha detto "dal momento che non vi è alcuna variazione usando ID come effetto casuale non è necessario" è corretto? Quindi, lo userò come effetto fisso? Ma il fatto che ci siano così poche variazioni significa che non ci dirà molto comunque?


Per informazioni su come ottenere una varianza 0 esatta di un effetto casuale, consultare stats.stackexchange.com/questions/115090 .
ameba dice che ripristini Monica il

Risposte:


21

La stima, IDvarianza = 0, indica che il livello di variabilità tra i gruppi non è sufficiente a giustificare l'inclusione di effetti casuali nel modello; vale a dire. il tuo modello è degenerato.

Quando ti identifichi correttamente: molto probabilmente sì; IDcome effetto casuale non è necessario. Poche cose vengono in mente per testare questo assunto:

  1. Puoi confrontare (usando REML = Fsempre) l'AIC (o il tuo IC preferito in generale) tra un modello con e senza effetti casuali e vedere come va.
  2. Guarderesti l' anova()output dei due modelli.
  3. È possibile eseguire un bootstrap parametrico utilizzando la distribuzione posteriore definita dal modello originale.

Tenete presente che le scelte 1 e 2 hanno un problema: state verificando qualcosa che si trovi sui confini dello spazio dei parametri, quindi in realtà non sono tecnicamente validi. Detto questo, non credo che otterrai loro intuizioni sbagliate e molte persone le usano (ad es. Douglas Bates, uno degli sviluppatori di lme4, le usa nel suo libro, ma afferma chiaramente questo avvertimento sui valori dei parametri da testare al limite dell'insieme dei possibili valori). Choice 3 è il più noioso dei 3 ma in realtà ti dà la migliore idea di ciò che sta succedendo. Alcune persone sono tentate di usare anche bootstrap non parametrici, ma penso che, dato il fatto che stai facendo ipotesi parametriche per iniziare con te, potresti anche usarle.


6
Il pacchetto RLRsim è un modo davvero conveniente per testare gli effetti casuali usando i test del rapporto di verosimiglianza basati sulla simulazione.
atrichornis,

@atrichornis: +1. Pacchetto interessante; Non lo sapevo. Ho appena dato un'occhiata al suo codice, piuttosto semplice, potrei dire. Vorrei che lo incorporassero (o qualcosa del genere) lme4soprattutto ora che mcmcsamp()è rotto e alle persone rimangono solo le loro implementazioni bootstrap ad hoc per ottenere alcuni p-value decenti ecc.
Usεr11852 dice Reinstate Monic il

È vero, i modelli misti non sono semplici in R. Molte approssimazioni e soluzioni alternative ... Anche se raccolgo SAS ecc., Cerco solo alcune delle stesse incertezze? Ben Bolker è coautore di entrambi i pacchetti, potrebbe avere le sue ragioni per non incorporarlo. Probabilmente tempo!
atrichornis,

4
Il bootstrap al limite dello spazio dei parametri ha una propria serie di problemi e problemi che portano a incoerenze . Il bootstrap non è una panacea e non deve essere gettato nella borsa con la leggera supposizione che risolverà tutto.
StasK

2
Dai un'occhiata, l'argomento è molto sottile. Per quanto posso ricordare, si riduce al fatto che stai facendo il bootstrap da una distribuzione diversa dal nulla; e date le distribuzioni non standard ottenute sul confine, le condizioni di regolarità vengono violate e la distribuzione bootstrap non converge verso la destinazione. Penso che il bootstrap non parametrico possa ancora essere costruito qui eliminando i mezzi di gruppo di residui. Tuttavia, con la violazione dell'indipendenza delle osservazioni tra i gruppi, può sorgere un altro livello di complicanze.
StasK,

3

Non sono sicuro che l'approccio che sto per suggerire sia ragionevole, quindi coloro che sanno di più su questo argomento mi correggono se sbaglio.

La mia proposta è quella di creare una colonna aggiuntiva nei tuoi dati che abbia un valore costante di 1:

IDconst <- factor(rep(1, each = length(tv$Velocity)))

Quindi, puoi creare un modello che utilizza questa colonna come effetto casuale:

fm1 <- lmer(Velocity ~ D.CPC.min + FD.CPC + (1|IDconst), 
  REML = FALSE, family = gaussian, data = tv)

A questo punto, potresti confrontare (AIC) il tuo modello originale con l'effetto casuale ID(chiamiamolo fm0) con il nuovo modello che non tiene conto IDpoiché IDconstè lo stesso per tutti i tuoi dati.

anova(fm0,fm1)

Aggiornare

user11852 stava chiedendo un esempio, perché secondo la sua opinione l'approccio di cui sopra non verrà nemmeno eseguito. Al contrario, posso dimostrare che l'approccio funziona (almeno con lme4_0.999999-0quello che sto attualmente utilizzando).

set.seed(101)
dataset <- expand.grid(id = factor(seq_len(10)), fac1 = factor(c("A", "B"),
  levels = c("A", "B")), trial = seq_len(10))
dataset$value <- rnorm(nrow(dataset), sd = 0.5) +
      with(dataset, rnorm(length(levels(id)), sd = 0.5)[id] +
      ifelse(fac1 == "B", 1.0, 0)) + rnorm(1,.5)
    dataset$idconst <- factor(rep(1, each = length(dataset$value)))

library(lme4)
fm0 <- lmer(value~fac1+(1|id), data = dataset)
fm1 <- lmer(value~fac1+(1|idconst), data = dataset)

anova(fm1,fm0)

Produzione:

  Data: dataset
  Models:
  fm1: value ~ fac1 + (1 | idconst)
  fm0: value ~ fac1 + (1 | id)

      Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
  fm1  4 370.72 383.92 -181.36                      
  fm0  4 309.79 322.98 -150.89 60.936      0  < 2.2e-16 ***

Secondo quest'ultimo test, dovremmo mantenere l'effetto casuale poiché il fm0modello ha il più basso AIC e BIC.

Aggiornamento 2

A proposito, questo stesso approccio è proposto da NW Galwey in "Introduzione alla modellistica mista: oltre la regressione e l'analisi della varianza" alle pagine 213-214.


Hai testato la tua idea? Per favore, dimostrami che mi sbaglio, ma penso che la tua idea non verrà nemmeno eseguita. Se lo IDconststesso vale per tutti i tuoi dati, non hai alcun raggruppamento. È necessario un fattore di raggruppamento per avere almeno un livello campionato e il modo in cui si imposta il modello non ne ha nessuno. Potrei forse credere alla logica dell'utilizzo di un "raggruppamento casuale", ma è un gioco di palla diverso tutti insieme. Metti alla prova il tuo approccio con alcuni dati fittizi. Sono fermamente convinto che con la configurazione proposta lmer()non funzionerà. (Io uso lme4_0.99999911-1)
usεr11852 dice Reinstate Monic il

@ user11852 Per favore, vedi il mio aggiornamento e facci sapere se questo approccio funziona anche con lme4_0.99999911-1.
VLC,

No, non funzionerà. E ho detto, " non dovrebbe " perché concettualmente non si ha un modello misto per cominciare. (Mi dispiace, potrei sembrare aggressivo nel mio commento precedente.) Immagino che ciò che vuoi provare a ottenere sia impostare la matrice in modo che sia un vettore unitario, ma a meno che tu non trovi un modo per farlo esplicitamente in R (es. Scrivi il tuo propria funzione di devianza) sei sfortunato. Z
usεr11852 dice Reinstate Monic il

3
Sì, ho fatto quello che mi hai suggerito; non funzionerà / calcolerà. Error in lFormula(formula = value ~ fac1 + (1 | idconst), data = dataset) : grouping factors must have at least 1 sampled level. E come ho detto, concettualmente è sbagliato. Non si tratta di ingannare il software per dare alcuni numeri, è una questione se ciò che dici è ragionevole. Non hai un secondo modello misto con cui confrontare se in quel modello l'effetto casuale è per costruzione una costante. Si potrebbe anche escluderlo e provare invece un modello lineare.
usεr11852 dice Reinstate Monic il

1
Aggiorna il concerto definendo una variabile casuale a singolo gruppo in lme4. Questo può essere fatto se si imposta l'opzione: control=lmerControl(check.nlev.gtr.1="ignore"). Ben Bolker lo menziona qui: github.com/lme4/lme4/issues/411 .
Robin Beaumont,

1

Vorrei rispondere alla domanda più "iniziale".

Se sospetti che vi sia un qualche tipo di eterogeneità nella varianza tra la variabile dipendente a causa di alcuni fattori, dovresti andare avanti e tracciare i dati usando grafici a dispersione e box. Alcuni modelli comuni da verificare, ho inserito questo elenco di seguito da varie fonti sul web.

Modelli di eteroschedasticità

Inoltre, tracciare la variabile dipendente in base al gruppo fattore / trattamento per vedere se vi è una varianza costante. Altrimenti, potresti voler esplorare effetti casuali o regressioni ponderate. Per es. questa tabella sotto è un esempio di una varianza a forma di imbuto nei miei gruppi di trattamento. Quindi ho scelto di andare effetti casuali e testare gli effetti su pendenza e intercettazioni.

Boxplot per verificare l'eteroschedasticità

Da qui, le risposte sopra soddisfano la tua domanda principale. Ci sono anche test che verificano l'eteroschedasticità, uno di questi è qui - https://dergipark.org.tr/download/article-file/94971 . Ma non sono sicuro che esistano test per rilevare l'eteroschedasticità a livello di gruppo.


Utilizzare solo il campo "La tua risposta" per fornire risposte alla domanda del PO. Il CV è un sito di domande e risposte rigoroso, non un forum di discussione. Quest'ultima parte in grassetto del tuo post è una nuova domanda, non una risposta a questa domanda. Se hai una nuova domanda, fai clic sul grigio ASK QUESTIONin alto e ponilo lì. Dato che sei nuovo qui, potresti voler partecipare al nostro tour , che contiene informazioni per i nuovi utenti.
gung - Ripristina Monica
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.