glm.nb拟合负二项回归用interplot绘交互图报错如何解决
问题核心解答
interplot包默认不原生支持MASS::glm.nb()拟合返回的negbin类模型对象,你看到的报错是因为包依赖的参数模拟泛型函数sim()没有适配negbin类,找不到对应的执行方法。- 负二项回归的交互效应图可以通过以下几种方案实现:
方案1:使用marginaleffects包绘制(推荐,适配性最好)
marginaleffects包是当前对各类回归模型适配范围最广的边际效应/交互效应绘图工具,无需修改模型属性,直接支持negbin类对象。
# 首次使用先安装 install.packages("marginaleffects") library(marginaleffects) # 1. 绘制预测值类交互图:展示两个交互变量不同取值组合下的因变量预测值 # aid1和aid的交互 plot_predictions(model, condition = list("aid1", "aid")) # Adjusted.aid1和Adjusted.aid2的交互 plot_predictions(model, condition = list("Adjusted.aid1", "Adjusted.aid2")) # 2. 如果需要绘制边际效应类交互图:展示一个变量的边际效应随另一个调节变量的变化趋势 # 例:aid的边际效应随aid1的变化 plot_slopes(model, variables = "aid", condition = "aid1")
方案2:临时修改模型类适配interplot
如果需要沿用interplot的绘图风格,可以临时修改模型的类属性,让interplot可以调用适配glm类的sim方法完成计算。
注意:修改类属性前建议备份原模型对象,避免后续其他分析调用模型时出现异常。
# 备份原模型 model_backup <- model # 临时修改模型类为glm/lm,适配interplot的方法调用 class(model) <- c("glm", "lm") # 运行原interplot代码即可出图 interplot(m = model, var1 = "aid1", var2 = "aid") interplot(m = model, var1 = "Adjusted.aid1", var2 = "Adjusted.aid2") # 用完后恢复原模型类 model <- model_backup
方案3:使用effects包绘制交互效应
effects包同样原生支持negbin类模型,可以直接输出交互项的效应图:
# 首次使用先安装 install.packages("effects") library(effects) # 生成指定交互项的效应对象并绘图 plot(effect("aid1*aid", model)) plot(effect("Adjusted.aid1*Adjusted.aid2", model))
内容的提问来源于stack exchange,提问作者Taco
相关产品推荐
相关产品推荐

