天朗气清,惠风和畅。赋闲在家,正宜读书。前人文章,不得其解。代码开源,无人注释。你们不来,我行我上。废话少说,直入主题。o(* ̄︶ ̄*)o
我们要探测自变量
我们通过最小二乘方法 (OLS: ordinary least squares)[1]得到
假如残差
1. 一个例子:收入与食品消费
这个例子出自statasmodels:Quantile Regression.[3] 我们想探索家庭收入与食品消费的关系,数据出自working class Belgian households in 1857 (the Engel data).我们用Python包statsmodels实现分位数回归。
1.1 预处理
%
income foodexp
0 420.157651 255.839425
1 541.411707 310.958667
2 901.157457 485.680014
3 639.080229 402.997356
4 750.875606 495.560775
1.2 中位数回归 (分位数回归的特例,q=0.5)
mod
QuantReg
由结果可以知道
1.3 数据可视化
我们先拟合10个分位数回归,分位数q分别在0.05到0.95之间。
quantiles
q a b lb ub
0 0.05 124.880096 0.343361 0.268632 0.418090
1 0.15 111.693660 0.423708 0.382780 0.464636
2 0.25 95.483539 0.474103 0.439900 0.508306
3 0.35 105.841294 0.488901 0.457759 0.520043
4 0.45 81.083647 0.552428 0.525021 0.579835
5 0.55 89.661370 0.565601 0.540955 0.590247
6 0.65 74.033435 0.604576 0.582169 0.626982
7 0.75 62.396584 0.644014 0.622411 0.665617
8 0.85 52.272216 0.677603 0.657383 0.697823
9 0.95 64.103964 0.709069 0.687831 0.730306
{'a': 147.47538852370562, 'b': 0.48517842367692354, 'lb': 0.4568738130184233,
这里拟合了10个回归,其中q是对应的分位数,a是斜率,b是回归系数。lb和ub分别是b的95%置信区间的下界与上界。
现在来画出这10条回归线:
x
上图中虚线是分位数回归线,红线是线性最小二乘(OLS)的回归线。通过观察,我们可以发现3个现象:
- 随着收入提高,食品消费也在提高。
- 随着收入提高,家庭间食品消费的差别拉大。穷人别无选择,富人能选择生活方式,有喜欢吃贵的,也有喜欢吃便宜的。然而我们无法通过OLS发现这个现象,因为它只给了我们一个均值。
- 对于穷人来说,OLS预测值过高。这是因为少数的富人拉高了整体的均值,可见OLS对异常点敏感,不是一个稳健的模型。
2.分位数回归的原理
这部分是数理统计的内容,只关心如何实现的朋友可以略过。我们要解决以下这几个问题:
- 什么是分位数?
- 如何求分位数?
- 什么是分位数回归?
- 分位数回归的回归系数如何求得?
- 回归系数的检验如何进行?
- 如何评估回归拟合优度?
2.1 分位数的定义[4]
假设有100个人,95%的人身高少于1.9m, 1.9m就是身高的95%分位数。
2.2 分位数的求法[4]
通过选择不同的
2.3 分位数回归[4]
对于OLS, 我们有:
所对应的
2.4 系数估计[5][6]
由于
假设我们要求
则第t+1步迭代的
第t次迭代
以中位数回归为例子(q=0.5),我们求:
即
即最小化形如上的
为避免分母为0,我们取
2.5 回归系数的检验[7]
我们通过2.4,多次迭代得出
其中
当
其中
回归结果中的std err即由
2.6 拟合优度
对于OLS,我们用
3.Python源码分析
实现分位数回归的完整源码在[5] ,里面主要含有两个类QuantReg 和 QuantRegResults. 其中QuantReg是核心,包含了回归系数估计,协方差计算等过程。QuantRegResults计算拟合优度并组织回归结果。
3.1 QuantReg类
#QuantReg是包中RegressionModel的一个子类
3.2 QuantRegResults类
这里我只给出计算拟合优度的代码。
class
4.总结
上文我先给出了一个分位数回归的应用例子,进而叙述了分位数回归的原理,最后再分析了Python实现的源码。
分位数回归对比起OLS回归,虽然较为复杂,但它有三个主要优势:
- 能反映因变量分位数与自变量的关系,而不仅仅反映因变量均值与自变量的关系。
- 分位数回归对残差不作任何假设。
- 分位数回归受异常点的影响较小。[8]
(欢迎转载,但请注明出处)
参考
- ^https://en.wikipedia.org/wiki/Ordinary_least_squares
- ^QUANTILE REGRESSION http://www.econ.uiuc.edu/~roger/research/rq/rq.pdf
- ^https://www.statsmodels.org/dev/examples/notebooks/generated/quantile_regression.html
- ^abchttps://en.wikipedia.org/wiki/Quantile_regression
- ^abchttps://www.statsmodels.org/devel/_modules/statsmodels/regression/quantile_regression.html
- ^https://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares
- ^Green,W. H. (2008). Econometric Analysis. Sixth Edition. International Student Edition.
- ^https://www.ibm.com/support/knowledgecenter/en/SSLVMB_sub/statistics_mainhelp_ddita/spss/regression/idh_quantile.html