分位数回归模型学习笔记

我读硕士老师给我的第一篇论文就是一个分位数回归的文章,当时觉得这个模型很简单,我很快就用R的示例文件写了一个例子,但是,在后面的研究中,我越来越觉得,这个模型没有我想的那么简单,而且有着非常丰富的内涵需要来挖掘,就找了好几本书来看,结果真的是越看越懵,越看越懵,但是懵了一段时间之后,又重新感觉自己明白点了,所以赶紧把这一点进行一个总结,省的再放一段时间,连仅有的这一点懂的东西都没有了。

首先随机变量X的分布函数为:

F(x)=P(X \leq x)

则它的 \tau 分位数可定义为: Q_{\tau}(X)=arginf \left\{ x \in \mathbb{R}; F(x)\geq\tau \right\} (0<\tau<1)

若将分布函数F(x)的逆定义为:

F _{X}^ {-1}(\tau)=inf[y\in \mathbb{R}; F(y)\geq\tau]

Q_{\tau}(X)=F_{X}^{-1}(\tau)

设有随机向量(X,Y),其中Y在给定X=x的情况下的条件累积分布函数为 F_{Y|X=x}(y|x),则将该条件随机变量Y|X=x的 \tau 条件分位数定义为: Q_{\tau}(Y|X = x)=arginf \left\{ y\in \mathbb{R}:F(y|x)\geq\tau \right\} (0<\tau<1)

假定我们有样本序列 \left\{ (X_{i},Y_{i} ),(i=1,...,n)\right\} 满足下列回归模型,即

Y=m(X)+\epsilon \quad X \in \mathbb{R}

假定误差项 \epsilon_{i}\left\{ i=1,...,n \right\} 为独立同分布的序列,且分布情况未知,这Y的 \tau 条件分位数 m_{\tau}(x)=argmin_{\theta \in \mathbb{R}}\mathbb{E}\left\{ \rho_{\tau}(Y-\theta)|X=x\right\}

式中, \rho_{\tau}(u)=u[\tau I(u \geq 0)-(1-\tau)I(u<0)] 为分位回归领域的损失函数,有些地方也称之为检验函数。 I(·) 为示性函数。不包含示性函数的损失函数为

\rho_{\tau}(x)=\left\{ \begin{aligned} \tau x ,u\geq0 \\ (\tau-1)x,u<0 \\ \end{aligned} \right.

损失函数同样可以用下面一个公式进行表示:

\rho_{\tau}(u)=u(\tau-I(u<0))

则我们希望 E\rho_{\tau}(x-\hat X) 尽可能的小,最好等于0,则:E\rho_{\tau}(x-\hat X)=(\tau-1)\int_{-\infty}^{\hat X}(x-\hat X)dF(x)+\tau\int_{\hat X}^{\infty}(x-\hat X)dF(x)

最优解为

0=(1-\tau )\int_{-\infty}^{\hat{X}}dF(x)-\tau\int_{\hat{X}}^{\infty}dF(x)=F(\hat{ X})-\tau

用样本经验分布函数代替F(x)则

F(x)=\frac{\sum_{i=1}^{n}{I(X_{i}\leq x)}}{n}

\int \rho_{\tau}(x-\hat X)dF_{n}(x)=n^{-1}\sum_{i=1}^{n}\rho_{\tau}(x_{i}-\hat X)

这些是分位数回归的一些基本思想,这仅仅只涉及到基本的分位数线性回归,还有较为复杂的核回归在随后的研究中再进行更新。

下面我们来看一下代码实现。

分位数回归可以使用R中的quantreg包进行实现,我们就是用该包中的示例数据构建分位数回归模型:

首先加载数据和包

library(SparseM)
library(quantreg)
data("engel")

engel的这个数据中有两个变量一个变量是income,代表每个家庭的收入,另一个变量是foodexp代表食物支出,数据的大致情况是这样的:

我们来建立一个0.5分位数回归:

fit1 <- rq(foodexp ~ income, tau = .5, data = engel)
fit1
summary(fit1)

我们使用summary来看一下模型的大致情况:

大体上来看,income的 \beta 值是有意义的(95%置信区间未包含0),即income变动一个单位,foodexp的0.5分位数变动0.56个单位。我们可以通过summary的se参数数据的不同假设,iid即为独立同分布的假设。

我们可以使用quantreg内置的函数计算模型拟合的残差,并绘制残差图:

r1<-resid(fit1)#计算残差
plot(r1)

残差图数据均匀分布在(-200,200)的区间中,模型拟合的结果还是可以的。

接下来,我们可以画出,income和foodexp的散点图,并绘制不同分位数的分位回归曲线。

attach(engel)
plot(income, foodexp, cex = 0.25, type = "n", xlab ="Household Income", ylab = "Food Expenditure")
points(income,foodexp , cex = 0.25, col = "blue")
abline(rq(foodexp ~income , tau = 0.5), col = "blue")
abline(lm(foodexp ~income  ), lty = 2, col = "red")
taus <- c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95)
for (i in 1:length(taus)) {
  abline(rq(foodexp ~income  , tau = taus[i]), col = "gray")
} 
detach(engel)

图中的蓝色实线代表0.5分位回归的回归曲线,红色虚线代表使用最小二乘法拟合的线性回归曲线,几条灰色的曲线,代表0.05, 0.1, 0.25, 0.75, 0.9, 0.95的分位数回归曲线。

我们可以看到不同分位数的分位回归曲线的斜率不同,0.5分位数的分位回归曲线和线性回归曲线的斜率也不相同,则可以认为,income对于foodexp不同的分位数影响不同,据此,我们将绘制不同分位数的分位回归曲线的置信区间图,来进一步探讨income对于foodexp的影响。

engel<-within(engel,xx <- income - mean(income))
fit1 <- summary(rq(foodexp~xx,tau=2:98/100,data = engel))
plot(fit1,mfrow = c(1:2))

上图绘制了0.02到0.98这个区间中,每隔0.01做一次分位回归,其中黑色实心点代表回归曲线的 \beta 值,阴影部分代表95%置信区间,红色实线和虚线分别代表的是,线性回归曲线的 \beta值和置信区间。从图中可以看出,income对于0.02分位的foodexp的影响在0.35左右,对于0.98分位的影响在0.7左右。

不同分位数的分位回归的 \beta值是否是由于抽样误差造成的,我们同样需要假设检验进行验证,那么我们使用Wald 检验进行验证。 得到如下结果,P值小于0.05可以认为不同分位数回归的 \beta 值是有差异的。

fit1 <- rq(y ~ x, tau = 0.25)
fit2 <- rq(y ~ x, tau = 0.5)
fit3 <- rq(y ~ x, tau = 0.75)

anova(fit1, fit2, fit3)

  • 56
    点赞
  • 353
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值