在R中如何基于HC3稳健标准误构建模型并执行Chow检验?
解决思路与代码实现
核心问题:给LM模型绑定HC3稳健方差,适配Chow检验
R原生lm对象默认使用普通方差,但我们可以通过替换模型的方差-协方差矩阵,或借助专业工具包直接执行稳健版Chow检验,无需单独提取标准误数值。
方法1:给现有LM模型绑定HC3稳健方差
直接修改lm对象的vcov属性,让后续依赖方差矩阵的检验自动调用HC3稳健版本:
# 安装并加载依赖包(首次使用需安装) install.packages("sandwich") library(sandwich) # 拟合基础工资模型 mod <- lm(logsalxhora ~ exper + mujer + menoresde14años_hogar + sq_menoresde14años_hogar + informal + casado + separado + noblanco + q_trabajo, data = ECH.2019) # 将模型的方差矩阵替换为HC3稳健版 mod$vcov <- vcovHC(mod, type = "HC3")
若要查看带稳健标准误的模型结果,可搭配lmtest包的coeftest函数:
install.packages("lmtest") library(lmtest) # 输出带HC3稳健标准误的系数检验结果 coeftest(mod, vcov = mod$vcov)
方法2:直接执行HC3稳健版Chow检验(更高效)
替换手动计算偏差的代码,用lmtest包的waldtest直接生成稳健Chow检验结果:
# 拟合约束模型(全样本模型) mod_restricted <- lm(logsalxhora ~ exper + mujer + menoresde14años_hogar + sq_menoresde14años_hogar + informal + casado + separado + noblanco + q_trabajo, data = ECH.2019) # 拟合两个分样本模型(示例按mujer分组,替换为你的实际分组逻辑) mod1 <- lm(logsalxhora ~ exper + mujer + menoresde14años_hogar + sq_menoresde14años_hogar + informal + casado + separado + noblanco + q_trabajo, data = subset(ECH.2019, mujer == 0)) mod2 <- lm(logsalxhora ~ exper + mujer + menoresde14años_hogar + sq_menoresde14años_hogar + informal + casado + separado + noblanco + q_trabajo, data = subset(ECH.2019, mujer == 1)) # 执行HC3稳健Chow检验 waldtest(mod_restricted, mod1, mod2, vcov = vcovHC, type = "HC3")
该命令会直接输出稳健F统计量与对应p值,无需手动计算偏差,结果更可靠。
内容的提问来源于stack exchange,提问作者Joaquin Pascal
相关产品推荐
相关产品推荐

