Что касается синтетического контроля (пакета synth), как избежать использования Forex.op?
Я пытаюсь использовать пакет синтезатора в R.
Синтетический контроль работает так, что он сопоставляет данные предварительной обработки для обработанного блока и блоков управления и выбирает веса, чтобы приблизить их к эквивалентным, так что обработанный блок "выглядит" как синтетический блок управления.
Как это работает, объясняется здесь.
При сопоставлении результатов предварительного лечения мы подбираем T0
линейная комбинация данных. Синтез-пакет, кажется, выбирает только один, и это тот, который приравнивает СРЕДСТВА. Это то, что predictor.op
функция делает.
Предположим, однако, я хочу просто иметь его, чтобы я выбрал все T0
линейные комбинации так X1
это T0 x 1
вектор, а не 1x1
Есть ли способ сделать это не вручную?
2 ответа
Я не уверен, что именно вы пытаетесь сделать, но я столкнулся с вашим вопросом, потому что у меня была похожая проблема с Synth()
так что, возможно, это поможет:
Я пытался создать синтетический блок управления, используя все наблюдения за результатами до лечения и с тех пор Synth()
в среднем за все периоды предварительной обработки, это не было слишком простым. Что я сделал, так это создал отдельные ковариаты для каждого периода предварительной обработки и затем указал эти ковариаты в predictor
, Это равносильно тому, что ни один оператор не применяет данные о результатах до лечения.
На случай, если кто-то столкнется с подобной проблемой, продолжение ответа @JBN. Я хотел реализовать это в течение многих периодов времени, поэтому я сделал это с помощьюlapply
чтобы не писать тонны кода.
Например, если переменная-предиктор, которую вы хотите использовать, называетсяx
и период предварительной обработки от 1 до 20, ваш ввод может бытьspecial.predictors = lapply(1:20, function(i){list("x", i, "mean")})
.
Обратите внимание, что необходимо предоставить аргумент в пользуtime.predictors.prior
, но он не зависит от этих дополнительных специальных предикторов, поэтому любой аргумент должен это делать.