- 1. 分位数回归的数学原理
- 2. 分位数回归的求解原理
- 3. python 实现分位数回归
1. 分位数回归的数学原理
一般的回归方法是最小二乘法,即最小化误差的平方和:
然后用单纯形法或内点法求解,就能得出分位数回归方程(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()
输出结果:
回归方程就是上面的红线,它将 40% 的数据分割在上面,60% 的数据分割在下面。