潜在的stargazer omit.labels中的错误

10

stargazer软件包的5.2版本中似乎存在一个错误,其中omit.label功能根据包含的模型顺序不一致地工作:

library(stargazer)
library(ggplot2)
as.data.frame(data("midwest"))
fit.1 <- lm(poptotal ~ popadults, data = midwest)
fit.2 <- lm(poptotal ~ popadults + state, data = midwest)

# Works, column listed as "Yes":
stargazer(fit.2, omit = c("state"), omit.labels = c("States"))
# Does not work, both columns listed as "No":
stargazer(fit.1, fit.2, omit = c("state"), omit.labels = c("States"))
# Works, first column "Yes", second "No":
stargazer(fit.2, fit.1, omit = c("state"), omit.labels = c("States"))

有人知道解决方法吗?


1
我已经给软件包的作者/维护者发送了电子邮件,告知他们这个错误。 - Max Ghenis
2个回答

5

我刚刚使用add.lines属性为每一列手动指定了虚拟输入。以您的示例为例:

stargazer(fit.1, fit.2, omit = c("state"),
    add.lines = list(
        c("States", "No", "Yes")
    )
)

2

这里提供一种方法,使用包装函数自动生成add.lines值。相较于分别使用“omit”和“omit.labels”参数,这种方法语法更加自然(至少对我而言)。此外,你可以省略变量而不需要指示符:

gazer<- function(...,indicate=NULL, staroptions=NULL){
dots <- list(...)

if (is.null(indicate)==FALSE) {
  indicate.lines<-sapply(names(indicate), function(indic)
    ifelse(
      sapply(dots,function(x) length(grep(indic,names(coef(x))))>0
      ) ,"Yes","No"
    )
  )
  indicate.lines<-rbind(unlist(indicate),indicate.lines)

  staroptions$omit <- c(staroptions$omit,names(indicate))
  staroptions$add.lines <- c(split(indicate.lines,rep(1:ncol(indicate.lines), each=nrow(indicate.lines))),staroptions$add.lines)
}
do.call(stargazer,c(dots,staroptions))
}

你需要在indicate()中提供一份名称和标签的列表,并将其它stargazer选项以列表形式添加到staroptions中。
例如:
gazer(fit.1,fit.2,indicate=list(state="State"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接