如何删除texreg生成的回归表中的GOF行(含R²、调整R²等)
texreg删除指定GOF行的解决方案
你之前设置include.rsquared = FALSE、include.adjrs = FALSE不生效,是因为这类开关参数仅适配R基础lm模型,estimatr::lm_robust属于第三方扩展模型,texreg未为其适配这类参数。以下是两种可行实现方式:
方案1:使用gof_omit参数(最简通用)
gof_omit是texreg的通用参数,支持通过正则匹配删除任意GOF项,适配所有模型类型,修改后的代码如下:
library(estimatr) library(texreg) set.seed(42) x1 <- rnorm(1000) x2 <- rnorm(1000) y <- 0.5*x1 + x2 + rnorm(1000) mod1 <- lm_robust(y ~ x1) mod2 <- lm_robust(y ~ x1 + x2) texreg(list(mod1, mod2), gof_omit = "R\\^2|Adj\\. R\\^2|F statistic")
运行后表格将仅保留Num. obs.和RMSE两类GOF行,满足你的删除需求。
方案2:手动修改extract结果(完全可控)
如果需要更精准的控制,避免正则误匹配,可以先提取模型的texreg结构化对象,手动过滤不需要的GOF项:
library(estimatr) library(texreg) set.seed(42) x1 <- rnorm(1000) x2 <- rnorm(1000) y <- 0.5*x1 + x2 + rnorm(1000) mod1 <- lm_robust(y ~ x1) mod2 <- lm_robust(y ~ x1 + x2) # 提取模型结构化结果 ext_mod1 <- extract(mod1) ext_mod2 <- extract(mod2) # 筛选要保留的GOF索引 keep_idx <- !ext_mod1@gof.names %in% c("R$^2$", "Adj. R$^2$", "F statistic") # 批量删除不需要的GOF项 ext_mod1@gof <- ext_mod1@gof[keep_idx] ext_mod1@gof.names <- ext_mod1@gof.names[keep_idx] ext_mod2@gof <- ext_mod2@gof[keep_idx] ext_mod2@gof.names <- ext_mod2@gof.names[keep_idx] # 输出最终表格 texreg(list(ext_mod1, ext_mod2))
两种方案都兼容你使用的texreg 1.37.5和R 4.1.1版本。
内容的提问来源于stack exchange,提问作者Dr. Beeblebrox
相关产品推荐
相关产品推荐

