R 中的综合控制方法:"dataprep.out$X1 NULL"

Synthetic Control Method in R: "dataprep.out$X1 NULL"

我目前正在研究 2017 年可再生能源法 (Erneuerbare-Energien-Gesetz) 对采用合成控制方法的德国可再生能源生产的影响。

library(Synth)
data("EuEnergy")
dim(EuEnergy) #840*14
EuEnergy[28:32, 1:6]

dataprep.out <-
  EuEnergy <- as.data.frame(EuEnergy)
  dataprep(foo = EuEnergy,
           predictors = c("coal" ,"oil" ,"gas" ,"nuc"),
           predictors.op = c("mean") , # the operator
           dependent = c("renew"), #dv
           unit.variable = c("countrynumber"), #identifying unit numbers
           time.variable = c("year"), #time-periods
           special.predictors = list(
             list("renew" , 2000:2016, c("mean")),
             list("feconsum" , seq(2001,2016,2), c("mean")),
             list("netimp" , seq(2001,2016,2), c("mean")),
             list("capacity" , seq(2001,2016,2), c("mean")),
             list("fenpercap" , seq(2001,2016,2), c("mean")),
             list("coemiss" , seq(2001,2016,2), c("mean")),
             list("gdp" , seq(2001,2016,2), c("mean"))
                  ),
           treatment.identifier = 5, #the treated case/ Germany
           controls.identifier = c(1:4,6:28),#the control cases; all EU countries except Germany
           time.predictors.prior = c(2001:2016) , #the entire time frame from start to end
           time.optimize.ssr = c(2000:2016),#the time-period over which to optimize
           unit.names.variable = c("countryname"), #identifying unit names
           time.plot = c(1990:2018) #the entire time period before/after the treatment
                  )
  dataprep.out$X1

当我 运行 代码时,我得到 dataprep.out$X1 NULL 这不是用于进一步计算的 X1 矩阵。

如果你有任何线索,请帮助我。

在上面的代码中,您正在分配 dataprep.out as.data.frame(EuEnergy) 然后调用 dataprep() 只是打印到控制台(即,它没有分配给任何东西).没有数据,我无法测试它,但我认为这会起作用:

library(Synth)
data("EuEnergy")
dim(EuEnergy) #840*14
EuEnergy[28:32, 1:6]

EuEnergy <- as.data.frame(EuEnergy)
dataprep.out <- dataprep(foo = EuEnergy,
         predictors = c("coal" ,"oil" ,"gas" ,"nuc"),
         predictors.op = c("mean") , # the operator
         dependent = c("renew"), #dv
         unit.variable = c("countrynumber"), #identifying unit numbers
         time.variable = c("year"), #time-periods
         special.predictors = list(
           list("renew" , 2000:2016, c("mean")),
           list("feconsum" , seq(2001,2016,2), c("mean")),
           list("netimp" , seq(2001,2016,2), c("mean")),
           list("capacity" , seq(2001,2016,2), c("mean")),
           list("fenpercap" , seq(2001,2016,2), c("mean")),
           list("coemiss" , seq(2001,2016,2), c("mean")),
           list("gdp" , seq(2001,2016,2), c("mean"))
         ),
         treatment.identifier = 5, #the treated case/ Germany
         controls.identifier = c(1:4,6:28),#the control cases; all EU countries except Germany
         time.predictors.prior = c(2001:2016) , #the entire time frame from start to end
         time.optimize.ssr = c(2000:2016),#the time-period over which to optimize
         unit.names.variable = c("countryname"), #identifying unit names
         time.plot = c(1990:2018) #the entire time period before/after the treatment
)
dataprep.out$X1