分位数回归 Quantile Regression,python 代码

article/2025/9/21 20:05:28

偶尔在机器学习的论文中了解到了分位数回归,发现这个方法应用也满广的。

文章目录

  • 1. 分位数回归的数学原理
  • 2. 分位数回归的求解原理
  • 3 python 分位数回归

1. 分位数回归的数学原理

一般的回归方法是最小二乘法,即最小化误差的平方和:

min ⁡ ∑ ( y i − y ^ i ) 2 \min\quad \sum(y_i-\hat{y}_i)^2 min(yiy^i)2

其中, y i y_i yi 是真实值,而 y ^ i \hat{y}_i y^i 是预测值。而分位数的目标是最小化加权的误差绝对值和:

min ⁡ y ^ i ∑ y i ≥ y ^ i τ ∣ y i − y ^ i ∣ + ∑ y i < y ^ i ( 1 − τ ) ∣ y i − y ^ i ∣ \min_{\hat{y}_i}\quad \sum_{y_i\geq \hat{y}_i} \tau|y_i-\hat{y}_i|+\sum_{y_i<\hat{y}_i}(1-\tau)|y_i-\hat{y}_i| y^iminyiy^iτyiy^i+yi<y^i(1τ)yiy^i

其中, τ \tau τ 是给定的分位数。决策变量是 y ^ i \hat{y}_i y^i,可以证明,使上面表达式最小化的 y ^ i \hat{y}_i y^i 就是给定分位数 τ \tau τ 对应的分位点(将上面式子转化为连续密度函数的积分,然后求一阶导数即可证明)。

上式也可以简写成:
min ⁡ y ^ i ∑ [ τ ( y i − y ^ i ) + + ( 1 − τ ) ( y ^ i − y i ) + ] \min_{\hat{y}_i}\quad \sum \left[\tau(y_i-\hat{y}_i)^++(1-\tau)(\hat{y}_i-y_i)^+\right] y^imin[τ(yiy^i)++(1τ)(y^iyi)+]

2. 分位数回归的求解原理

为了求出分位数的回归方程,假设 y ^ i = X i β \hat{y}_i=\bm{X_i \beta} y^i=Xiβ,那么求解的目标函数转化为:

arg min ⁡ β ∈ R k ∑ [ τ ( y i − X i β ) + + ( 1 − τ ) ( X i β − y i ) + ] \argmin_{\bm{\beta}\in\mathbb{R}^k} \sum \left[\tau(y_i-\bm{X_i \beta})^++(1-\tau)(\bm{X_i \beta}-y_i)^+\right] βRkargmin[τ(yiXiβ)++(1τ)(Xiβyi)+]

决策变量为 k k k 维回归方程的参数向量 β \bm{\beta} β。在实际的求解中,将上式转化为一个线性规划问题,引入两个虚拟变量 u i + u_i^+ ui+ u i − u_i^- ui

arg min ⁡ β ∈ R k ∑ [ τ u i + + ( 1 − τ ) u i − ] s . t . i = 1 , 2 , … , n y i = X i β + u i + − u i − u i + ≥ 0 , u i − ≥ 0 \begin{aligned} &\argmin_{\bm{\beta}\in\mathbb{R}^k}\quad && \sum \left[\tau u_i^++(1-\tau)u_i^-\right]\\ &s.t. && i=1,2,\dots, n\\ &&& y_i=\bm{X_i \beta}+u_i^+-u_i^-\\ &&& u_i^+\geq 0, u_i^-\geq 0 \end{aligned} βRkargmins.t.[τui++(1τ)ui]i=1,2,,nyi=Xiβ+ui+uiui+0,ui0

然后用单纯形法或内点法求解,就能得出分位数回归方程(python 与 R 软件求出的分位数回归方程可能略微不同,因为求解方法不一样, python 使用了迭代的加权最小二乘法求解)。

3 python 分位数回归

分位数回归要用到 statsmodels,下面的代码得到分位数为 0.6 的回归方程,并画图:

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as pltdata = sm.datasets.engel.load_pandas().data
mod = smf.quantreg('foodexp ~ income', data)
res = mod.fit(q=0.6)
print(res.summary())plt.scatter(data['income'], data['foodexp'])
xx = np.arange(min(data['income']), max(data['income']))
yy = [i*res.params['income'] + res.params['Intercept'] for i in xx]
plt.plot(xx, yy, color='red')
plt.show()

输出结果:

在这里插入图片描述
在这里插入图片描述
回归方程就是上面的红线,它将 40% 的数据分割在上面,60% 的数据分割在下面。

转载于个人公众号:Python 统计分析与数据科学

在这里插入图片描述


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

相关文章

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

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

分位数回归

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

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

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

R语言的分位数回归

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

分位数回归--基于R

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

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

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

分位数回归和stata

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

分位数回归的求解

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

分位数回归模型学习笔记

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

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

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

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

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

分位数回归(Stata)

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

分位数回归—R语言实现

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

分位数回归-Quantile regression

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

分位数回归(Quantile regression)笔记

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

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

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

分位数回归(Quantile Regression)

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

C语言最全函数大全

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

C语言函数大全-- s 开头的函数(2)

s 开头的函数&#xff08;2&#xff09; 1. setlinestyle1.1 函数说明1.2 演示示例1.3 运行结果 2. setmem2.1 函数说明2.2 演示示例 3. setmode3.1 函数说明3.2 演示示例3.3 运行结果 4. setpalette4.1 函数说明4.2 演示示例4.3 运行结果 5. setrgbpalette5.1 函数说明5.2 演示…

C语言函数大全-- i 开头的函数

i 开头的函数 1. imagesize1.1 函数说明1.2 演示示例1.3 运行结果 2. initgraph2.1 函数说明2.2 演示示例2.3 运行结果 3. inport3.1 函数说明3.2 演示示例 4. insline4.1 函数说明4.2 演示示例 5. installuserdriver5.1 函数说明5.2 演示示例 6. installuserfont6.1 函数说明6…