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

如何用Stargazer展示岭回归?解决"Unrecognized object type"错误

问题:stargazer展示岭回归结果报错"Unrecognized object type"

我尝试用stargazer包展示ridge包拟合的岭回归结果时,出现错误:Error: Unrecognized object type.,核心代码如下:

# 数据预处理
base_sem_NAs_padronizada <- base_sem_NAs %>% 
  mutate(
    HHI = as.numeric(scale(HHI)),
    log_pib = as.numeric(scale(log(pib_milhares))),
    pib_milhares = as.numeric(scale(pib_milhares)),
    log_pib_per_capita = as.numeric(scale(log(pib_per_capita))),
    pib_per_capita = as.numeric(scale(pib_per_capita)),
    incremento = as.numeric(scale(incremento)), 
    log_pib_agricola = as.numeric(scale(log(pib_agricola))),
    pib_agricola = as.numeric(scale(pib_agricola)),
    pib_industria = as.numeric(scale(pib_industria)),
    populacao = as.numeric(scale(populacao)), 
    ano_de_eleicao = as.numeric(scale(ano_de_eleicao)),
    nuvem = as.numeric(scale(nuvem)),
    area_km2 = as.numeric(scale(area_km2)),
    homicidio = as.numeric(scale(homicidio)),
    idhm_2010 = as.numeric(scale(idhm_2010)),
    incremento = incremento - mean(incremento) # 中心化响应变量
  )

# 普通OLS回归
reg1 <- lm(
  incremento ~ pib_per_capita + ano_de_eleicao + nuvem  + homicidio + idhm_2010 - 1,
  data = base_sem_NAs_padronizada
)

# 计算岭回归的lambda参数
beta_original1 <- reg1$coefficients
p1 <- length(beta_original1)
sighat2_1 <- summary(reg1)$sigma^2

novo_k1 <- function(beta) p*sighat2_1/(t(beta)%*%beta)
novo_beta1 <- function(k) {
  cur_fit1 <- ridge::linearRidge(
    incremento ~ pib_per_capita + ano_de_eleicao + nuvem  + homicidio + idhm_2010 - 1,
    lambda = k,
    data = base_sem_NAs_padronizada,
    scaling = "none"
  )
  return(cur_fit1$coef)
}

kk1 <- novo_k1(beta_original1)
for(j in 1:200) kk1 <- kk1 %>% novo_beta1() %>% novo_k1()

# 拟合最终岭回归模型
ridge_fit1 <- ridge::linearRidge(
  incremento ~ pib_per_capita + ano_de_eleicao + nuvem  + homicidio + idhm_2010 - 1,
  lambda = kk1,
  data = base_sem_NAs_padronizada,
  scaling = "none"
)

# 尝试用stargazer输出结果
stargazer(ridge_fit1)

错误信息:

Error: Unrecognized object type.

请问如何解决该问题?或者R中有哪些可生成优质回归结果表格的替代包?


解决方案与替代包推荐

一、解决stargazer的报错问题

stargazer默认仅支持lm、glm等标准线性模型对象,而ridge::linearRidge返回的是linearRidge类对象,不在stargazer的支持列表中。可以通过两种方式解决:

1. 手动提取统计量生成自定义表格

从岭回归结果中提取系数、标准误等关键信息,传入stargazer的自定义参数:

# 提取岭回归的核心统计量
ridge_coef <- coef(ridge_fit1)
ridge_se <- sqrt(diag(vcov(ridge_fit1))) # 提取标准误
sample_size <- nrow(base_sem_NAs_padronizada)

# 用stargazer生成自定义表格
stargazer(
  type = "text", # 可选"latex"或"html"
  title = "岭回归结果",
  covariate.labels = names(ridge_coef),
  coefficients = matrix(ridge_coef, ncol = 1),
  se = matrix(ridge_se, ncol = 1),
  nobs = sample_size,
  omit.stat = c("adj.rsq", "f") # 岭回归的调整R²和F检验参考价值有限,可省略
)

2. 转换模型对象类型(谨慎使用)

将linearRidge对象强制转换为lm类,但注意岭回归的部分统计量(如R²、标准误的计算逻辑)与普通OLS不同,可能导致输出结果有偏差:

class(ridge_fit1) <- c("lm", class(ridge_fit1))
stargazer(ridge_fit1)

二、替代包推荐

1. texreg

支持绝大多数R模型(包括linearRidge),输出格式灵活(文本、LaTeX、HTML),用法简单:

library(texreg)
# 输出文本格式结果
texreg(ridge_fit1, type = "text")
# 导出为HTML文件
texreg(ridge_fit1, type = "html", file = "ridge_reg_results.html")
# 合并OLS和岭回归结果对比
texreg(list(OLS = reg1, Ridge = ridge_fit1), type = "latex")

2. modelsummary

功能强大的全能表格工具,支持几乎所有R模型,可输出到文本、HTML、LaTeX、Word,还支持自定义统计量、合并模型、添加注释:

library(modelsummary)
# 输出文本格式结果
modelsummary(ridge_fit1, output = "text")
# 合并OLS与岭回归,导出为可编辑的Word文档
modelsummary(
  list("普通回归" = reg1, "岭回归" = ridge_fit1),
  output = "ridge_comparison.docx",
  statistic = "std.error",
  title = "回归结果对比"
)

3. gt + broom

适合需要精细调整表格样式的场景,用broom提取模型结果,再用gt自定义表格外观:

library(gt)
library(broom)

# 用broom整理岭回归结果为数据框
ridge_tidy <- tidy(ridge_fit1, conf.int = TRUE)

# 生成样式自定义的表格
ridge_tidy %>%
  gt() %>%
  fmt_number(columns = c(estimate, std.error, statistic, p.value, conf.low, conf.high), decimals = 3) %>%
  tab_header(title = "岭回归系数及置信区间") %>%
  cols_label(
    term = "变量",
    estimate = "系数",
    std.error = "标准误",
    statistic = "t值",
    p.value = "P值",
    conf.low = "95%置信下限",
    conf.high = "95%置信上限"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:55:25