r - R 中的 xtlogit - logit 固定效果

标签 r binary panel

我试图弄清楚如何在 R 中执行固定效应 logit 回归(类似于 Stata 的 xtlogit 命令)。我读了几个包,例如“pglm”或“bife”,但无法运行我的模型。

我的数据保存为数据框,看起来像:

ID   Time  Y  X
1    2000  1  0
1    2001  0  1
1    2002  1  1
...
1    2016  1  0
...
n

基本上我想运行固定效应 logit 回归:
 y_jt = beta*x_jt + mu_j + pi_t + epsilon_jt

其中 j 是 ID,t 是时间,mu 是 ID 固定效应,pi 是时间固定效应,epsilon 是误差项。

我愿意使用任何软件包。我从“bife”开始,但不知道如何设置 ID 和时间固定效果。我试过:
 mod.no <- bife(y ~ x | ID, data = panel)

我是否可能需要将数据设置为像 Stata 的“xtset”命令那样的面板?

提前谢谢了!

编辑

我想在 R 中复制的 Stata 命令是:
xi: xtlogit Y X i.Time, fe

最佳答案

总的来说,我认为这里的策略是执行以下操作:

  • 创建一个包含预测变量的个体水平均值的变量。使用 dplyr 最容易实现这一点。 :
    data <- data $>$ group_by(ID) %>% mutate(X_mean = mean(X))

  • 这里的魔力在于 group_by函数,这会导致 mean计算组均值而不是全局均值的操作。
  • 使用 lme4将 logit 模型估计为多级模型。这是我指定模型的方式:
    glmer(Y ~ X + X_mean + Time + (1 | ID), family = binomial)

  • “固定”和“随机”这两个术语在面板数据、多级建模和其他一些文献中真的很困惑,所以我不太清楚你如何概念化“时间的固定效应”。这个模型给你的是X的固定效果。因为 X 的系数将代表 X 的被试内效应.我包括Time作为将年份视为附加预测器的预测器,其解释取决于它是连续的还是分类的。有些人会将其拟合为“随机”效应(如随机斜率或某些文献中的“增长曲线”)。你会这样做:
    glmer(Y ~ X + X_mean + Time + (Time | ID), family = binomial)
    这估计了每个人不同的时间影响。
    (1 | ID)在第一个模型和 (Time | ID)在第二个模型中告诉 lme4分组变量是什么,在您的情况下是 ID .您通过 ID 获得随机拦截在第一个模型中,随机截距加上随机斜率 Time在第二个模型中。对您的第一篇文章的另一种解释是,您希望对 Time 进行随机拦截。同样,在这种情况下,您可以执行以下操作:
    glmer(Y ~ X + X_mean + (1 | Time) + (1 | ID), family = binomial)
    或者,如果波浪很少,您可以通过包含 Time 到达同一个地方。作为预测器并使该变量成为输入数据中的一个因素。如果有很多时间点可能会使输出变得笨拙。

    xt 的启发,我一直在开发一个包来自动化其中的一些。来自 Stata 的套件,尽管此时我的包裹要有限得多。它叫panelr并且目前必须从GitHub下载。更多信息请点击此处:https://github.com/jacob-long/panelr

    在这种情况下,使用 panelr ,你的情况会是这样的:
    library(panelr)
    pdata <- panel_data(data, id = ID, wave = Time)
    model <- wbm(Y ~ X, data = pdata, use.wave = TRUE, family = binomial)
    

    全部 panelr正在做的是自动化我上面解释的内容。您可以删除单个均值变量而不影响 X 的受试者内效应的估计值。通过使用 model = "within"争论。
    panelr此时距离 CRAN 提交可能还有几周的时间,因为有些事情需要记录,有一些边缘情况会意外中断,我希望在处理时间方面更加灵活。

    关于r - R 中的 xtlogit - logit 固定效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48893637/

    相关文章:

    r - 如何在 R 中迭代 data.frame

    C++将字符串输入的二进制转换为十进制

    R 的保留内存是已分配数组大小的两倍

    r - 为什么 base::detach 以它的方式验证名称输入?

    c - C语言中的二进制数相加

    WPF:是 ListBox 还是 Panel 负责鼠标滚轮导航?

    .net - 更改面板的 CSSclass

    forms - 我怎样才能做到这种效果?

    r - 在没有 "rownumber"(和书签)的情况下将 data.frame 从 R 转置到 Latex

    Python:由 1 和 0 组成的字符串 -> 二进制文件