Ich möchte Vorhersagen für ein gemischtes Modell (logistisch über glmer) für einen neuen Datensatz erstellen, wobei nur die festen Effekte verwendet werden und die zufälligen Effekte auf 0 gehalten werden. Ich habe jedoch Probleme, die Modellmatrix einzurichten, um sie berechnen zu können.
Da die mer-Klasse keine Vorhersagemethode hat und ich die zufälligen Effekte für Vorhersagen auf den neuen Datensatz weglassen möchte, muss ich eine Modellmatrix für die festen Effekte derselben Struktur erstellen, die im Original verwendet wurde Modell, aber unter Verwendung der neuen Daten. Dann multiplizieren Sie mit den festen Effektkoeffizienten im Modell.
Der Teil mit festen Effekten meiner Modellformel enthält Faktoren und Interaktionsterme zwischen numerischen festen Effekten. Daher ist er etwas komplizierter als nur das Extrahieren der festen Variablen aus der Matrix. zB muss ich sicherstellen, dass die Faktorkontrastexpansion mit dem Original übereinstimmt, die Interaktionsterme ordnungsgemäß aufgelistet sind usw.
Meine Frage lautet also: Was ist der einfachere allgemeine Ansatz zum Erstellen einer neuen Modellmatrix, die die Struktur der ursprünglichen Modellmatrix nachahmt, die beim Erstellen des Modells verwendet wurde?
Ich habe model.matrix (my.model, data = newdata) ausprobiert, aber das scheint die ursprüngliche Modellmatrix zurückzugeben, die nicht auf newdata basiert.
Beispielcode:
library(lme4)
cake2 <- head(cake) # cake2 is "new" data frame for future predictions
# recipe is a fixed effect factor, temp is fixed effect numeric, replicate is random effect
m <- lmer(angle ~ temp + recipe + (1 | replicate), data=cake)
summary(m)
nrow(cake2) # but new data frame has 6 rows
nrow(cake) # original data frame has 270 rows
# attempt to make new model matrix using different data frame
mod.mat.cake2 <- model.matrix(m, data=cake2)
nrow(mod.mat.cake2) # 270 rows, same as orig data frame
Ich habe andere Methoden ausprobiert, wie das Extrahieren der Begriffe aus der Formel und das Erstellen einer neuen Formel daraus, aber es schien übermäßig kompliziert und spröde in Bezug auf Handhabungsfaktoren und Interaktionsterme zu sein.
Wie kann ich mod.mat.cake2 zu einer Modellmatrix mit festem Effekt machen, die auf der Formel in m basiert, aber Werte aus cake2 verwendet? Oder gibt es einen einfacheren Weg, um nur Vorhersagen mit festem Effekt von einem früheren Modell zu erhalten?
Jede Hilfe wird geschätzt. Vielen Dank.
quelle
lm()
anpassen, die Modellmatrix aus der Anpassung extrahieren und auf die anwenden Modellkoeffizienten aus der vorherigen Anpassung.Antworten:
Vielleicht ist das Betrug, aber
Hinweis:
lme4.0
hier, die die r-Schmiede - Version von „alt“ ist (CRAN)lme4
: Sie ersetzen können ,lme4
fürlme4.0
den Code obenDie neue (R-Forge / Development) Version von
lme4
hat einepredict
Methode: in diesem Fallfunktioniert gut (
re.form=NA
setzt alle zufälligen Effekte auf Null, waslevel=0
der alten entsprichtpredict.lme
)quelle