gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:22:46 26 4
gpt4 key购买 nike

我有一堆对数线性模型,就我们而言,它们只是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com