You need to enable JavaScript to run this app. R语言中基于mtcars数据绘制分位数回归3D Q-Q图的方法问询
优惠活动
大模型
产品
解决方案
定价
更多

R语言中基于mtcars数据绘制分位数回归3D Q-Q图的方法问询

基于R实现mtcars分位数回归3D Q-Q图

依赖包准备

需要用到3个核心包,quantreg用于拟合分位数回归模型,plotly用于3D可视化,dplyr用于数据处理:

# 首次使用先安装依赖
install.packages(c("quantreg", "plotly", "dplyr"))
# 加载包
library(quantreg)
library(plotly)
library(dplyr)

步骤1:拟合多分位点分位数回归并整理Q-Q数据

# 加载内置mtcars数据集
data(mtcars)
# 定义需要拟合的分位点序列,范围0.05-0.95,可按需调整间隔控制精度
tau_seq <- seq(0.05, 0.95, by = 0.05)
# 初始化存储Q-Q数据的空数据框
qq_data <- data.frame()

for (tau in tau_seq) {
  # 拟合分位数回归:示例以mpg为因变量,wt、hp为自变量,可按需修改公式
  rq_model <- rq(mpg ~ wt + hp, data = mtcars, tau = tau)
  # 提取模型残差
  res <- residuals(rq_model)
  n <- length(res)
  # 计算残差的经验分位数、对应理论正态分位数
  emp_quant <- sort(res)
  theo_quant <- qnorm(ppoints(n))
  # 合并数据
  tmp <- data.frame(
    theoretical_quant = theo_quant,
    tau = rep(tau, n),
    residual_quant = emp_quant
  )
  qq_data <- rbind(qq_data, tmp)
}

步骤2:绘制3D Q-Q图

plot_ly(data = qq_data, 
        x = ~theoretical_quant, 
        y = ~tau, 
        z = ~residual_quant,
        type = "scatter3d",
        mode = "markers",
        marker = list(size = 2, color = ~residual_quant, colorscale = "Viridis")) %>%
  layout(
    scene = list(
      xaxis = list(title = "理论正态分位数"),
      yaxis = list(title = "分位点τ"),
      zaxis = list(title = "残差经验分位数")
    ),
    title = "分位数回归3D Q-Q图(mtcars数据集)"
  )

效果调整说明

  • 若需要曲面效果代替散点,把type = "scatter3d"修改为type = "mesh3d"即可
  • 可通过调整tau_seq的间隔控制分位点的覆盖密度,间隔越小图的精度越高
  • 回归公式可按需调整,比如添加更多自变量、更换因变量等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:24:08