3

我有以下回归:

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"))
4

3 回答 3

6

order 的帮助文件指出“order - 正则表达式(或数字索引)的向量,指示变量在输出中出现的顺序”。所以你的字符串被解析为正则表达式,并且 x1 匹配 x3:x1。你可以做一个数字顺序:

stargazer(fit1, fit2, fit3, align=TRUE, 
 table.placement="H",omit.stat=c("f", "ser"), order=c(2,3,1,4,5))
于 2015-09-04T19:25:46.953 回答
5

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

假设您有一个变量名称向量,已经按正确的顺序排列。您可以将它们转换为“精确匹配正则表达式”:

    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 , "$")

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

于 2018-03-28T20:47:56.510 回答
2

如果您也来这里寻找答案,我还注意到以下几点:

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

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

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

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

IV
Moderator
IV:ModeratorTRUE
Constant

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

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$", ":"))

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

stargazer(lm, type ="latex", out = "file.tex", order = c("^Constant$", "^ModeratorTRUE$", "IV$"))
于 2018-11-22T12:34:22.657 回答