在 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$"))
我有以下回归:
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$"))