R语言聚类稳健标准误模型的Wald检验实现方法咨询
运行失败的核心原因
你直接调用waldtest()/`无法运行主要是两个问题:
- 没有为适配聚类稳健标准误传入对应的协方差矩阵,或是函数不支持你当前传入的对象类型(比如选项1中你传入的是
coeftest生成的系数检验矩阵而非原始lm模型对象) - 没有明确指定要检验的原假设约束
三类回归代码对应的Wald检验语法
选项1:基础lm + sandwich包计算聚类稳健标准误
需配合lmtest包的waldtest函数,显式传入聚类稳健协方差矩阵参数即可,不需要依赖coeftest的输出结果:
# 提前加载依赖包 library(lmtest) library(sandwich) # 示例1:检验所有自变量的联合显著性(原假设:除截距外所有系数同时为0) waldtest(m, vcov = vcovCL(m, type = "HC1", cluster = ~ quartier, df = 9)) # 示例2:检验特定变量的联合显著性(如检验二次项poly(var2, 2)的两个系数同时为0) waldtest(m, . ~ . - poly(var2, 2), vcov = vcovCL(m, type = "HC1", cluster = ~ quartier, df = 9))
选项2:miceadds包的lm.cluster
lm.cluster生成的模型对象已经自带计算好的聚类稳健协方差矩阵,直接提取后传入waldtest即可:
# 提前加载依赖包 library(miceadds) library(lmtest) # 示例:检验模型整体联合显著性 waldtest(m, vcov = m$vcov) # 检验特定变量约束的写法和选项1一致,替换第二个公式参数即可
选项3:estimatr包的lm_robust
estimatr包自带适配lm_robust对象的Wald_test方法,会自动读取你已经配置好的聚类稳健标准误参数,不需要额外传入协方差矩阵:
# 提前加载依赖包 library(estimatr) # 示例1:检验单个变量显著性(原假设:var1的系数为0) Wald_test(m, hypothesis = "var1 = 0") # 示例2:检验所有自变量联合显著性 all_coef <- names(coef(m))[names(coef(m)) != "(Intercept)"] Wald_test(m, hypothesis = paste0(all_coef, " = 0"))
内容的提问来源于stack exchange,提问作者mimi
相关产品推荐
相关产品推荐

