[英]Curve Plot logistic regression
这是我的模型。 Exam_taken 是二元变量(0,1),社会阶层(1-10 尺度)和 GDP 是连续变量。
fit<-glm(Exam_taken~Gender+Social_class*GDP, data=final, family=binomial(link="probit")
summary(fit)
我需要绘制图表。 目标 1) Social_class 和 Exam_taken 之间的关系; 目标 2) Social_class*GDP 在 Exam_taken 上的交互作用。
我遇到了两个问题。
#exclude missing values
final=subset(final, final$Social_class!="NA")
final=subset(final, final$Exam_taken!="NA")
#graph
library(popbio)
logi.hist.plot(final$Social_class, final$Exam_taken, boxp=FALSE, type = "hist")
我收到一个错误“seq.default(min(independ),max(independ),len=100) 中的错误:'from' 必须是有限数”如何解决? 太感谢了
表示涉及三个因变量的回归可能很困难,因为它实际上是一个四维结构。 但是,由于其中一个变量(性别)只有两个级别,而社会类有 10 个离散级别,我们可以使用色阶和分面来显示模型。 首先,我们创建一个数据框,其中包含性别和社会阶层的所有组合,每个 GDP 值从 1000 美元到 100,000 美元不等
pred_df <- expand.grid(Gender = c("Male", "Female"),
Social_class = 1:10,
GDP = 1:100 * 1000)
现在我们得到每种组合参加考试的概率:
pred_df$fit <- predict(fit, newdata = pred_df, type = "response")
然后我们可以像这样绘制模型预测:
ggplot(pred_df, aes(GDP, fit, colour = Social_class, group = Social_class)) +
geom_line() +
facet_grid(Gender~.) +
scale_x_continuous(labels = scales::dollar, limits = c(0, 1e5)) +
labs(y = "Probability of taking exam",
color = "Social class") +
scale_color_viridis_c(breaks = 1:10) +
theme_minimal(base_size = 16) +
guides(color = guide_colorbar(barheight = unit(50, "mm")))
使用的数据
显然,我们没有您的数据,但我们可以根据您的描述和代码提供线索,做出合理的复制。
set.seed(1)
final <- data.frame(Gender = rep(c("Male", "Female"), 100),
Social_class = sample(10, 200, TRUE),
GDP = 1000 * sample(20:60, 200, TRUE))
final$Exam_taken <- rbinom(200, 1,
c(0, 0.1) + 0.05 * final$Social_class +
final$GDP/1e5 - 0.2)
您可以使用sjPlot
包绘制模型的预测值。 如果保存plot_model()
函数的输出,则可以使用ggplot2
修改其外观。
这是可以向您展示此包的其他选项的众多页面之一: https ://cran.r-project.org/web/packages/sjPlot/vignettes/plot_model_estimates.html
library(sjPlot)
plot_model(fit, type = "int")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.