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

R语言tidysynth包generate_control()报预测变量生成NA错误

tidysynth包NA generated in specified predictors报错解决方案

报错本质是定义的预测变量中,至少存在一个变量在某个单元(处理组/控制组)的指定时间窗口内计算结果为NA,导致后续权重拟合无法进行。


问题1:聚合计算时窗口内全为NA

你在generate_predictor里给均值计算加了na.rm = T,但这个参数仅能排除窗口内的部分缺失值,如果某个单元在指定的整个时间窗口内,对应变量全部是NA,mean(..., na.rm = T)会返回NaN(会被识别为NA)。
从提供的数据集样例来看,strata和average_income两个变量在2003-2008年全部为NA,如果2009-2012年这两个变量仍有部分单元全为缺失,就会触发报错;另外bulgarlykm22003年为NA,若存在单元2003-2012年该变量全部缺失,同样会出问题。

排查方法

运行以下代码,定位存在全量缺失的单元和变量:

library(dplyr)
# 排查入室盗窃变量全缺失的单元
SCMFinal %>%
  filter(year %in% 2003:2012) %>%
  group_by(neghborhood_code) %>%
  summarise(bulgarly_na = all(is.na(bulgarlykm2))) %>%
  filter(bulgarly_na)

# 排查社会阶层、收入变量全缺失的单元
SCMFinal %>%
  filter(year %in% 2009:2012) %>%
  group_by(neghborhood_code) %>%
  summarise(
    strata_na = all(is.na(strata)),
    income_na = all(is.na(average_income))
  ) %>%
  filter(strata_na | income_na)

修复方案

  • 若缺失单元占比很低:直接将这些单元从面板数据中剔除,再重新运行合成控制流程
  • 若变量整体缺失率高:直接删除该预测变量,或调整时间窗口到变量有完整观测的时段

问题2:单年滞后预测变量存在缺失

你定义的三个单年取值的杀人率变量,没有做任何缺失值处理,如果某个单元在2007/2009/2011年的homicidekm2为NA,会直接将NA带入预测变量矩阵。

排查方法

运行以下代码定位单年缺失的记录:

SCMFinal %>%
  filter(year %in% c(2007, 2009, 2011)) %>%
  select(neghborhood_code, year, homicidekm2) %>%
  filter(is.na(homicidekm2))

修复方案

  • 若缺失记录少:将对应年份的取值替换为相邻年份的均值,或直接删除该滞后项
  • 若缺失多:将单年取值改为3年滚动窗口均值,避免NA产生

代码笔误修正

你定义滞后杀人率时,时间窗口和变量名不匹配,容易造成后续结果解读混乱,建议修正为:

# 原错误写法
# generate_predictor(time_window = 2007, homicidekm2_2009 = homicidekm2) %>%
# generate_predictor(time_window = 2009, homicidekm2_2010 = homicidekm2) %>%

# 修正后写法
generate_predictor(time_window = 2007, homicidekm2_2007 = homicidekm2) %>%
generate_predictor(time_window = 2009, homicidekm2_2009 = homicidekm2) %>%
generate_predictor(time_window = 2011, homicidekm2_2011 = homicidekm2) %>%

另外generate_control ()括号前多余的空格不影响运行,但建议写成规范的generate_control()。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:30:42