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

使用feols构建IV固定效应模型时Kleibergen-Paap检验报错求助

解决feols中Kleibergen-Paap检验报错的建议

针对你遇到的non-conformable arrays错误,结合你的模型设定,可按以下步骤排查解决:

1. 检查固定效应与聚类变量的重复设定

你的模型中同时将clust2作为固定效应(公式第一个|后)和聚类VCOV的分组变量(vcov = vcov_cluster("clust2")),这种重复设定可能导致Kleibergen-Paap检验计算时矩阵维度不匹配:

  • 尝试暂时移除固定效应,测试检验是否正常:
    # 移除固定效应,仅保留聚类VCOV
    iv_tsls_test <- feols(mort_u65_pop ~ year + datacoverage + GDP + unemployment_rate + at_risk_poverty |  | pm25 ~ rain_yr_mm + temp_c + wdsp, data = df2, vcov = vcov_cluster("clust2"))
    fitstat(iv_tsls_test, "kpr")
    
  • 若必须保留clust2固定效应,可不在模型拟合时指定聚类VCOV,转而在fitstat中单独指定:
    iv_tsls_fe <- feols(mort_u65_pop ~ year + datacoverage + GDP + unemployment_rate + at_risk_poverty | clust2  | pm25 ~ rain_yr_mm + temp_c + wdsp, data = df2)
    fitstat(iv_tsls_fe, "kpr", vcov = vcov_cluster("clust2"))
    

2. 检查聚类组的数量与变异

Kleibergen-Paap检验对聚类组的数量和组内变异有要求:

  • 运行length(unique(df2$clust2))确认分组数量,若组数过少(少于工具变量+内生变量总数),会导致矩阵计算异常。
  • 检查工具变量在每个聚类组内是否有足够变异,若某组内工具变量完全无波动,也可能引发维度问题。

3. 调整ssc参数

尝试修改聚类调整参数,统一矩阵计算的维度规则:

iv_tsls_fe <- feols(
  mort_u65_pop ~ year + datacoverage + GDP + unemployment_rate + at_risk_poverty | clust2  | pm25 ~ rain_yr_mm + temp_c + wdsp, 
  data = df2, 
  vcov = vcov_cluster("clust2"),
  ssc = ssc(cluster.adj = FALSE, fixef.K = "none")
)
fitstat(iv_tsls_fe, "kpr")

4. 更新fixest包

该错误可能是旧版本fixest的已知bug,更新到最新版可解决:

install.packages("fixest")
library(fixest)

5. 简化模型逐步排查

先拟合无控制变量的基础IV模型,测试检验是否正常:

iv_base <- feols(mort_u65_pop ~ 1 | clust2 | pm25 ~ rain_yr_mm + temp_c + wdsp, data = df2, vcov = vcov_cluster("clust2"))
fitstat(iv_base, "kpr")

若基础模型正常,再逐步添加控制变量,定位引发错误的变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:07:38