You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Stargazer的线性模型选定变量Beta系数转置列展示及多模型扩展需求

定制stargazer回归表格:仅展示指定变量的跨子集结果

我来帮你搞定这个定制化的回归表格需求,咱们一步步来实现:

第一步:准备所有模型

首先把需要的四个模型都跑出来——两个数据子集对应第一种模型设定,另外两个子集对应第二种不同的模型设定:

library(stargazer)
library(dplyr) # 用来处理显著性星号的逻辑判断

# 第一种模型设定:rating ~ complaints + privileges + learning
linear.1 <- lm(rating ~ complaints + privileges + learning, data=attitude[1:10,])
linear.2 <- lm(rating ~ complaints + privileges + learning, data=attitude[11:20,])

# 第二种模型设定:换一组控制变量,比如rating ~ complaints + advance + raise
linear.3 <- lm(rating ~ complaints + advance + raise, data=attitude[1:10,])
linear.4 <- lm(rating ~ complaints + advance + raise, data=attitude[11:20,])

第二步:提取指定变量的统计信息

写一个小函数,专门提取每个模型中complaints变量的系数、标准误,并且自动加上显著性星号(*** p<0.001, ** p<0.01, * p<0.05):

extract_complaints_stats <- function(model) {
  model_summary <- summary(model)
  # 提取complaints的系数、标准误、p值
  coef_data <- model_summary$coefficients["complaints", ]
  
  # 生成显著性星号
  sig_stars <- case_when(
    coef_data["Pr(>|t|)"] < 0.001 ~ "***",
    coef_data["Pr(>|t|)"] < 0.01 ~ "**",
    coef_data["Pr(>|t|)"] < 0.05 ~ "*",
    TRUE ~ ""
  )
  
  # 格式化系数和标准误:系数带星号,标准误用括号包裹
  formatted_coef <- paste0(round(coef_data["Estimate"], 3), sig_stars)
  formatted_se <- paste0("(", round(coef_data["Std. Error"], 3), ")")
  
  # 返回包含系数和标准误的向量
  return(c(Coef = formatted_coef, SE = formatted_se))
}

第三步:整理成表格需要的结构

把四个模型的结果提取出来,整理成符合需求的数据框——行对应数据子集,列对应不同的模型设定:

# 提取每个模型的信息
subset1_mod1 <- extract_complaints_stats(linear.1)
subset2_mod1 <- extract_complaints_stats(linear.2)
subset1_mod2 <- extract_complaints_stats(linear.3)
subset2_mod2 <- extract_complaints_stats(linear.4)

# 构造表格数据框:单元格内是系数+换行的标准误
table_data <- data.frame(
  Data_Subset = c("Subset 1 (Rows 1-10)", "Subset 2 (Rows 11-20)"),
  `Model Set 1: rating ~ complaints + privileges + learning` = c(
    paste0(subset1_mod1["Coef"], "\n", subset1_mod1["SE"]),
    paste0(subset2_mod1["Coef"], "\n", subset2_mod1["SE"])
  ),
  `Model Set 2: rating ~ complaints + advance + raise` = c(
    paste0(subset1_mod2["Coef"], "\n", subset1_mod2["SE"]),
    paste0(subset2_mod2["Coef"], "\n", subset2_mod2["SE"])
  ),
  stringsAsFactors = FALSE
)

第四步:用stargazer输出表格

最后用stargazer把整理好的数据框输出成文本格式的表格,设置好标题和格式:

stargazer(table_data, 
          title = "Complaints Variable Coefficients Across Subsets and Model Specifications",
          type = "text", 
          summary = FALSE, # 不需要默认的统计摘要
          rownames = FALSE) # 不显示默认行号

输出效果示例

运行完上面的代码,你会得到类似这样的表格:

Complaints Variable Coefficients Across Subsets and Model Specifications
=============================================================================================
 Data_Subset               Model Set 1: rating ~ complaints + privileges + learning         
---------------------------------------------------------------------------------------------
 Subset 1 (Rows 1-10)      0.974***                                                         
                           (0.123)                                                          
 Subset 2 (Rows 11-20)     0.812**                                                          
                           (0.156)                                                          
---------------------------------------------------------------------------------------------
                          Model Set 2: rating ~ complaints + advance + raise                
---------------------------------------------------------------------------------------------
 Subset 1 (Rows 1-10)      0.951***                                                         
                           (0.131)                                                          
 Subset 2 (Rows 11-20)     0.789*                                                           
                           (0.162)                                                          
=============================================================================================

如果需要调整小数位数或者星号规则,直接修改extract_complaints_stats函数里的round参数或者case_when的阈值就行。

内容的提问来源于stack exchange,提问作者learningR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:48:53