R使用dotwhisker绘制多组负二项回归点须图报错问询
问题原因
- 你使用的
dotwhisker 0.7.4版本存在兼容问题:对于负二项回归这类频率模型,提前用broom::tidy()处理后再传入dwplot(),会被函数误判为贝叶斯模型结果,触发不必要的centrality参数校验,就会出现第一个参数不匹配的报错。 - 手动设置
centrality = NULL不符合参数取值要求,函数无法提取有效估计值,自然出现第二个数据行数不匹配的报错。 - 负二项回归不需要额外搭配其他包即可完成点须图绘制,该类模型本身在
dotwhisker的支持范围内,可支持5组及以上回归结果同时展示。
解决方案
方案1:直接传入模型对象(推荐)
不要提前对模型做tidy()处理,直接将模型对象放入列表传入dwplot(),同时明确指定centrality = "mean"即可:
dwplot(list(nblaborforcer, nblaborforcefpercent), centrality = "mean") + ylim(breaks = c("laborforcerl", "laborforcefpercentL"))
5组及以上模型直接往列表里追加模型对象即可正常渲染。
方案2:手动处理tidy结果后传入
如果有提前处理回归结果的需求,给每个tidy后的数据集添加model列标识所属模型,合并后传入并指定centrality = "mean"即可:
# 给每个模型的tidy结果添加标识 nb1$model <- "劳动力规模模型" nb2$model <- "女性劳动力占比模型" # 合并所有模型结果 all_reg_result <- rbind(nb1, nb2) # 绘图 dwplot(all_reg_result, centrality = "mean") + ylim(breaks = c("laborforcerl", "laborforcefpercentL"))
内容的提问来源于stack exchange,提问作者Dylan
相关产品推荐
相关产品推荐

