使用多个预测变量绘制逻辑回归?
Plotting logistic regression with multiple predictors?
我运行以下逻辑回归:
model<-glm(Choice~Cat+Dog+Rabbit+Cow,data=database,family=binomial(link="logit"))
summary(model)
现在,我想用所有四个预测变量可视化此回归。谢谢!!
你有一个多元回归,所以你需要改变一个变量并保持其他变量不变,这称为边际效应。您可以从头开始编写代码以将其可视化,我认为有一些有用的包,例如 ggeffects or sjplot。在我使用示例数据集并绘制效果之前:
library(ggeffects)
dat = iris
dat$Species = as.numeric(dat$Species=="versicolor")
mdl = glm(Species ~ .,data=dat,family="binomial")
summary(mdl)
Call:
glm(formula = Species ~ ., family = "binomial", data = dat)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1280 -0.7668 -0.3818 0.7866 2.1202
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.3785 2.4993 2.952 0.003155 **
Sepal.Length -0.2454 0.6496 -0.378 0.705634
Sepal.Width -2.7966 0.7835 -3.569 0.000358 ***
Petal.Length 1.3136 0.6838 1.921 0.054713 .
Petal.Width -2.7783 1.1731 -2.368 0.017868 *
想像一个:
plot(ggpredict(mdl,"Petal.Width"))
为所有变量绘制这些图:
library(patchwork)
plts = lapply(names(coefficients(mdl))[-1],function(i){
return(plot(ggpredict(mdl,i)))
})
wrap_plots(plts)
如前所述,这些地块是通过边际效应获得的,即将其他地块保持在平均值。您还可以通过将另一个变量保持在不同的值来探索它,例如:
plot(ggpredict(mdl,c("Petal.Width","Petal.Length")))
我运行以下逻辑回归:
model<-glm(Choice~Cat+Dog+Rabbit+Cow,data=database,family=binomial(link="logit"))
summary(model)
现在,我想用所有四个预测变量可视化此回归。谢谢!!
你有一个多元回归,所以你需要改变一个变量并保持其他变量不变,这称为边际效应。您可以从头开始编写代码以将其可视化,我认为有一些有用的包,例如 ggeffects or sjplot。在我使用示例数据集并绘制效果之前:
library(ggeffects)
dat = iris
dat$Species = as.numeric(dat$Species=="versicolor")
mdl = glm(Species ~ .,data=dat,family="binomial")
summary(mdl)
Call:
glm(formula = Species ~ ., family = "binomial", data = dat)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1280 -0.7668 -0.3818 0.7866 2.1202
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.3785 2.4993 2.952 0.003155 **
Sepal.Length -0.2454 0.6496 -0.378 0.705634
Sepal.Width -2.7966 0.7835 -3.569 0.000358 ***
Petal.Length 1.3136 0.6838 1.921 0.054713 .
Petal.Width -2.7783 1.1731 -2.368 0.017868 *
想像一个:
plot(ggpredict(mdl,"Petal.Width"))
为所有变量绘制这些图:
library(patchwork)
plts = lapply(names(coefficients(mdl))[-1],function(i){
return(plot(ggpredict(mdl,i)))
})
wrap_plots(plts)
如前所述,这些地块是通过边际效应获得的,即将其他地块保持在平均值。您还可以通过将另一个变量保持在不同的值来探索它,例如:
plot(ggpredict(mdl,c("Petal.Width","Petal.Length")))