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

如何为R中margins包得到的平均边际效应(AME)计算聚类标准误?

为Probit模型的平均边际效应(AME)计算聚类标准误

要给margins计算的AME添加聚类标准误,核心是结合sandwich包构造聚类调整的方差-协方差矩阵,再传递给margins或lmtest::coeftest。以下是具体步骤:

所需包

确保加载必要的R包:

library(glm)
library(lmtest)
library(margins)
library(sandwich)

步骤1:估计Probit模型

先拟合基础的probit模型:

# 示例:用mtcars数据,因变量am(二分类),自变量hp、wt
model1 <- glm(am ~ hp + wt, data = mtcars, family = binomial(link = "probit"))

步骤2:构造聚类方差-协方差矩阵

使用sandwich::vcovCL生成聚类调整的方差矩阵,指定聚类变量(比如按cyl聚类):

cluster_var <- ~ cyl # 替换为你的实际聚类变量
vcov_cluster <- vcovCL(model1, cluster = cluster_var)

如果需要多重聚类,直接在公式中添加多个变量即可,比如~ group1 + group2。

步骤3:计算带聚类标准误的AME

有两种常用方式:

方式1:在margins中直接指定vcov

计算AME时传入聚类方差矩阵,后续summary会直接输出调整后的标准误:

AME <- margins(model1, variables = c("hp", "wt"), vcov = vcov_cluster)
summary(AME)

方式2:用coeftest重新计算标准误

如果已经计算了AME对象,可通过lmtest::coeftest传入聚类方差矩阵,输出更简洁的统计结果:

AME <- margins(model1, variables = c("hp", "wt"))
coeftest(AME, vcov = vcov_cluster)

原理说明

margins计算的边际效应的方差依赖于原模型的方差-协方差矩阵。vcovCL生成的聚类调整矩阵,会被用来重新计算AME的标准误、t值和p值,从而得到聚类稳健的统计推断结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:03:21