Я пытаюсь отобразить результаты логистической регрессии. Моя модель подходила с помощью glmer () из пакета lme4, затем я использовал MuMIn для усреднения модели.
Упрощенная версия моей модели с использованием набора данных mtcars
:
glmer(vs ~ wt + am + (1|carb), database, family = binomial, na.action = "na.fail")
Мой желаемый результат - два графика, которые показывают прогнозируемую вероятность того, что vs
= 1, один для wt
, который является непрерывным, один для am
, который является биномиальным.
ОБНОВЛЕНИЕ:
Я получил много работы после комментариев @ KamilBartoń:
database <- mtcars
# Scale data
database$wt <- scale(mtcars$wt)
database$am <- scale(mtcars$am)
# Make global model
model.1 <- glmer(vs ~ wt + am + (1|carb), database, family = binomial, na.action = "na.fail")
# Model selection
model.1.set <- dredge(model.1, rank = "AICc")
# Get models with <10 delta AICc
top.models.1 <- get.models(model.1.set,subset = delta<10)
# Model averaging
model.1.avg <- model.avg(top.models.1)
# make dataframe with all values set to their mean
xweight <- as.data.frame(lapply(lapply(database[, -1], mean), rep, 100))
# add new sequence of wt to xweight along range of data
xweight$wt <- (wt = seq(min(database$wt), max(database$wt), length = 100))
# predict new values
yweight <- predict(model.1.avg, newdata = xweight, type="response", re.form=NA)
# Make plot
plot(database$wt, database$vs, pch = 20, xlab = "WEIGHT (g)", ylab = "VS")
# Add predicted line
lines(xweight$wt, yweight)
Производит:
![enter image description here](https://i.stack.imgur.com/SQlTx.png)
Остается проблема, что данные масштабируются и центрируются вокруг 0, что означает невозможность интерпретации графика. Я могу изменить масштаб данных, используя ответ @BenBolker на на этот вопрос , но он отображается неправильно:
## Ben Bolker's unscale function:
## scale variable x using center/scale attributes of variable y
scfun <- function(x,y) {
scale(x,
center=attr(y,"scaled:center"),
scale=attr(y,"scaled:scale"))
}
## scale prediction frame with scale values of original data -- for all variables
xweight_sc <- transform(xweight,
wt = scfun(wt, database$wt),
am = scfun(am, database$am))
# predict new values
yweight <- predict(model.1.avg, newdata = xweight_sc, type="response", re.form=NA)
# Make plot
plot(mtcars$wt, mtcars$vs, pch = 20, xlab = "WEIGHT (g)", ylab = "VS")
# Add predicted line
lines(xweight$wt, yweight)
Производит:
![enter image description here](https://i.stack.imgur.com/JWt5P.png)
Я вижу, что сюжетная линия там, но она не в том месте. Я пробовал это несколькими способами, но не могу понять, в чем проблема. Что я сделал не так?
Также еще одна оставшаяся проблема: Как сделать биномиальный график для am
?