如何在R的stargazer中使用coef参数筛选回归系数?
使用stargazer的coef参数生成仅含部分系数的回归表格
核心逻辑
stargazer的coef参数本质是替换模型的系数值,但我们可以通过构建仅包含目标变量的系数向量列表,配合keep参数,实现只显示指定系数的效果。文档里的“数值向量列表”指:每个模型对应一个带变量名的数值向量(元素值是系数,元素名是协变量名),列表长度和模型数量一致。
完整示例
1. 准备数据与模型
library(stargazer) set.seed(123) # 模拟数据集 df <- data.frame( y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = rnorm(100), x4 = rnorm(100) ) # 拟合全变量回归模型 model <- lm(y ~ x1 + x2 + x3 + x4, data = df)
2. 单个模型:仅显示截距、x1、x3的系数
# 提取目标变量的系数(保留变量名) target_coefs <- coef(model)[c("(Intercept)", "x1", "x3")] # 生成表格:coef传入包含目标系数的列表,keep指定要保留的变量 stargazer(model, coef = list(target_coefs), keep = names(target_coefs), type = "text")
3. 多个模型:分别指定每个模型要显示的系数
# 拟合第二个模型 model2 <- lm(y ~ x1 + x2, data = df) # 为每个模型构建目标系数向量,放入列表 coef_list <- list( # 模型1保留截距、x1、x3 coef(model)[c("(Intercept)", "x1", "x3")], # 模型2保留截距、x2 coef(model2)[c("(Intercept)", "x2")] ) # 生成多模型表格 stargazer(model, model2, coef = coef_list, keep = lapply(coef_list, names), type = "text")
补充说明
如果只是单纯筛选系数(不需要替换系数值),直接用keep参数更简便:
stargazer(model, keep = c("x1", "x3"), type = "text")
coef参数更适合需要同时替换系数值+筛选变量,或者多模型分别指定显示系数的场景。
内容的提问来源于stack exchange,提问作者RobertoAS
相关产品推荐
相关产品推荐

