在 stargazer 回归输出中具有交互作用的顺序变量

Order variables with interaction in stargazer regression output

我有以下回归:

fit1 <- lm(y ~ x1, data = data)
fit2 <- lm(y ~ x1 + x2, data = data)
fit3 <- lm(y ~ x3 * x1, data = data)

我希望输出中的解释变量是有序的(x1、x2、x3,最后是交互)。我按顺序尝试以下操作,但交互仍然出现在 x1 之后。这里可能有什么问题?

stargazer(fit1, fit2, fit3, align=TRUE, table.placement="H",omit.stat=c("f", "ser"), order=c("x1", "x2", "x3", "x3:x1"))

订单状态的帮助文件 "order - a vector of regular expressions (or of numerical indexes) that indicates the order in which variables will appear in the output"。所以你的字符串被解析为正则表达式,x1 匹配 x3:x1。你可以做一个数字顺序:

stargazer(fit1, fit2, fit3, align=TRUE, 
 table.placement="H",omit.stat=c("f", "ser"), order=c(2,3,1,4,5))

如果您只有几个变量,数字顺序就可以正常工作。如果您经常更改解释变量,您可能希望以自动方式设置顺序。

假设您有一个变量名向量,并且顺序正确。您可以将它们转换为 "exact match regular expressions":

    vars.order <- c("x1", "x2", "x3", "x3:x1")
    stargazer(fit1, fit2, fit3, align=TRUE, 
    table.placement="H",omit.stat=c("f", "ser"), order=paste0("^", vars.order , "$")

到目前为止,这对我有用,但如果变量名称包含特殊字符,例如:“.”,您可能会遇到一些问题。或“*”。

如果你也来这里寻找答案,以下是我注意到的其他内容:

首先我同意tino_ladino。如果你有很多变量,数字排序是不切实际的。因此,更重要的是让正则表达式正确恕我直言。他对完全匹配的评论已经非常有价值(“^ $”),其中 ^ 表示开始,$ 表示术语结束)。

但请注意,如果您的交互变量是分类变量(例如值为 TRUE / FALSE),则 Stargazer 的输出将不会显示输出中的值,但要对其进行排序,您需要像在交互项中那样调用它(具有值,如 ModeratorTRUE)。所以:

lm <- lm(DV ~ IV * Moderator) #Moderator being either TRUE or FALSE

将产生这样的观星者输出:

IV
Moderator
IV:ModeratorTRUE
Constant

现在要订购版主,您不能只调用“^版主$”

stargazer(lm, type ="latex", out = "file.tex", order = c("^Constant$", "^Moderator$", "^IV:Moderator$"))

它不会像您期望的那样捕获主持人,因为 stargazer 创建的内容似乎与它在内部处理变量的方式不同。要订购它,您需要致电“^ModeratorTRUE$”:

stargazer(lm, type ="latex", out = "file.tex", order = c("^Constant$", "^ModeratorTRUE$", "^IV:Moderator$"))

另一个注意事项:您也可以使用 RegEx 方式,例如,有很多交互项,你最后要在彼此下面显示,只需用“:”称呼它们,当然这里你不能要求完全匹配(“^ $”)

stargazer(lm, type ="latex", out = "file.tex", order = c("^Constant$", "^ModeratorTRUE$", ":"))

而如果要将Interaction放在主效应之下,则只能表示变量的末尾。然后交互将显示在下方,因为在格式 ModeratorTRUE:IV 中它也适合 "IV$"。在这个例子中,只剩下一行显然没有意义,但你明白了。

stargazer(lm, type ="latex", out = "file.tex", order = c("^Constant$", "^ModeratorTRUE$", "IV$"))