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

GLS回归结果输出:用Stargazer添加R平方并替换默认统计量

解决GLS回归输出R平方与调整p值位置的问题

核心问题分析

gls模型没有内置的R平方属性,stargazer默认不会输出该统计量;同时默认的p值显示方式不符合需求,需要手动计算R平方并调整输出参数。

完整解决方案代码

# 导入必要包
library(nlme)
library(dplyr)
library(stargazer)

# 筛选非缺失的Price.Book.Value观测
dotcom_subset_MBV <- dotcom_subset %>% filter(!is.na(Price.Book.Value))
financial_subset_MBV <- financial_subset %>% filter(!is.na(Price.Book.Value))
covid_subset_MBV <- covid_subset %>% filter(!is.na(Price.Book.Value))

# 拟合GLS模型(ML方法)
dotcom_model_MBV <- gls(X1.Month.Equity.Premium ~ crisis*Price.Book.Value, data = dotcom_subset_MBV, method = "ML")
financial_model_MBV <- gls(X1.Month.Equity.Premium ~ crisis*Price.Book.Value, data = financial_subset_MBV, method = "ML")
covid_model_MBV <- gls(X1.Month.Equity.Premium ~ crisis*Price.Book.Value, data = covid_subset_MBV, method = "ML")

# 定义计算GLS模型R平方的函数
calc_r2 <- function(model, response_data) {
  ss_residual <- sum(residuals(model)^2)
  ss_total <- sum((response_data - mean(response_data))^2)
  return(round(1 - ss_residual / ss_total, 2))
}

# 计算每个模型的R平方
r2_dotcom <- calc_r2(dotcom_model_MBV, dotcom_subset_MBV$X1.Month.Equity.Premium)
r2_financial <- calc_r2(financial_model_MBV, financial_subset_MBV$X1.Month.Equity.Premium)
r2_covid <- calc_r2(covid_model_MBV, covid_subset_MBV$X1.Month.Equity.Premium)

# 用stargazer输出结果
stargazer(dotcom_model_MBV, financial_model_MBV, covid_model_MBV,
          type = "text",
          column.labels = c("Dotcom", "Financial", "Covid"),
          omit.stat = c("ll", "aic", "bic"),  # 移除默认的Log似然、AIC、BIC
          add.lines = list(
            c("R-squared", r2_dotcom, r2_financial, r2_covid)  # 添加R平方行
          ),
          report = "vsp",  # 输出系数、标准误、p值
          show.p.value = TRUE,  # 强制将p值显示在标准误下方
          p.format = 2,  # p值保留两位小数
          star.cutoffs = c(0.05, 0.01, 0.001),  # 设置显著性星号阈值
          digits = 2)  # 统一系数、标准误等的小数位数

关键步骤说明

  • 手动计算R平方:通过残差平方和与总平方和的比值计算决定系数,定义复用函数calc_r2避免重复代码,确保三个模型的R平方计算逻辑一致。
  • 替换默认统计量:用omit.stat移除不需要的Log似然、AIC、BIC,再通过add.lines插入R平方行,注意行标签与对应模型值的顺序要匹配列标签。
  • 调整p值位置:report = "vsp"指定输出顺序为系数、标准误、p值,show.p.value = TRUE确保p值单独显示在对应标准误的下方,同时通过p.format和digits统一格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:25:24