#!/usr/bin/env python # coding: utf-8 # # 基础概念 # ## 均值回归局限 # # 只有满足古典假定,估计量才具有优良性质:BLUE # #
# # ## 为什么需要分位数回归 # # 在迄今为止的同归模型中,我们着重考察解释变量 x 对被解释变量 y 的条件期望 E $(y | \boldsymbol{x})$ 的 影响,实际上是均值回归。但我们真正关心的是 x 对整个条件分布 $y | x$ 的影响,而条件期望 $E(y| \boldsymbol{x})$ 只是刻画条件分布 $y | \boldsymbol{x}$ 集中趋势的一个指标而已。如果条件分布 $y | \boldsymbol{x}$ 不是对称分布,则条件期望 E( $y | \boldsymbol{x}$ )很难反映整个条件分布的全貌。如果能够估计出条件分布 $y | x$ 的若干重要的条件分位数,比如中位数、1/4 分位数 ,3/4 分位数,就能对条件分布 $y | \boldsymbol{x}$ 有更全面的认识。另一方面, 使用 OLS 的古典“均值同归”,由于最小化的目标函数为残差平方和 $\left(\sum_{i=1}^{n} e_{i}^{2}\right),$ 故容易受极端值的影响。 # # 为此, Koenker and Bassett( 1978 ) 提出“分位数同归”(Quantile Regression,简记 QR ) ,使用残差绝对值的加权平均(比如 $\sum_{i=1}^{n}\left|e_{i}\right|$ ) 作为最小化的目标函数,故不易受极端值影响,较为稳健。更重要的是,分位数回归还能提供关于条件分布 $y | \boldsymbol{x}$ 的全面信息。 # #
# # ## 原理 # # ### 模型表示 # # $Q_{t}(y | x)=x^{T} \beta_{\tau}$ # # 其中 $\tau$ 为分位点, $\beta_{\tau}$ 为依赖于分位点的回归系数 # # ### 损失函数 # # * 二次损失:生成均值 $ # E(Y)=\underset{y}{\operatorname{argmin}} E(Y-y)^{2}$ # * 绝对值损失:生成中位数 $A L(u)=|u| # $ # * 非对称绝对值损失:生成分位数 $\quad \rho_{\tau}(u)=u(\tau-I(u<0)) \quad Q_{\tau}(Y)=\underset{y}{\operatorname{argmin}} E \rho_{\tau}(Y-y)$ # #
# # ### 估计方法 # # 由于分位数回归的目标函数带有绝对值,不可微分,故通常使用线性规划。 # # 详情可参考:[statsmodels 官方文档](https://www.statsmodels.org/stable/generated/statsmodels.regression.quantile_regression.QuantReg.html#statsmodels.regression.quantile_regression.QuantReg) # ## 使用 statsmodels 库实现 # ### 第一种方法 # In[1]: import numpy as np import pandas as pd import statsmodels.formula.api as smf data = pd.read_excel('../数据/上证指数与沪深300.xlsx') mod = smf.quantreg("data['hs300'] ~ data['sz']", data) res = mod.fit(q=0.3) res.summary() # ### 第二种方法 # In[2]: import statsmodels.regression.quantile_regression as qr import statsmodels.api as sm X = sm.add_constant(data['sz']) mod = qr.QuantReg(data['hs300'], X) res = mod.fit(q=0.3) res.summary() # ## matlab实现 # 可以参考 matlab 代码:[分位数回归](https://github.com/lei940324/econometrics/tree/master/matlab代码/分位数回归/分布滞后模型回归)