分位数回归模型学习笔记

article/2025/9/21 21:50:45

我读硕士老师给我的第一篇论文就是一个分位数回归的文章,当时觉得这个模型很简单,我很快就用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)


http://chatgpt.dhexx.cn/article/6KcjPQW1.shtml

相关文章

Python统计学11——分位数回归

分位数回归也是数理统计里面经典的模型&#xff0c;他相对于在最小二乘模型上进行了改进&#xff0c;虽然本身还是线性的参数模型&#xff0c;但对损失函数进行了改进。我们都知道最小二乘的损失函数是均方误差最小&#xff0c;分位数的损失函数是&#xff1a; 可以看到分位数损…

分位数回归(quantile regression)R实现

分位数回归&#xff08;quantile regression&#xff09;R实现 一、基本介绍二、使用分位数回归的原因三、R 语言实现分位数回归 一、基本介绍 回归分析的主要目的&#xff1a;实证检验理论分析中因变量与自变量之间的关系。传统的均值回归&#xff0c;主要使用因变量的条件均…

分位数回归(Stata)

基于分位数回归的成都空气质量指数的数据分析 空气质量指数计算公式为&#xff1a; &#xff08;1&#xff09;线性回归模型得到的是一种条件均值&#xff0c;并未考虑到因变量总体上的分布特征&#xff0c;在需要了解因变量位置&#xff08;分位数&#xff09;上的信息时&…

分位数回归—R语言实现

大家好&#xff0c;我是带我去滑雪&#xff0c;每天教你一个小技巧&#xff01; 分位数回归—R语言实现 1、分位数基本介绍——什么是分位数&#xff1f; 2、分位数回归用途——为什么要使用分位数回归&#xff1f; 3、图形分析——如何进行分位数回归图像分析&#xff1f; …

分位数回归-Quantile regression

一、分位数回归概念 分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。 以往的回归模型实际上是研究被解释变量的条件期望。而人们也关心解释变量与被解释变量分布的中位数&#xff0c;分位数呈何种关系。它最早由Koenker和Bassett(1978)提出。 …

分位数回归(Quantile regression)笔记

分位数回归&#xff08;Quantile regression&#xff09;是在给定 X \mathbf{X} X的条件下估计 y \mathbf{y} y的中位数或其他分位数&#xff0c; 这是与最小二乘法估计条件均值最大的不同。 分位数回归也是一种线性回归&#xff0c;它为第 q q q个分位数&#xff08; q ∈ ( …

分位数回归(quantile regression)简介和代码实现

普通最小二乘法如何处理异常值&#xff1f; 它对待一切事物都是一样的——它将它们平方&#xff01; 但是对于异常值&#xff0c;平方会显著增加它们对平均值等统计数据的巨大影响。 我们从描述性统计中知道&#xff0c;中位数对异常值的鲁棒性比均值强。 这种理论也可以在预测…

分位数回归(Quantile Regression)

在介绍分位数回归之前&#xff0c;先重新说一下回归分析&#xff0c;我们之前介绍了线性回归、多项式回归等等&#xff0c;基本上&#xff0c;都是假定一个函数&#xff0c;然后让函数尽可能拟合训练数据&#xff0c;确定函数的未知参数。尽可能拟合训练数据&#xff0c;一般是…

C语言最全函数大全

以下图片以字母顺序排列&#xff0c;语法着色版本。 每个函数包含函数名&#xff0c;功能&#xff0c;用法&#xff0c;举例...

C语言函数大全-- s 开头的函数(2)

s 开头的函数&#xff08;2&#xff09; 1. setlinestyle1.1 函数说明1.2 演示示例1.3 运行结果 2. setmem2.1 函数说明2.2 演示示例 3. setmode3.1 函数说明3.2 演示示例3.3 运行结果 4. setpalette4.1 函数说明4.2 演示示例4.3 运行结果 5. setrgbpalette5.1 函数说明5.2 演示…

C语言函数大全-- i 开头的函数

i 开头的函数 1. imagesize1.1 函数说明1.2 演示示例1.3 运行结果 2. initgraph2.1 函数说明2.2 演示示例2.3 运行结果 3. inport3.1 函数说明3.2 演示示例 4. insline4.1 函数说明4.2 演示示例 5. installuserdriver5.1 函数说明5.2 演示示例 6. installuserfont6.1 函数说明6…

函数 C语言】

函数的声明和定义 函数间调用关系是&#xff0c;由于函数调用其他函数&#xff0c;替他函数也可以互相调用&#xff0c;同一个函数可以被一个或多个函数调用任意次。 先声明&#xff0c;后调用。 #include <stdio.h> //去标准库下找文件 #include "stdio.h"…

【C语言】函数详解

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️专栏&#xff1a;✈️C语言快速入门       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点…

C语言函数大全-- s 开头的函数(1)

s 开头的函数&#xff08;1&#xff09; 1. sbrk1.1 函数说明1.2 演示示例 2. scalb&#xff0c;scalbf&#xff0c;scalbl2.1 函数说明2.2 演示示例 3. scalbln&#xff0c;scalblnf&#xff0c;scalblnl3.1 函数说明3.2 演示示例3.3 运行结果 4. scalbn&#xff0c;scalbnf&a…

【详解C语言】函数

文章目录 1. 函数是什么&#xff1f;2. C语言中函数的分类&#xff1a;1. 库函数&#xff1a;2. 自定义函数 3. 函数的参数3.1 实际参数&#xff08;实参&#xff09;3.2 形式参数&#xff08;形参&#xff09; 4. 函数的调用&#xff1a;4.1 传值调用4.2 传址调用4.3 练习 5. …

C语言函数介绍

1.字母的大小写转换-->islower() 2.快速排序函数-->qsort() 下面正式给大家介绍这两个函数 &#xff08;1&#xff09;islower() islower() 函数用来检测一个字符是否是小写字母。 在默认情况下&#xff0c;小写字母包括&#xff1a; a,b,c,d,e,f,g,h,i,j,k,l,m,n,o…

C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)

文章目录 C语言函数库:一. <ctype.h>二. <math.h>三. <stdio.h>四. <stdlib.h>五. <time.h>六. <string.h> 文档资料 C语言函数库: C语言的常用的标准头文件有 &#xff1a; <ctype.h>   <time.h>   <stdio.h> <…

【C语言进阶】最常用的库函数大全——从入门到精通

目录 前言&#xff1a; 一.字符串函数 1.strlen——求字符串长度 strlen 2.长度不受限制的字符串函数 a.strcpy——字符串拷贝 strcpy b.strcat——追加字符串 strcat c.strcmp——字符串比较 strcmp 3.长度受限制的字符串函数——strncpy,strncat,strncmp 为什么会…

C语言一些常用的函数

目录 sizeof()运算符strlen()函数abort()函数exit()函数Sleep()函数atof()将字符串转换成浮点数atoi()将字符串转换成整型数的函数atol()将字符串转换成长整型数的函数strlwr()函数strupr()函数 sizeof()运算符 sizeof()运算符: 编译器自带的,不用到任何包都能用。用法&…

C语言常用函数详解

函数详解&#xff1a; strlen(字符串长度)sizeof(字节大小)strcmp(字符串比较)strcpy(字符串拷贝)strcat(字符串追加)strncpy(字符串按字节拷贝)strncmp(字符串按字节比较)strncat(字符串按字节追加)strstr(查找字符串)strtok(查找符号)memcpy(按字节拷贝数据&#xff08;任意类…