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
相关产品推荐
相关产品推荐

