Entrambi i concetti citati (valori di p e dimensioni dell'effetto di modelli misti lineari) presentano problemi intrinseci. Per quanto riguarda le dimensioni dell'effetto , citando Doug Bates, l'autore originale di lme4
,
Supponendo che si voglia definire una misura , penso che si potrebbe argomentare per trattare la somma residua penalizzata di quadrati da un modello misto lineare nello stesso modo in cui consideriamo la somma residua di quadrati da un modello lineare. Oppure si potrebbe usare solo la somma residua di quadrati senza la penalità o la somma minima residua di quadrati ottenibili da un determinato insieme di termini, che corrisponde a una matrice di precisione infinita. Non lo so, davvero. Dipende da cosa stai cercando di caratterizzare.R2
Per ulteriori informazioni, puoi guardare questo thread , questo thread e questo messaggio . Fondamentalmente, il problema è che non esiste un metodo concordato per l'inclusione e la decomposizione della varianza dagli effetti casuali nel modello. Tuttavia, ci sono alcuni standard che vengono utilizzati. Se dai un'occhiata al Wiki creato per / dalla mailing list di modelli misti r-sig , ci sono un paio di approcci elencati.
Uno dei metodi suggeriti esamina la correlazione tra i valori adattati e quelli osservati. Questo può essere implementato in R come suggerito da Jarrett Byrnes in uno di quei thread:
r2.corr.mer <- function(m) {
lmfit <- lm(model.response(model.frame(m)) ~ fitted(m))
summary(lmfit)$r.squared
}
Ad esempio, supponiamo che stimiamo il seguente modello misto lineare:
set.seed(1)
d <- data.frame(y = rnorm(250), x = rnorm(250), z = rnorm(250),
g = sample(letters[1:4], 250, replace=T) )
library(lme4)
summary(fm1 <- lmer(y ~ x + (z | g), data=d))
# Linear mixed model fit by REML ['lmerMod']
# Formula: y ~ x + (z | g)
# Data: d
# REML criterion at convergence: 744.4
#
# Scaled residuals:
# Min 1Q Median 3Q Max
# -2.7808 -0.6123 -0.0244 0.6330 3.5374
#
# Random effects:
# Groups Name Variance Std.Dev. Corr
# g (Intercept) 0.006218 0.07885
# z 0.001318 0.03631 -1.00
# Residual 1.121439 1.05898
# Number of obs: 250, groups: g, 4
#
# Fixed effects:
# Estimate Std. Error t value
# (Intercept) 0.02180 0.07795 0.280
# x 0.04446 0.06980 0.637
#
# Correlation of Fixed Effects:
# (Intr)
# x -0.005
Possiamo calcolare la dimensione dell'effetto usando la funzione sopra definita:
r2.corr.mer(fm1)
# [1] 0.0160841
Un'alternativa simile è raccomandata in un documento di Ronghui Xu , indicato come , e può essere calcolato in R semplicemente:Ω20
1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721 # Usually, it would be even closer to the value above
Per quanto riguarda i valori di p , questo è un problema molto più controversa (almeno nella R / lme4
comunità). Vedi le discussioni nelle domande qui , qui e qui, tra molte altre. Facendo nuovamente riferimento alla pagina Wiki, ci sono alcuni approcci per testare le ipotesi sugli effetti nei modelli misti lineari. Elencato dal "peggiore al migliore" (secondo gli autori della pagina Wiki che credo includa Doug Bates e Ben Bolker che contribuisce molto qui):
- Test Z di Wald
- Per LMM bilanciati e annidati in cui è possibile calcolare df: Wald t-test
- Test del rapporto di verosimiglianza, impostando il modello in modo che il parametro possa essere isolato / eliminato (tramite
anova
o drop1
) oppure tramite il calcolo dei profili di verosimiglianza
- MCMC o intervalli di confidenza bootstrap parametrici
Raccomandano l'approccio di campionamento della catena Markov di Monte Carlo ed elencano anche una serie di possibilità per attuare questo da approcci pseudo e completamente bayesiani, elencati di seguito.
Pseudo-Bayesiano:
- Campionamento post-hoc, in genere (1) assumendo priori piatti e (2) a partire dall'MLE, possibilmente utilizzando la stima approssimativa della varianza-covarianza per scegliere una distribuzione candidata
- Via
mcmcsamp
(se disponibile per il tuo problema: ad esempio LMM con semplici effetti casuali - non GLMM o complessi effetti casuali)
Via pvals.fnc
nel languageR
pacchetto, un wrapper per mcmcsamp
)
- In AD Model Builder, eventualmente tramite il
glmmADMB
pacchetto (utilizzare l' mcmc=TRUE
opzione) o il R2admb
pacchetto (scrivere la propria definizione del modello in AD Model Builder) o al di fuori di R
- Tramite la
sim
funzione dal arm
pacchetto (simula il posteriore solo per i coefficienti beta (ad effetto fisso)
Approcci completamente bayesiani:
- Tramite il
MCMCglmm
pacchetto
- Utilizzo
glmmBUGS
(un'interfaccia wrapper / R di WinBUGS )
- Utilizzando JAGS / WinBUGS / OpenBUGS ecc., Tramite i pacchetti
rjags
/ r2jags
/ R2WinBUGS
/BRugs
Per motivi di illustrazione per mostrare come potrebbe apparire, di seguito è una MCMCglmm
stima che utilizza il MCMCglmm
pacchetto che vedrai produce risultati simili al modello sopra e ha una sorta di valori p bayesiani:
library(MCMCglmm)
summary(fm2 <- MCMCglmm(y ~ x, random=~us(z):g, data=d))
# Iterations = 3001:12991
# Thinning interval = 10
# Sample size = 1000
#
# DIC: 697.7438
#
# G-structure: ~us(z):g
#
# post.mean l-95% CI u-95% CI eff.samp
# z:z.g 0.0004363 1.586e-17 0.001268 397.6
#
# R-structure: ~units
#
# post.mean l-95% CI u-95% CI eff.samp
# units 0.9466 0.7926 1.123 1000
#
# Location effects: y ~ x
#
# post.mean l-95% CI u-95% CI eff.samp pMCMC
# (Intercept) -0.04936 -0.17176 0.07502 1000 0.424
# x -0.07955 -0.19648 0.05811 1000 0.214
Spero che questo aiuti un po '. Penso che il miglior consiglio per qualcuno che inizi con modelli misti lineari e cerchi di stimarli in R sia quello di leggere le domande frequenti su Wiki da cui è stata ricavata la maggior parte di queste informazioni. È una risorsa eccellente per tutti i tipi di temi di effetti misti, da quelli di base a quelli avanzati, dalla modellazione alla trama.
anova()
funzione per ottenere una tabella anova con modelli misti lineari proprio come con i modelli lineari.