一、疑 无 路
小编想用线性回归来探讨收入和教育水平的关系,严格的小编找来张华老师的文章关于线性回归那点事,满心期待能够满足线性、独立性、残差正态性和方差齐性等条件。可惜现实是残酷的,小编只能看着线性回归远去。还好小编是一个乐观的人,忘了线性回归,转身就能拥抱分位数回归。
二、柳暗花明
分位数回归,好像很陌生。它是由中位数回归推广而来。18世纪中期,Boscovich、Laplace和Edgeworth提出并进一步研究了中位数回归。1978年,Koenker和Bassett将中位数回归推广到了一般的分位数回归上。
分位数回归相对于线性回归,应用条件更加宽松,它依据因变量的条件分位数对自变量进行回归,可以得到所有分位数下的回归模型,能够更加精确的描述自变量对因变量的变化范围,以及条件分布形状的影响。
三、可 能 不 受 欢 迎的算 法 简 介
线性回归是通过最小二乘法,设法使残差平方和最小,以估计参数。分位数回归则是设法使残差的绝对值最小,但是,需要有一个权重。当我们估计第0.1分位数时,回归线上方观察值的权重为0.1,回归线下方观察值的权重为0.9。位于回归线上方的90%的数据点导致了正残差,权重为0.1;回归线下方的10%的数据点导致了负残差,权重为0.9。回归线上方所有数据点到回归线的距离总和乘以权重0.1,回归线下方所有数据点的距离总和乘以权重0.9,二者之和即为加权距离总和,设法使加权距离总和最小,即可估计相关参数。
四、可 能 受 欢 迎的代 码
说的好像挺复杂,咱们还是看看怎么实现吧。
R软件中quantreg程序包可用于实现分位数回归。
首先,安装和加载程序包。
install.package(quantreg)#安装程序包
library(quantreg)#加载程序包
data(engel)#加载系统数据,可以通过mydata
head(engel)#查看数据前6行
#其中income为家庭收入,foodexp为食物支出
fit1
#拟合第0.5分位数的回归模型,即中位数回归
summary(fit1,se="boot")#查看回归结果
fit2
tau =c(0.05,0.25,0.5,0.75,0.95))
#拟合多个分位数回归模型
summary(fit2,se="boot")#查看回归结果
五、应 该 受 欢 迎的结 果
结果发现,不同分位点下,家庭收入对食物支出的回归系数是不同的。是不是就可以说,不同分位点下,收入对食物支出的影响是不同的呢?在下结论前,还需要检验3个模型是否有差异,结果发现p小于0.05,说明不同分位点下,收入对食物支出的影响是不同的。可以说,食物支出高的情况下和食物支出低的情况下,收入对食物支出的影响是不同的。
fit1 = rq(foodexp ~ income, tau = 0.25)
fit2 = rq(foodexp ~ income, tau = 0.5)
fit3 = rq(foodexp ~ income, tau = 0.75)
anova(fit1,fit2,fit3)
还等什么,新技能学起来。欢迎留言讨论。再唠叨一句。什么时候考虑分位数回归呢?不满足线性回归诸多条件时!因变量的分布极不平衡时,比如收入!因变量不同水平下,自变量对因变量的影响可能不同时!
六、肯 定 受 欢 迎的在 这 里
领取专属 10元无门槛券
私享最新 技术干货