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

article/2025/9/21 21:25:51

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

  • 一、为什么要使用分位数回归?
  • 二、分位数回归基本模型
  • 三、分位数回归估计--线性规划
    • 3.1损失函数
    • 3.2目标函数
    • 3.3线性规划
    • 3.4回归算法
  • 四、实际案例分析与python编程计算
  • 五、参考文献

一、为什么要使用分位数回归?

       众所周知,对于线性模型 Y = X β + ε Y=X\beta+\varepsilon Y=Xβ+ε,人们往往习惯于使用均值回归。但是均值回归往往更关注的只是均值,对于数据的“其他部位”往往照顾不够。有时不能较为客观地反映一组数据的各个层次的实际情况。比如我是一名还在读大三的本科生,我和当前的世界首富埃隆▪马斯克人均财富千亿美元级别,显然这个均值对于反映我的财富水平来说是毫无意义的,甚至是有信息误导的作用。但是如果试想使用分位数回归,那我就可以避免被马斯克平均了。
       我们知道在均值回归的普通最小二乘法中,我们是通过求残差的平方和最小来估计参数的。而在分位数回归中我们通常求残差的绝对值的加权求和最小来估计参数。就我目前了解,这样做的目的之一是减小离群点的大误差对整体回归估计的影响。例如,通常离群点处的残差是远远大于1的,在这种情况下残差的绝对值就要远小于残差的平方值,所以使用残差的绝对值可以减少离群点处的误差对整体回归的影响,而这也算是我们进行分位数回归的初衷之一。
       分位数回归通常是采用最小一乘法,而最小一乘法对误差项 ε \varepsilon ε并没有要求其服从正态分布,所以相比于均值回归通常采用的最小二乘法对误差 ε \varepsilon ε要求服从正态分布来说,最小一乘法的误差 ε \varepsilon ε更具有普遍性。
       总的来说相比于均值回归,(1)分位数回归对数据分布的情况掌握的更全面客观。(2)使用分位数回归,离群点对于数据整体的影响要比较使用均值回归小的多。所以我们也可以说分位数回归更加稳健。(3)分位数回归对于误差项更具有普适性。

二、分位数回归基本模型

Y ( θ ) = X β ( θ ) + ε ( θ ) (1) Y^{(\theta)}=X\beta^{(\theta)}+\varepsilon^{(\theta)} \tag{1} Y(θ)=Xβ(θ)+ε(θ)(1)
       其中 θ \theta θ为分位数,对于实随机变量 Y Y Y,其右连续分布函数为 F ( y ) = P ( Y ≤ y ) F(y)=P(Y\leq y) F(y)=P(Yy), Y Y Y θ \theta θ分位数函数为 F − 1 ( θ ) = i n f ( y : F ( y ) ≥ θ ) F^{-1}(\theta)=inf(y:F(y)\ge \theta) F1(θ)=inf(y:F(y)θ),也即第 100 θ % 100\theta\% 100θ% y y y
       其中, Y ( θ ) = [ y 1 y 2 ⋮ y n ] , X = [ 1 x 11 ⋯ x 1 p 1 x 21 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ 1 x n 1 ⋯ x n p ] β ( θ ) = [ β 0 β 1 ⋮ β p ] , ε ( θ ) = [ ε 1 ε 2 ⋮ ε n ] Y^{(\theta)}=\left[ \begin{matrix} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{matrix} \right] ,X=\left[ \begin{matrix} 1&x_{11}&\cdots&x_{1p} \\ 1&x_{21}&\cdots&x_{2p} \\ \vdots&\vdots&\ddots&\vdots \\ 1 &x_{n1}&\cdots&x_{np} \end{matrix} \right]\\ \beta^{(\theta)}=\left[ \begin{matrix} \beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p} \end{matrix} \right],\varepsilon^{(\theta)}=\left[ \begin{matrix} \varepsilon_{1} \\ \varepsilon_{2} \\ \vdots \\ \varepsilon_{n} \end{matrix} \right] Y(θ)=y1y2yn,X=111x11x21xn1x1px2pxnpβ(θ)=β0β1βp,ε(θ)=ε1ε2εn

三、分位数回归估计–线性规划

3.1损失函数

       定义损失函数为 ρ θ ( ε ) = ε ( θ − I ( ε ) ) (2) \rho_{\theta}(\varepsilon)=\varepsilon(\theta-I(\varepsilon))\tag{2} ρθ(ε)=ε(θI(ε))(2)
       其中,
I ( ε ) = { 0 , ε ≥ 0 1 , ε < 0 (3) I(\varepsilon)= \begin{cases} 0, \varepsilon\ge0 \\ 1, \varepsilon<0 \end{cases}\tag{3} I(ε)={0,ε01,ε<0(3)

3.2目标函数

       一般地,根据 K o e n k e r ( 1978 ) Koenker(1978) Koenker(1978),对于 θ \theta θ分位数回归,我们的目标函数通常采用如下函数:
min ⁡ β ∈ R m ∑ i = 1 n ρ θ ( y i − x i ′ β ) (4) \min_{\beta\in R^{m}}\sum_{i=1}^{n}\rho_{\theta}(y_{i}-x_{i}'\beta)\tag{4} βRmmini=1nρθ(yixiβ)(4)

3.3线性规划

       对于式 ( 4 ) (4) (4),我们可以用另一种等价形式表达: min ⁡ β ∈ R m ∑ i = 1 n [ θ u i + ( 1 − θ ) v i ] (5) \min_{\beta\in R^{m}}\sum_{i=1}^{n}[\theta u_{i}+(1-\theta)v_{i}]\tag{5} βRmmini=1n[θui+(1θ)vi](5)
       其中 u i , v i u_{i},v_{i} ui,vi分别是 ( y i − x i ′ β ) (y_{i}-x_{i}'\beta) (yixiβ)的正部和负部:
u i = { y i − x i ′ β , y i − x i ′ β ≥ 0 0 , y i − x i ′ β < 0 (6) u_{i}=\begin{cases} y_{i}-x_{i}'\beta, y_{i}-x_{i}'\beta\ge0 \\ \quad\quad\quad0, y_{i}-x_{i}'\beta<0 \end{cases}\tag{6} ui={yixiβ,yixiβ00,yixiβ<0(6)
v i = { 0 , y i − x i ′ β ≥ 0 y i − x i ′ β , y i − x i ′ β < 0 (7) v_{i}=\begin{cases} \quad\quad\quad0, y_{i}-x_{i}'\beta\ge0 \\ y_{i}-x_{i}'\beta, y_{i}-x_{i}'\beta<0 \end{cases}\tag{7} vi={0,yixiβ0yixiβ,yixiβ<0(7)
       我们知道,一个函数等于它的正部 − - 负部,一个函数的绝对值等于它的正部 + + +负部。所以,我们可以得到下面的线性规划:
{ min ⁡ ∑ i = 1 n [ θ u i + ( 1 − θ ) v i ] x i ′ β + u i − v i = y i β ∈ R m , u i ≥ 0 , v i ≥ 0 , i = 1 , 2 , ⋯ , n (8) \begin{cases} \min\sum_{i=1}^{n}[\theta u_{i}+(1-\theta)v_{i}]\\ x_{i}'\beta+u_{i}-v_{i}=y_{i}\\ \beta\in R^{m},u_{i}\ge0,v_{i}\ge0,i=1,2,\cdots,n \end{cases}\tag{8} mini=1n[θui+(1θ)vi]xiβ+uivi=yiβRm,ui0,vi0,i=1,2,,n(8)
       对于该线性规划,
{ A = [ X I n − I n ] , B = Y C = [ 0 1 × ( p + 1 ) , θ 1 × n , ( 1 − θ ) 1 × n ] (9) \begin{cases}A=\left[\begin{matrix} X&I_{n}&-I_{n} \end{matrix} \right],B=Y \\ C=[0_{1\times(p+1)},\theta_{1\times n},(1-\theta)_{1\times n}]\end{cases}\tag{9} {A=[XInIn],B=YC=[01×(p+1),θ1×n,(1θ)1×n](9)

3.4回归算法

s t e p ( 1 ) step(1) step(1):输入回归数据 X X X Y Y Y
s t e p ( 2 ) step(2) step(2):根据 ( 9 ) (9) (9)计算出线性规划的相关矩阵 A , B , C A,B,C A,B,C
s t e p ( 3 ) step(3) step(3):将 A , B , C A,B,C A,B,C带入线性规划算法模块,求得最优解 ( β , u , v ) T (\beta,u,v)^{T} (β,u,v)T

注:关于相关的线性规划算法本文不再赘述。

四、实际案例分析与python编程计算

4.1引入数据集

       我们以著名的 H a l d Hald Hald数据为例。
在这里插入图片描述

图4.1.1

4.2计算 β ^ \widehat{\beta} β

       下面给出计算多元线性模型分位数回归方程完整 p y t h o n python python源代码:

import pandas as pd
import numpy as np
from scipy import optimize
#----------------------多元线性模型的分位数回归---------------------------------------------------------#导入数据
dataset1=pd.read_excel('Hald.xlsx')
dataset2=pd.read_excel('Hald.xlsx')#输入分位数theta
theta=[0.1,0.25,0.5,0.75,0.9]
#计算X,Y
Y=dataset1['Y'].values
dataset2['Y']=1
X=dataset2.values#计算A,B
n=len(X)
B=Y
In=np.eye(n)
A=np.hstack((X,In,-In))
p=len(X[0])-1
l=np.ones(n,np.int)
o=np.zeros(p+1,np.int)#给出线性规划的自变量取值范围
b=[]
for i in range(p+1):b.append(((None,None)))
for i in range(2*n):b.append((0,None))#使用optimize包的linprog函数求解线性规划
for i in theta:C = np.hstack((o, i * l, (1 - i) * l))r = optimize.linprog(C,A_eq=A,b_eq=B,bounds=b)x=r.x#计算β估计beta=[]print('多元线性模型的{}分位数回归方程为:\ny='.format(i), end='')for i in range(p+1):beta.append(x[i])print(beta[0], end='')for i in range(1, p + 1):if beta[i] > 0:print('+{}x{}'.format(beta[i], i), end='')else:print('{}x{}'.format(beta[i], i), end='')print('\n',end='')

       下面给出程序运行结果:
在这里插入图片描述

图4.2.1

五、参考文献

[1]分位数回归理论及其在金融风险测量中的应用/王新宇著.——北京:科学出版社,2010.6
[2]吕书龙. 最小一乘估计快速算法的研究[D].福州大学,2003.


http://chatgpt.dhexx.cn/article/2g4r2NAP.shtml

相关文章

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…

函数 C语言】

函数的声明和定义 函数间调用关系是&#xff0c;由于函数调用其他函数&#xff0c;替他函数也可以互相调用&#xff0c;同一个函数可以被一个或多个函数调用任意次。 先声明&#xff0c;后调用。 #include <stdio.h> //去标准库下找文件 #include "stdio.h"…

【C语言】函数详解

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️专栏&#xff1a;✈️C语言快速入门       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点…

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

s 开头的函数&#xff08;1&#xff09; 1. sbrk1.1 函数说明1.2 演示示例 2. scalb&#xff0c;scalbf&#xff0c;scalbl2.1 函数说明2.2 演示示例 3. scalbln&#xff0c;scalblnf&#xff0c;scalblnl3.1 函数说明3.2 演示示例3.3 运行结果 4. scalbn&#xff0c;scalbnf&a…