繁体   English   中英

曲线图逻辑回归

[英]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 上的交互作用。

我遇到了两个问题。

  1. 我为目标 1 使用了以下代码:
#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' 必须是有限数”如何解决? 太感谢了

  1. 我不知道如何在二元结果上绘制与两个连续变量的交互。 任何人都可以提供一些方向吗? 谢谢!

表示涉及三个因变量的回归可能很困难,因为它实际上是一个四维结构。 但是,由于其中一个变量(性别)只有两个级别,而社会类有 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM