分位数回归(Quantile Regression)代码解析

article/2025/9/21 20:06:56

实验代码

本文采用python sklearn库中,作为quantile regression的示例代码。以下为详细解析:

import numpy as np
import matplotlib.pyplot as pltfrom sklearn.ensemble import GradientBoostingRegressor
%matplotlib inline
np.random.seed(1)
#设置随机数生成的种子def f(x):"""The function to predict."""return x * np.sin(x)
#对x取正弦#----------------------------------------------------------------------
#  First the noiseless case
X = np.atleast_2d(np.random.uniform(0, 10.0, size=100)).T
#  随机采样并转换成数组
#  numpy.atleast_2d()其他格式转换成数组
#  numpy.random.uniform(low,high,size) 从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
#  .T 数组转置.
X = X.astype(np.float32)
#转换数据类型 float32 减少精度# Observations
y = f(X).ravel()
#多维数组转1维向量dy = 1.5 + 1.0 * np.random.random(y.shape)
#生成 np.random.random(y.shape) y.shape大小矩阵的随机数noise = np.random.normal(0, dy)
#生成一个正态分布,正态分布标准差(宽度)为dyy += noise
y = y.astype(np.float32)# Mesh the input space for evaluations of the real function, the prediction and
# its MSE
xx = np.atleast_2d(np.linspace(0, 10, 1000)).T
#np.linespace 产生从0到10,1000个等差数列中的数字xx = xx.astype(np.float32)alpha = 0.95clf = GradientBoostingRegressor(loss='quantile', alpha=alpha,n_estimators=250, max_depth=3,learning_rate=.1, min_samples_leaf=9,min_samples_split=9)
#loss: 选择损失函数,默认值为ls(least squres)# learning_rate: 学习率,
# alpha ,quantile regression的置信度# n_estimators: 弱学习器的数目,250# max_depth: 每一个学习器的最大深度,限制回归树的节点数目,默认为3# min_samples_split: 可以划分为内部节点的最小样本数,9# min_samples_leaf: 叶节点所需的最小样本数,9clf.fit(X, y)# Make the prediction on the meshed x-axis
y_upper = clf.predict(xx)
#用训练好的分类器去预测xxclf.set_params(alpha=1.0 - alpha)
#1-0.95=0.05 再训练一条
clf.fit(X, y)# Make the prediction on the meshed x-axis
y_lower = clf.predict(xx)clf.set_params(loss='ls')
#改成 ls :least squares regression 最小二乘回归
clf.fit(X, y)# Make the prediction on the meshed x-axis
y_pred = clf.predict(xx)# Plot the function, the prediction and the 95% confidence interval based on
# the MSE
#matplot画图   y_upper(alpha=0.95)画一条   y_lower(alpha=0.05)画一条  普通的线性回归(prediction)画一条
fig = plt.figure()
plt.plot(xx, f(xx), 'g:', label=r'$f(x) = x\,\sin(x)$')
plt.plot(X, y, 'b.', markersize=10, label=u'Observations')
plt.plot(xx, y_pred, 'r-', label=u'Prediction')
plt.plot(xx, y_upper, 'k-')
plt.plot(xx, y_lower, 'k-')
plt.fill(np.concatenate([xx, xx[::-1]]),np.concatenate([y_upper, y_lower[::-1]]),alpha=.5, fc='b', ec='None', label='95% prediction interval')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.ylim(-10, 20)
plt.legend(loc='upper left')
plt.show()

运行结果图

在这里插入图片描述

实验链接:

sklearn官方文档链接:

https://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_quantile.html#sphx-glr-auto-examples-ensemble-plot-gradient-boosting-quantile-py


https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html


http://chatgpt.dhexx.cn/article/QgH384QF.shtml

相关文章

python中的分位数回归(初探)

分位数回归 参考文献 Python statsmodels 介绍 - 树懒学堂 (shulanxt.com) Quantile Regression - IBM Documentation https://www.cnblogs.com/TMesh/p/11737368.html 传统的线性回归模型 其的求解方式是一个最小二乘法,保证观测值与你的被估值的差的平方和应…

分位数回归 Quantile Regression,python 代码

偶尔在机器学习的论文中了解到了分位数回归,发现这个方法应用也满广的。 文章目录 1. 分位数回归的数学原理2. 分位数回归的求解原理3 python 分位数回归 1. 分位数回归的数学原理 一般的回归方法是最小二乘法,即最小化误差的平方和: min ⁡…

实证操作:R语言实现分位数回归的介绍

“分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。从最小二乘法可以看出,传统回归中最小化残差的平方极易受极端值的影响,而且属于均值回归,这种方法不能得到不同分布下的数据关系 导入程序包与数据 分位数回归不考虑同方差、正态分布的假设,…

分位数回归

分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。 任意一个累计分布函数 F ( x ) F(x) F(x) &#…

多元线性模型的分位数回归

多元线性模型的分位数回归 一、为什么要使用分位数回归?二、分位数回归基本模型三、分位数回归估计--线性规划3.1损失函数3.2目标函数3.3线性规划3.4回归算法 四、实际案例分析与python编程计算4.1引入数据集4.2计算 β ^ \widehat{\beta} β ​ 五、参考文献 一、为…

R语言的分位数回归

回归是科研中最常见的统计学研究方法之一,在研究变量间关系方面有着极其广泛的应用。由于其基本假设的限制,包括线性回归及广义线性回归在内的各种常见的回归方法都有三个重大缺陷:(1)对于异常值非常敏感,极少量的异常值可能导致结…

分位数回归--基于R

分位数回归 分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。以往的回归模型实际上是研究被解释变量的条件期望。而人们也关心解释变量与被解释变量分布的中位数、分位数呈何种关系。它最早由Koenker和Bassett(1978)提出。OLS回归估计量的计算是基…

基于R语言的分位数回归(quantile regression)

分位数回归(quantile regression) 这一讲,我们谈谈分位数回归的知识,我想大家传统回归都经常见到。分位数回归可能大家见的少一些,其实这个方法也很早了,大概78年代就有了,但是那个时候这个理论…

分位数回归和stata

分位数回归与stata 找了半天也没找到我想看的那种完整点的stata教程,只好自己写一个了… 参考教材:《用STATA学微观计量经济学》&《高级计量经济学及STATA应用_第2版》 第一部分 纯理论 更加详细的百度吧,很长很长,这里主要是…

分位数回归的求解

分位数回归 分位数回归实际上是一种特殊的 ℓ 1 \ell_1 ℓ1​回归问题,特别地,当所求分位数 τ 0.5 \tau0.5 τ0.5时就是中位数回归。 1 线性规划 1.1 将分位数回归看做是线性规划问题来求解 一般的,线性回归问题可以写为 ℓ p \ell_p ℓ…

分位数回归模型学习笔记

我读硕士老师给我的第一篇论文就是一个分位数回归的文章,当时觉得这个模型很简单,我很快就用R的示例文件写了一个例子,但是,在后面的研究中,我越来越觉得,这个模型没有我想的那么简单,而且有着非…

Python统计学11——分位数回归

分位数回归也是数理统计里面经典的模型,他相对于在最小二乘模型上进行了改进,虽然本身还是线性的参数模型,但对损失函数进行了改进。我们都知道最小二乘的损失函数是均方误差最小,分位数的损失函数是: 可以看到分位数损…

分位数回归(quantile regression)R实现

分位数回归(quantile regression)R实现 一、基本介绍二、使用分位数回归的原因三、R 语言实现分位数回归 一、基本介绍 回归分析的主要目的:实证检验理论分析中因变量与自变量之间的关系。传统的均值回归,主要使用因变量的条件均…

分位数回归(Stata)

基于分位数回归的成都空气质量指数的数据分析 空气质量指数计算公式为: (1)线性回归模型得到的是一种条件均值,并未考虑到因变量总体上的分布特征,在需要了解因变量位置(分位数)上的信息时&…

分位数回归—R语言实现

大家好,我是带我去滑雪,每天教你一个小技巧! 分位数回归—R语言实现 1、分位数基本介绍——什么是分位数? 2、分位数回归用途——为什么要使用分位数回归? 3、图形分析——如何进行分位数回归图像分析? …

分位数回归-Quantile regression

一、分位数回归概念 分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。 以往的回归模型实际上是研究被解释变量的条件期望。而人们也关心解释变量与被解释变量分布的中位数,分位数呈何种关系。它最早由Koenker和Bassett(1978)提出。 …

分位数回归(Quantile regression)笔记

分位数回归(Quantile regression)是在给定 X \mathbf{X} X的条件下估计 y \mathbf{y} y的中位数或其他分位数, 这是与最小二乘法估计条件均值最大的不同。 分位数回归也是一种线性回归,它为第 q q q个分位数( q ∈ ( …

分位数回归(quantile regression)简介和代码实现

普通最小二乘法如何处理异常值? 它对待一切事物都是一样的——它将它们平方! 但是对于异常值,平方会显著增加它们对平均值等统计数据的巨大影响。 我们从描述性统计中知道,中位数对异常值的鲁棒性比均值强。 这种理论也可以在预测…

分位数回归(Quantile Regression)

在介绍分位数回归之前,先重新说一下回归分析,我们之前介绍了线性回归、多项式回归等等,基本上,都是假定一个函数,然后让函数尽可能拟合训练数据,确定函数的未知参数。尽可能拟合训练数据,一般是…

C语言最全函数大全

以下图片以字母顺序排列,语法着色版本。 每个函数包含函数名,功能,用法,举例...