Python中同时用于多个分位数的分位数回归

2024-05-13 08:42:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

enter image description here


Tags: 方法apistatsmodels位数等式
1条回答
网友
1楼 · 发布于 2024-05-13 08:42:54

我不认为我有一个最佳的解决方案,但我可能很接近。基于该成本函数,您似乎正在尝试拟合一个系数矩阵(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个分位数的预测

由此产生的漂亮分位数图:

enter image description here

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

相关问题 更多 >