Я установил смешанную модель, используя пакет lme4
.Я преобразовал свои независимые переменные с помощью функции scale()
до подгонки модели.Теперь я хочу отобразить свои результаты на графике, используя predict()
, поэтому мне нужно, чтобы прогнозные данные вернулись в исходный масштаб.Как мне это сделать?
Упрощенный пример:
database <- mtcars
# Scale data
database$wt <- scale(mtcars$wt)
database$am <- scale(mtcars$am)
# Make model
model.1 <- glmer(vs ~ scale(wt) + scale(am) + (1|carb), database, family = binomial, na.action = "na.fail")
# make new data frame with all values set to their mean
xweight <- as.data.frame(lapply(lapply(database[, -1], mean), rep, 100))
# make new values for wt
xweight$wt <- (wt = seq(min(database$wt), max(database$wt), length = 100))
# predict from new values
a <- predict(model.1, newdata = xweight, type="response", re.form=NA)
# returns scaled prediction
Я пытался использовать этот пример для обратного преобразования прогнозов:
# save scale and center values
scaleList <- list(scale = attr(database$wt, "scaled:scale"),
center = attr(database$wt, "scaled:center"))
# back-transform predictions
a.unscaled <- a * scaleList$scale + scaleList$center
# Make model with unscaled data to compare
un.model.1 <- glmer(vs ~ wt + am + (1|carb), mtcars, family = binomial, na.action = "na.fail")
# make new data frame with all values set to their mean
un.xweight <- as.data.frame(lapply(lapply(mtcars[, -1], mean), rep, 100))
# make new values for wt
un.xweight$wt <- (wt = seq(min(mtcars$wt), max(mtcars$wt), length = 100))
# predict from new values
b <- predict(un.model.1, newdata = xweight, type="response", re.form=NA)
all.equal(a.unscaled,b)
# [1] "Mean relative difference: 0.7223061"
Это не работает - не должно быть никакой разницы. Что я сделал не так?
Я также рассмотрел ряд подобных вопросов, но не смог применить ни один к моему делу ( Как вывести коэффициенты из лмера() -модель с масштабированным откликом , параметры немасштабирования и блеска без центра , Уменьшение коэффициентов линейной регрессии в R по масштабированным и центрированным данным , https://stats.stackexchange.com/questions/302448/back-transform-mixed-effects-models-regression-coefficients-for-fixed-effects-f).