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

如何让sjPlot包plot_models使用Robust标准误替代Naive标准误?

使用sjPlot::plot_models生成带稳健标准误(Robust SE's)的置信区间

嗨,这个问题其实sjPlot本身就提供了简便的解决方案,不用额外绕路——核心是利用plot_models()的vcov参数来指定稳健方差-协方差矩阵的计算方式,下面给你两种实用的方法:

方法一:直接指定稳健SE类型(适合常规回归模型)

如果你的模型是lm或glm这类基础回归模型,直接把sandwich包支持的稳健方差类型传给vcov参数就行,不用手动计算矩阵:

# 加载依赖包
library(sjPlot)
library(sandwich)

# 拟合基础线性模型
my_model <- lm(mpg ~ wt + hp, data = mtcars)

# 用HC3稳健SE绘制模型图(HC3是常用的稳健估计类型)
plot_models(my_model, vcov = "HC3")

你可以根据需求替换"HC3"为其他稳健类型,比如"HC"、"HC2"、"HC4",这些都是sandwich包支持的不同稳健标准误计算方式。

方法二:手动计算稳健方差矩阵(适合特殊场景,比如聚类数据)

如果需要处理聚类数据、分层数据这类特殊情况,先手动用sandwich(或其扩展包)计算出稳健方差-协方差矩阵,再传给vcov参数:

# 加载依赖包
library(sjPlot)
library(sandwich)

# 拟合模型(这里按cyl列聚类)
cluster_model <- lm(mpg ~ wt + hp, data = mtcars)

# 计算聚类稳健的方差矩阵
robust_vcov <- vcovCL(cluster_model, cluster = mtcars$cyl)

# 传入plot_models生成带稳健SE的置信区间
plot_models(cluster_model, vcov = robust_vcov)

如果是混合效应模型,可以搭配clubSandwich包来计算聚类稳健SE,再传入vcov参数即可。

额外小技巧:多模型同时使用稳健SE

如果你需要同时绘制多个模型的对比图,也可以给每个模型单独指定稳健SE:

model1 <- lm(mpg ~ wt, data = mtcars)
model2 <- lm(mpg ~ wt + hp + am, data = mtcars)

# 两个模型都用HC3稳健SE
plot_models(model1, model2, vcov = c("HC3", "HC3"))

内容的提问来源于stack exchange,提问作者its.me.adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:16