首页 > 解决方案 > Python中同时针对多个分位数的分位数回归

问题描述

我想同时执行多个分位数的分位数回归。Statsmodels API 为单个分位数提供分位数回归。有什么方法可以同时用于多个分位数吗?

更具体地说,我想优化以下方程:

在此处输入图像描述

标签: pythonpython-3.xstatsmodelsquantile-regression

解决方案


我认为我没有最佳解决方案,但我可能已经接近了。基于该成本函数,您似乎正在尝试拟合一个系数矩阵(beta)和几个截距(b_k)。我会通过首先将分位数回归线拟合到中位数(q = 0.5),然后将其他分位数回归线拟合到残差来做到这一点。我知道这不是“同时”,但可能足够接近。见下文:

X = np.random.randn(100)
Y = X + 0.1*np.random.randn(100)
data = pd.DataFrame(dict(X1=X, Y=Y))
mod = smf.quantreg('Y ~ X1', data)
original_model = mod.fit(q=0.5)
resids = pd.DataFrame(dict(resid=original_model.resid)) 
residual_model = smf.quantreg('resid ~ 1', resids)
quantiles = {q:residual_model.fit(q=q).params for q in np.arange(0.1,1.,0.1)}
prediction_q0.1 = original_model.predict(data) + quantiles[0.1]

prediction_q0.1产生第 10 个分位数的预测

生成的漂亮分位数图:

在此处输入图像描述

对于分位数 0.1:0.9。注意它们是如何平行的,因为唯一的区别特征是偏差项。


推荐阅读