我目前正在尝试写一篇论文,其中我需要匹配包含在多个推定数据集中的关键预处理协变量,然后对此数据运行线性回归。我已经能够编写代码,让zelig对我从amelia获得的多次推算数据运行线性回归。然而,当我尝试使用cem来匹配关键的预处理协变量时,我无法让zelig运行模型。下面是我的控制台的输出:
> # Run Amelia, 5 imputations!
> complete <- amelia(clean, m = 5, ts = "wave", cs = "country", idvars = c("idnum", "strata", "weight"))
-- Imputation 1 --
1 2 3 4 5 6 7 8 9 10 11 12
-- Imputation 2 --
1 2 3 4 5 6 7 8 9 10 11
-- Imputation 3 --
1 2 3 4 5 6 7 8 9 10 11 12
-- Imputation 4 --
1 2 3 4 5 6 7 8 9 10 11 12
-- Imputation 5 --
1 2 3 4 5 6 7 8 9 10 11 12
>
> # Estimate naive and controlled linear models with MI data sets using Zelig
>
> lm.out.naive <- zelig(dv ~ treat*year + treat + year, data = complete, model = "ls")
> lm.out.control <- zelig(dv~ treat*year + treat + year + age + gender + ideo + married, data = complete, model = "ls")
> # Estimate CEM linear model
>
> # First, generate matched data set
> imputed <- complete$imputations[1:15]
> matched <- cem("treat", drop = c("pais", "wave", "year", "idnum", "strata"),
+ datalist = imputed, data = clean)
>
> # Then, run regression
> lm.out.match <- zelig(dv ~ treat*year + treat + year + age + gender + ideo + married, data = matched, model = "ls")
Error in resolve_vars(new_groups, tbl_vars(.data)) :
unknown variable to group by : by我不明白最后一个错误是什么意思,以及为什么我不能在使用多重补偿后对匹配的数据集运行回归。任何关于这个问题的见解都将不胜感激!
发布于 2017-06-02 03:02:43
我最近在一个多重推定的数据框上使用zelig的logit遇到了这个错误。我的解决方案是正确地指定data =参数。你可以尝试这样做:
lm.out.match <- zelig(dv ~ treat*year + treat + year +
age + gender + ideo + married, data = mi(matched$imputations), model = "ls")我记得旧版本的zelig不需要这种格式,但似乎按原样处理"amelia“类对象。
https://stackoverflow.com/questions/42497703
复制相似问题