R svd(c)中的错误:';x';使用Synth软件包应用合成控制时
我正在尝试使用本网站提供的Texas.dta实施synth对照试验和安慰剂试验: 我下载了synth文件texas13.dta,并使用R svd(c)中的错误:';x';使用Synth软件包应用合成控制时,r,R,我正在尝试使用本网站提供的Texas.dta实施synth对照试验和安慰剂试验: 我下载了synth文件texas13.dta,并使用readstata13包来读取它。到目前为止还不错 我使用dataprep创建运行synth所需的数据,以便以后可以使用generate.placebos功能。后一种功能就是问题所在: -我使用的软件包来自: install_github('bcastanho/SCtools') library(SCtools) 这是创建随机推断安慰剂所必需的库 当我尝试运行
readstata13
包来读取它。到目前为止还不错
我使用dataprep
创建运行synth
所需的数据,以便以后可以使用generate.placebos
功能。后一种功能就是问题所在:
-我使用的软件包来自:
install_github('bcastanho/SCtools')
library(SCtools)
这是创建随机推断安慰剂所必需的库
当我尝试运行generate.placebos(我基本上认为这只是控件之间的排列)时,我得到一个错误:
Error in svd(c) : infinite or missing values in 'x'
似乎只有在某些特定的状态下才会发生这种情况,因为它会在多次排列后弹出
我尝试过改变我使用的状态(即排除其中一些状态)
我还尝试了一个接一个的手动操作,而不是使用安慰剂功能,而且在某些州(如密歇根州)也会出现故障
预期的输出是我可以绘制的安慰剂数据。我认为这表明您缺少一些数据,使用
svd
的函数无法工作。你需要说na.omit(德克萨斯州)
或complete.cases(德克萨斯州)
。
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)