使用stargazer导出ANCOVA时,Anova返回结果为数据框而非模型怎么办
解决stargazer无法导出ANCOVA分析结果的方法
问题原因
car::Anova()返回的是anova类的方差分析结果数据框,stargazer原生仅支持直接读取lm、glm等原始模型对象,因此无法直接识别独立的ANCOVA结果表。
解决方法
方法一:直接传入原始lm模型输出ANCOVA表
无需单独运行Anova(),直接把拟合好的线性模型传入stargazer,通过anova=TRUE参数指定输出方差分析结果:
# 加载依赖包 library(stargazer) library(car) # 拟合线性模型 irs_lm <- lm(Sepal.Length ~ Petal.Length*Petal.Width, data = iris) # 输出ANCOVA结果,type可按需设置为text/latex/html stargazer(irs_lm, type = "text", anova = TRUE)
该方法默认输出的是I型平方和的方差分析结果,如果你需要II/III型平方和的结果,可使用第二种方法。
方法二:传入car::Anova的计算结果
如果你已经用Anova()计算好了II/III型平方和的结果,可将其转换为普通数据框后,关闭stargazer的自动汇总功能直接输出:
# 计算III型平方和的ANCOVA结果 irs_ancova <- Anova(irs_lm, type = 3) # 转换为普通数据框 ancova_df <- as.data.frame(irs_ancova) # 输出结果,rownames=TRUE保留效应行名 stargazer(ancova_df, type = "text", summary = FALSE, rownames = TRUE, digits = 3)
可选参数调整
- 调整
type参数可切换输出格式:type="latex"输出LaTeX格式表格,type="html"输出网页格式可直接粘贴到Word中使用 - 调整
digits参数可修改结果保留的小数位数 - 可通过
title参数给输出表格添加自定义标题
内容的提问来源于stack exchange,提问作者Talia Raya
相关产品推荐
相关产品推荐

