Python 同时进行多个分位数的分位数回归

Quantile Regression in Python for Multiple Quantiles Simultaneously

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

更具体地说,我想优化以下等式:

我认为我没有最佳解决方案,但我可能很接近。基于该成本函数,您似乎正在尝试拟合一个系数矩阵 (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。请注意它们是如何平行的,因为唯一的区别特征是偏置项。