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

如何从rq函数提取分位数回归估计值及Bootstrap置信区间

分位数回归:提取Bootstrap估计值与置信区间数值

问题背景

执行分位数回归分析时,使用quantreg包的bootstrap方法计算置信区间,绘图功能正常,但无法正确提取回归估计值及Bootstrap置信区间的数值。原实现代码如下:

library(quantreg) #quantile regression framework

#function to perform quantile regression with bootstrap confidence intervals
rq_bootstrap <- function(data, n_bootstrap = 1000) {
  rq_model <- summary(
    rq(julian_day ~ year_centered, data = data, tau = 1:99 / 100),
    se = "boot",
    bsmethod = "xy",
    R = n_bootstrap,
    level = 0.95
  )
  plot(rq_model, mfrow = c(1, 2))
  coef_df <- as.data.frame(sapply(rq_model, function(x) c(tau = x$tau, x$coefficients[-1, ])))
  return(list(model_summary = rq_model, coefficients = coef_df))
}

#apply the function
rq_results_lat1 <- rq_bootstrap(lat1)

解决方案

原代码中sapply的处理方式会导致结果结构混乱,因为summary.rq返回的是包含99个分位数模型结果的列表,每个子元素对应一个分位数的系数、置信区间等信息。以下是两种可行的提取方法:

方法1:修正函数提取逻辑

重新编写函数,将每个分位数的结果整理为结构化数据框:

library(quantreg)

rq_bootstrap <- function(data, n_bootstrap = 1000) {
  # 拟合分位数回归并计算bootstrap置信区间
  rq_model <- summary(
    rq(julian_day ~ year_centered, data = data, tau = 1:99 / 100),
    se = "boot",
    bsmethod = "xy",
    R = n_bootstrap,
    level = 0.95
  )
  
  # 绘制结果图
  plot(rq_model, mfrow = c(1, 2))
  
  # 提取每个分位数的系数与置信区间
  coef_list <- lapply(rq_model, function(x) {
    coef_info <- x$coefficients["year_centered", ]
    data.frame(
      tau = x$tau,
      estimate = coef_info["Value"],
      std_error = coef_info["Std. Error"],
      ci_lower = coef_info["Lower CI"],
      ci_upper = coef_info["Upper CI"]
    )
  })
  
  # 合并所有分位数结果为单个数据框
  coef_df <- do.call(rbind, coef_list)
  
  return(list(model_summary = rq_model, coefficients = coef_df))
}

# 运行函数
rq_results_lat1 <- rq_bootstrap(lat1)

方法2:直接从现有结果中提取

如果已运行原函数,可直接从返回的model_summary对象中批量提取:

# 提取单个分位数(如tau=0.01)的系数与置信区间
rq_results_lat1$model_summary[[1]]$coefficients

# 批量提取所有分位数结果到数据框
all_results <- do.call(rbind, lapply(rq_results_lat1$model_summary, function(x) {
  cbind(tau = x$tau, as.data.frame(x$coefficients))
}))

# 查看前几行结果
head(all_results)

结果说明

修正后的数据框包含以下核心字段:

  • tau:分位数水平(0.01至0.99)
  • estimate:回归系数的点估计值
  • std_error:系数的标准误
  • ci_lower:Bootstrap置信区间下限
  • ci_upper:Bootstrap置信区间上限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:08:10