Я пытаюсь реализовать тесты на синтез и контроль плацебо, используя 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)
Ожидаемый вывод - данные плацебо, которые я могу построить.