【发布时间】:2016-08-06 11:04:34
【问题描述】:
我正在尝试复制在 R 中的面板数据上运行的 Stata xtlogit re 回归。面板数据是指我在不同年份 (year_id) 对不同个人 (person_id) 有多个观察结果。我的因变量(DV)是二进制的。我有 2 个我想预测的主要变量(IV1 和 IV2)和一些控制变量(some_controls)。我总共有大约 40.000 次观察。
我是使用 Stata 的新手,所以我可能无法识别输入 xtlogit 命令的代码的相关部分。但是,据我所知,相关的Stata代码如下:
isid person_id year_id
xtset person_id year_id,y
eststo: xtlogit DV IV1 IV2 some_controls cformat(%3.2f) pformat(%3.2f) re vsquish noomitted nolog noemptycells vce(robust)
我尝试使用以下公式在 R 中复制它:
使用“plm”包:
plm(DV ~ IV1 + IV2 + some_controls, index = c("person_id","year_id"), model ="random", data = data_frame_name)
使用 lme4 包:
glmer(DV ~ IV1 + IV2 + some_controls + (1|person_id) + (1|year_id), family = binomial, data = data_frame_name)
不幸的是,plm 模型无法重现我通过运行 Stata 代码获得的结果。 glmer 模型返回错误“错误:pwrssUpdate 未在 (maxit) 迭代中收敛”。
如果您提供有关如何准确复制由 Stata 代码计算的结果的建议,我将不胜感激。
我找到了Stata's xtlogit (fe, re) equivalent in R?。但是,我不确定该问题的解决方案将如何应用于面板数据。
【问题讨论】:
-
plm包中的命令plm不适用于面板 logit 模型。您需要查看例如包pglm。 -
@Helix123 感谢您的评论!我在 pglm 中复制了公式,并且正确地复制了输出!如果您将评论作为答案发布,我可以将其标记为“正确答案”。还有一个问题:pglm 计算一个模型大约需要半个小时,而 Stata 只需要几秒钟。知道为什么会这样吗?
-
您的数据集非常大,我相信
pglm过程并没有真正优化,并且是纯 R 语言。在一些“数字运算”包中,关键部分是用 C(++) 编写的为了速度增益。实际上,该软件包似乎处于“早期”阶段(请参阅版本号),尽管最新的 CRAN 版本是 2013 年... Stata 通常具有相当优化的程序(并且也可以从预编译代码中受益) . -
不是问题,而是自变量(不是一个好术语,但我不会多说)用于预测;说你想预测它们是令人困惑的,甚至可能是困惑的。