You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何针对zeroinfl()模型的零膨胀部分绘制边际效应图?

零膨胀负二项回归模型零膨胀部分边际效应可视化方法

针对你用pscl::zeroinfl()构建的零膨胀负二项回归模型,要单独提取零膨胀部分变量lfpsimusa的边际效应并可视化,有以下几种可行方法:

方法1:使用marginaleffects包(推荐)

marginaleffects包对pscl的零膨胀模型支持完善,可直接通过component参数指定提取零膨胀部分的效应,代码简洁且默认可视化效果美观。

# 加载依赖包
library(pscl)
library(marginaleffects)

# 构建零膨胀负二项回归模型(替换为你的实际变量与数据集)
model <- zeroinfl(
  count_var ~ x1 + x2 | lfpsimusa + z1 + z2, 
  data = your_dataset, 
  dist = "negbin"
)

# 绘制lfpsimusa对零膨胀概率的边际效应(预测概率曲线)
plot_predictions(
  model,
  variables = "lfpsimusa",
  component = "zero"  # 明确指定提取零膨胀部分
)

# 若需查看斜率型边际效应(变量每单位变化的效应值)
plot_slopes(
  model,
  variables = "lfpsimusa",
  component = "zero"
)

方法2:用sjPlot正确指定参数

你之前用sjPlot::plot_model()失败,大概率是未指定component参数。该函数支持通过此参数提取零膨胀部分:

library(sjPlot)
library(pscl)

# 构建模型(同上)
model <- zeroinfl(count_var ~ x1 + x2 | lfpsimusa + z1 + z2, data = your_dataset, dist = "negbin")

# 绘制零膨胀部分的边际效应预测图
plot_model(
  model,
  type = "pred",  # 预测型边际效应
  terms = "lfpsimusa",  # 指定目标变量
  component = "zero"  # 提取零膨胀部分
)

方法3:手动计算+ggplot2自定义绘图

如果需要高度自定义图形样式,可手动计算零膨胀部分的预测概率,再用ggplot2绘制:

library(pscl)
library(ggplot2)

# 构建模型
model <- zeroinfl(count_var ~ x1 + x2 | lfpsimusa + z1 + z2, data = your_dataset, dist = "negbin")

# 生成新数据:固定其他协变量,生成lfpsimusa的连续序列
new_data <- expand.grid(
  lfpsimusa = seq(min(your_dataset$lfpsimusa), max(your_dataset$lfpsimusa), length.out = 100),
  x1 = mean(your_dataset$x1),  # 连续协变量取均值
  x2 = median(your_dataset$x2),  # 分类协变量可取众数/中位数
  z1 = mean(your_dataset$z1),
  z2 = median(your_dataset$z2)
)

# 预测零膨胀部分的概率及标准误
pred_result <- predict(model, newdata = new_data, type = "zero", se.fit = TRUE)
new_data$zero_prob <- pred_result$fit
new_data$se <- pred_result$se.fit

# 计算95%置信区间
new_data$lower <- new_data$zero_prob - 1.96 * new_data$se
new_data$upper <- new_data$zero_prob + 1.96 * new_data$se

# 绘制自定义边际效应图
ggplot(new_data, aes(x = lfpsimusa, y = zero_prob)) +
  geom_line(linewidth = 1, color = "#2c3e50") +
  geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.2, fill = "#3498db") +
  labs(x = "lfpsimusa", y = "结构零概率", title = "零膨胀部分lfpsimusa的边际效应") +
  theme_minimal()

内容的提问来源于stack exchange,提问作者Victor Schousboe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:28:09