在stargazer回归输出中对相互作用的变量进行排序

时间:2015-09-04 18:59:21

标签: r stargazer

我有以下回归:

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

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

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

到目前为止,这对我有用,但如果变量名称包含特殊字符,则可能会出现一些问题,例如:&#34;。&#34;或&#34; *&#34;。

答案 2 :(得分:0)

如果您也来这里寻找答案,这是我注意到的其他事情:

首先,我同意tino_ladino。如果您有很多变量,则数字排序是不实际的。因此,正确处理RegEx是一件很重要的事情。他的完全匹配注释非常有价值(“ ^ $”),其中^表示项的开头,$表示项的结尾。

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

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

它不会像您期望的那样捕获主持人,因为观星者创建的内容似乎与它在内部处理变量的方式不同。要订购它,您需要调用“ ^ 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$"))