Quantile Regression,python

本文介绍了分位数回归的基本数学原理,包括最小化加权误差绝对值的方法,以及如何通过线性规划转化为求解线性方程组。还展示了如何使用Python statsmodels库进行分位数回归实例,包括数据处理和模型输出。

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

一般的回归方法是最小二乘法,即最小化误差的平方和:
在这里插入图片描述
其中, y i y_i yi是真实值,而 y ^ i \hat{y}_i y^i是预测值。而分位数的目标是最小化加权的误差绝对值和:
在这里插入图片描述
其中, τ \tau τ 是给定的分位数。决策变量是 y ^ i \hat{y}_i y^i,可以证明,使上面表达式最小化的 y ^ i \hat{y}_i y^i 就是给定分位数 τ \tau τ 对应的分位点(将上面式子转化为连续密度函数的积分,然后求一阶导数即可证明)。上式也可以简写成:
在这里插入图片描述

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

为了求出分位数的回归方程,假设 y ^ i = X i β \hat{y}_i=\bm{X_i \beta} y^i=Xiβ,那么求解的目标函数转化为:
在这里插入图片描述
决策变量为 k k k维回归方程的参数向量 β \bm{\beta} β。在实际的求解中,将上式转化为一个线性规划问题,引入两个虚拟变量 u i + u_i^+ ui+ u i − u_i^- ui
在这里插入图片描述
然后用单纯形法或内点法求解,就能得出分位数回归方程(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 plt


data = 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()

输出结果:
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a useful man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值