r - 在 xtable(anova(...)) 中包含模型规范

标签 r xtable

我有一堆对数线性模型,就我们而言,它们只是 glm()对象调用 mx, my, mz .我想要一个格式很好的 xtable的偏差分析,所以我自然要执行 xtable(anova(mx, my, mz, test = "Chisq")) .
xtable 的 Vanilla 输出但是,不包括型号规范。我想包括我正在运行的所有 ANOVA 测试的那些,所以如果没有我缺少的参数,我可能只需要修改我自己的解决方案。但是查看帮助页面,似乎没有一种简单的方法来包含模型规范。

有什么想法吗?备择方案?

如果有帮助,这已在 2.9.1 中使用 xtable 1.5-5 完成。

最佳答案

如果 a是 anova 表对象,然后 attr(a,"heading")确实包含您正在寻找的信息,但我想不出一种提取它的好方法。于是我查了一下anova.glm的代码,这将我引导至 anova.lmlist 的代码弄清楚他们如何将这些信息放入标题中。这启发了以下解决方案:

# fake data
x <- 1:10
y <- x+ rnorm(10)

# two models
m1 <- glm(y~x)
m2 <- glm(y~x+I(x^2))
a <- anova(m1, m2)  # anova object to be printed

# get model formulas
flas <- sapply(list(m1,m2), function(x)paste(deparse(x$formula)))
rownames(a) <- flas  # add formulas as rownames

# convert to latex
xtable(a)

编辑以适应长公式:
如果您有很长的公式,则需要进行两项更改:首先我们必须确保 deparse不把它分成几行,然后我们需要制作 latex 将公式包裹在表格中。第一个可以通过使用 cutoff.width 来实现deparse 的参数,第二个使用 p{width} latex 中的列类型。例如:
# add long formula
m2$formula <- freq ~ sex + attend + birth + politics + sex:attend + sex:birth + 
              sex:politics + attend:birth + attend:politics + birth:politics + 
              sex:attend:birth + sex:attend:politics + sex:birth:politics +
              attend:birth:politics
a <- anova(m1, m2) 

# use a large width
flas <- sapply(list(m1,m2), 
               function(x)paste(deparse(x$formula, cutoff.width=500)))
rownames(a) <- flas  # add formulas as rownames

# convert to latex with first column wrapped in a 5cm wide parbox
xtable(a, align="p{5cm}rrrr")

结果并不过分漂亮,但您的公式也不漂亮。在这种特殊情况下,我将使用 (sex + attend + birth + politics)^3 - 明白这一点,而且要短得多。

关于r - 在 xtable(anova(...)) 中包含模型规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294163/

相关文章:

r - 如何根据 3 个 IF 语句选择行?

R 从 var.test 中检索 p 值(F 检验)

R:通过 cyphr 加密字符串,发送到 JSON,然后从 JS 转换回字符串会导致问题

r - 如何格式化包含所有时间和 id 值记录的数据透视表?

r - xTable、Sweave、R、交叉表中的计数和百分比

r - 使用 R xtable 在 latex 表中的行之间添加一条水平线

r - R 或 matlab 中的季节性箱线图

r - xtable 在顶部添加标题,在表格下方添加标题

r - 你能在 R 的 xtable 中合并单元格吗

html - knitr、R Markdown 和 xtable : xtable tables within HTML table