【问题标题】:Combining several regression tables into one for use in xtable with Sweave in R将几个回归表合并为一个,用于 xtable 和 R 中的 Sweave
【发布时间】:2010-12-03 16:29:46
【问题描述】:

Sweave 中的xtable 效果很好,但每次回归只处理一张表。你也可以给它一个数据框,所以我已经手动将rbinding 和pasteing 结果放入数据框,但这似乎不是很可扩展。

是否有更自动化/更强大的解决方案,可以像 xtable 一样工作,但适用于多个 lm 对象?我在论文/书籍中看到的所有表格都是手动生成的吗?我的 janky 代码是否有更好的解决方案来生成数据框以提供给xtable

    library(reshape2)

    data <- data.frame(matrix(rnorm(50), 10, 5))
    names(data) <- letters[1:5]
    l.raw <- list()
    l.raw[["a"]] <- lm(a ~ d + e, data=data)
    l.raw[["b"]] <- lm(b ~ d + e, data=data)
    l.raw[["c"]] <- lm(c ~ d + e, data=data)

    form.table.from.lm <- function(l.raw) {
    summ <- list()

    for (i in names(l.raw)) {
        temp <- coef(summary(l.raw[[i]]))
        summ[[i]] <- data.frame(param=rownames(temp), test=i, temp)
    }

    df.res <- do.call("rbind", summ)
    df.res <- transform(df.res, t.value = paste("(", signif(t.value), ")", sep=""), Estimate = signif(Estimate))
    df.res.long <- melt(df.res, id.vars=c("test", "param"))
    df.res.wide <- dcast(df.res.long, test + variable ~ param)

    temp <- subset(df.res.wide, variable %in% c("Estimate", "t.value"))
    df.res <- temp[, -2]
    df.res[, 1] <- as.vector(rbind(names(l.raw), ""))
    colnames(df.res)[1] <- "regressor"
    return(df.res)
}

产生数据框:

   regressor (Intercept)          d          e
1          a    0.393996  -0.666721   0.159508
2             (0.573926) (0.422125) (0.526446)
5          b    0.611077  0.0288942   -0.70033
6              (0.32696)  (0.24048) (0.299911)
9          c   -0.101033  -0.287821    0.14581
10            (0.203193) (0.149449) (0.186383)

鉴于 R 的惊人绘图包,我觉得 google 和 rseek 对我隐瞒了一些事情。

【问题讨论】:

    标签: r sweave xtable


    【解决方案1】:

    不久前,我偶然发现了 Paul Johnson 的 outreg 函数。

    您可以直接将outreg 应用于您的lm 对象并组合几个 lm 输出到一张漂亮的乳胶表中。

    在这里您可以找到一个示例 .pdf

    outreg examples

    以及函数的代码

    outreg code

    Paul Johnson 的一般主页

    Paul Johnson

    【讨论】:

    • 谢谢!这应该涵盖了我遇到的很多案例。
    • 对于现在(很久以后)看到这个的人......看起来 Paul Johnson 现在已经将他的许多 R sn-ps(包括 outreg)中的一些组合到一个名为“rockchalk”的包中。文档:pj.freefaculty.org/R/rockchalk.pdf
    【解决方案2】:

    您的代码在 dcast 调用中为我抛出了错误,因此我只需读取您提供的输出并调整 colnames 以匹配。这段代码在通过我的 LaTex 处理器后在我的系统上生成一个格式良好的 pdf 文件。 (如果您已经在使用 Sweave,我假设您已经安装了适当的 LaTeX。)

    require(Hmisc)
    latex(df.res)
    

    当我通过 lme4 包中的 help(lmList) 中的示例时,latex() 也会产生一个相当大且笨拙的 4 页显示,这需要一些调整以扩大我机器上的页面,但也可能值得检查。

    require(lme4)
    (fm1 <- lmList(Reaction ~ Days | Subject, sleepstudy))
    latex(fm1)
    

    【讨论】:

    • 谢谢!我不知道lmList。那真的会派上用场。我将重新粘贴上面的代码。它对我有用,但看起来 Paul Johnson 的代码具有我正在寻找的一些功能(MRopa 的回答)。
    • 很高兴你发现所以使用它。检查这些选项也提高了我在这方面的知识,所以我想我应该投票赞成这个问题,嗯?
    【解决方案3】:

    已接受答案中的 outreg 链接现在已损坏。新链接是

    http://pj.freefaculty.org/stat/ps706/outreg-worked.R

    父文件夹中还有一个随附的 PDF。

    【讨论】:

      【解决方案4】:

      查看 CRAN 中的 apsrtable 表格包,它创建了美国政治学评论风格的表格,看起来大致与我认为您想要的一样。它需要 lm 和 glm 模型以及一些包中的一些非线性模型。它还有一系列用于在特定级别等生成星星的选项。有a nice vingette,它会生成 LaTeX 和 HTML 表格,然后可以将它们添加到 OpenOffice/Word 中。

      我已经使用它 2 到 3 年了,并且它仍在积极开发中。我只是快速浏览了一下,但它似乎比 outreg 更可靠/更有特色。

      【讨论】:

        【解决方案5】:

        我看到CRANberries 的另一个选项让我想起了这个问题:

        texreg — 查看vingette,在 R 中生成非常标准的回归表似乎做得非常好,并且在撰写本文时正在非常活跃的开发中。

        更新:我一直在玩其中的一些,我认为随着时间的推移,texreg 已成为该领域的领导者成熟度、稳定性和特色。对我来说最重要的是,它适用于各种模型,并且可以执行非常方便的操作,例如引导标准错误来为 lme4() 模型构建星星——这是软件包本身很难获得的东西(有充分的理由),但评论家和尽管如此,期刊仍然经常要求。我强烈建议使用 texreg。它似乎得到了积极的维护。

        【讨论】:

          【解决方案6】:

          stargazer 包将是 HTML、LaTeX 或 ASCII 表的另一种选择,并排。另请参阅我的 answerTable of multiple lm() models using apsrtable in Rmarkdown,其中包括屏幕截图。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-11
            • 1970-01-01
            相关资源
            最近更新 更多