Se uno ha i seguenti datiSintesi del modello di lme4 nella funzione (lmerTest)
d = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), group=rep(c(1:5), 2))
f = as.formula("out ~ explain + age + sex + (1|group)")
e vuole montare un modello lineare con lme4 si può fare
require(lme4)
require(lmerTest)
m = lmer(f, d)
s = summary(m)
che funziona, bene .. .. Ma se il modello è montato all'interno di un'altra funzione come
gglm = function(form, data){
lm = lmer(form, data=data)
return(lm)
}
m2 = gglm(f, d)
s2 = summary(m2)
Ho un errore.
summary from lme4 is returned
some computational error has occurred in lmerTest
Apparentemente, questo è perché il montaggio del modello è stato fatto con un oggetto chiamato data
, che non è visibile nell'ambito esterno. Quindi se faccio data = d
ottengo lo stesso risultato di prima. Tuttavia, se lo faccio
data = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), group=rep(c(1:5), 2))
invece di ottenere dati diversi, il risultato del riepilogo è sbagliato.
Questo sembra non essere il modo migliore per farlo e penso che sia facile sbagliare. Il normale lm
e la relativa funzione summary
non hanno questo problema. Non c'è un modo per rendere il riepilogo lmerTest
meno soggetto a errori?
Sembra un problema di scoping. Dovresti inviare una segnalazione di bug. – Roland
Probabilmente è un bug, ma controlla se http://stackoverflow.com/questions/11778773/using-predict-in-a-function-call-with-nlme-objects-and-a-formula aiuta. –