svd(c)中的错误:使用Synth包应用综合控件时,“ x”中的值无穷或缺失

时间:2019-05-25 23:07:44

标签: r

我正在尝试使用可从以下网站获得的Texas.dta进行合成控制和安慰剂测试:

https://www.scunning.com/mixtape.html

我下载了合成文件texas13.dta,并使用readstata13包进行了读取。到目前为止一切都很好。

我使用dataprep创建了运行synth所需的数据,因此以后可以使用generate.placebos函数。后一个功能就是问题:

-我正在使用以下软件包:

install_github('bcastanho/SCtools')
library(SCtools)

这是创建用于随机推理的安慰剂的必需库。

当我尝试运行generate.placebos(基本上我认为这只是控件之间的排列)时,出现错误:

Error in svd(c) : infinite or missing values in 'x'

似乎仅在某些特定状态下会发生,因为它会在一系列排列后弹出。

我尝试更改正在使用的状态(即排除其中的某些状态)

我也手动地尝试了一次而不是使用安慰剂功能,而且在某些州(例如密歇根州)也中断了

dataprep.out = dataprep(
  foo = texas,
  predictors = c("income", "ur", "poverty"),
  predictors.op = "mean",
  time.predictors.prior = c(1985:1993),
  special.predictors = list(
    list("bmprison", c(1990,1992,1991,1988), "mean"),
    list("alcohol", 1990, "mean"),
    list("aidscapita", c(1990,1991), "mean"),
    list("bmprison", c(1988,1990:1992), "mean"),
    list("alcohol", 1990, "mean"),
    list("aidscapita",  1990:1991, "mean"),
    list("black", 1991:1992, "mean"),
    list("perc1519", 1990, "mean")),
  dependent = "bmprison",
  unit.variable = "statefip",
  unit.names.variable = "state",
  time.variable = "year",
  treatment.identifier = 48,
  controls.identifier = statefiplist[!statefiplist %in% 48],
  time.optimize.ssr = 1985:1993,
  time.plot = 1985:2000
)

synth.out = synth(dataprep.out)
placebos = generate.placebos(dataprep.out, synth.out)

预期输出将包含我可以绘制的安慰剂数据。

0 个答案:

没有答案