分位数回归—R语言实现

article/2025/9/21 21:49:14

      大家好,我是带我去滑雪,每天教你一个小技巧!

分位数回归—R语言实现

      1、分位数基本介绍——什么是分位数?

 2、分位数回归用途——为什么要使用分位数回归?

3、图形分析——如何进行分位数回归图像分析?

4、分位数回归原理——如何进行分位数回归?

 5、分位数回归的假设检验——能不能用?好不好?

 6、简单线性分位数回归实例——分位数回归R实操


1、分位数基本介绍——什么是分位数?

fa907edd6b5341e490a3087715613898.png

 2、分位数回归用途——为什么要使用分位数回归?

       传统的线性回归模型描述了因变量的条件均值分布受自变量X的影响过程。其中,最小二乘法是估计回归系数的最基本方法。如果模型的随机误差项来自均值为零、方差相同的分布,那么回归系数的最小二乘估计为最佳线性无偏估计;如果随机误差项进一步服从正态分布,那么回归系数的最小二乘估计与极大似然估计一致,均为最小方差无偏估计。此时它具有无偏性、有效性等优良性质。

        但是在实际的经济生活中,这种假设通常不能够满足。例如当数据中存在严重的异方差,或后尾、尖峰情况时,最小二乘法的估计将不再具有上述优良性质。最小二次估计假定解释变量x只能影响被解释变量的条件分布的均值的位置,不能影响其分布的刻度或形状的任何其他方面。分位数回归的条件更加宽松。

3、图形分析——如何进行分位数回归图像分析?

假如,现在有一个如下散点图分布的数据,对其进行普通的回归分析,得到:

e81fe8e4a68f48b39e1abd4c412e9875.png

       从拟合的曲线我们就可以看出问题了,原数据随着x增大,y的分布范围越来越大,可是因为普通的回归分析得到的是条件期望函数,也就是y的期望,所以平均即使y的分布变化了,平均来说y还是以同样的斜率稳定上升。

当我们使用0.9分位数回归,重新得出新函数图像:

830162a544aa4d4484bf8e38084f5469.png

        这次,比起普通的回归分析,就能进一步显示出y的变化幅度其实是增大了。所谓的0.9分位数回归,就是希望回归曲线之下能够包含90%的数据点(y),这也是分位数的概念,分位数回归是把分位数的概念融入到普通的线性回归而已。

       进一步的我们可以画出不同的分位数回归曲线,这样才能能更加明显地反映出,随着x的增大,y的不同范围的数据是不同程度地变化的,而这个结论通过以前的回归分析是无法得到的,这就是分位数回归的作用。

0a1ae7c0aabe428c9ccff52c5efb44b4.png

        在实际研究中,例如研究社会的贫穷情况可能就会选择收入相对较低的群体即收入水平的低分位点,而研究制定税收政策会关注高收入人群即收入水平的高分位点。

4、分位数回归原理——如何进行分位数回归?

3e04e5907fcf4a5a9a22bff715d223c6.png

 

78acab5065284c859485105198a772a3.png

e1aaae352fb746fca4aefe6b10a00e87.png

 5、分位数回归的假设检验——能不能用?好不好?

       分位数回归估计的检验包括两部分:一是与均值回归类似的检验,例如拟合优度检验、回归约束检验;二是分位数回归估计特色要求的检验,如斜率相等检验、斜率对称性检验。

6b556a0c918f4ebcb874cdf7ad8e3478.png

ff8a10e6fe8b443c86cc00b00d4cabb2.png

e03c54e6713744eaa9797b612c935851.png

 6、简单线性分位数回归实例——分位数回归R实操

install.packages("quantreg")

library(quantreg)#导入分位数回归的包

data(engel)# 引入数据

mode(engel)#查看数据格式

names(engel)#查看变量名

head(engel)#查看数据的前五行

plot(engel$income,engel$foodexp)#画个散点图

5538e34969bd4c559792c82a78021757.png

      可以看出,数据随着x的增大,y的分布范围越来越大。

 

#简单验证一下因变量foodexp是否服从正态分布

plot(density(engel$foodexp))

632fdf6558d4482c8d25d711ae337977.png

       可以看出y是右偏分布。

 

qqnorm(engel$foodexp, main='QQ plot')

qqline(engel$foodexp, col='red', lwd=2)

c52925d84fb847058c050b81a1749266.png

         结果呈一条直线才能说明大致服从正态分布,显然因变量foodexp明显不服从正态分布,但是,分位数回归不要求y服从正态分布,不仅如此,而且分位数回归还对异常值点不敏感。

下面我们继续,为了对比,我们做一个均值回归,再做一个分位数回归。

#设置0.05, 0.25, 0.5, 0.75, 0.95五个分位点,并且rq函数进行分位数回归,这样可以得到五条分位数回归线

rq_result <- rq(foodexp ~ income, tau=c(0.05, 0.25, 0.5, 0.75, 0.95))

summary(rq_result,se="nid")#系数的假设检验,se指定用于计算标准误差的方法

68f5929902c540f9bfa3ee7a74b4c506.png

 #上面就是每个分位点下回归线的回归系数,做个图看一下

plot(income, foodexp, cex=0.25, type='n', xlab='income', ylab='foodexp')

points(income, foodexp, cex=0.5, 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')

7014e366aefc49348aeb82f0af9b76db.png

        红线为传统均值回归线,其余的为分位数回归线。从上图,可以看到,分位数回归可以拟合出多条直线,这个对于我们数据分布比较复杂的时候,很有用处,每条线反应了不同档次下,自变量与因变量的关系。

rq_result2 <- rq(foodexp ~ income, tau=1:98/100)#选取更多的分位点并作图

plot(summary(rq_result2,se="nid"))

05f996b742984d7f85b1adc9ad5d182c.png

 

3de977efc2894c72b3721c631aefa835.png

       可以看到,随着分位点的增大,自变量income对因变量foodexp的影响效果是逐渐增大的。


往期精彩内容推介:

1、python常用统计分析包 

https://blog.csdn.net/qq_45856698/article/details/129304015?spm=1001.2014.3001.5501

2、偏最小二乘估计优点与适用、原理、算法推导

https://blog.csdn.net/qq_45856698/article/details/129302607?spm=1001.2014.3001.5501

3、运用自回归滑动平均模型、灰色预测模型、BP神经网络三种模型分别预测全球平均气温,并进行预测精度对比(附代码、数据)

https://blog.csdn.net/qq_45856698/article/details/129286994?spm=1001.2014.3001.5501

4、运用python爬取股票的股吧评论、新闻报道(附完整代码)

https://blog.csdn.net/qq_45856698/article/details/129268092?spm=1001.2014.3001.5501

5、利用Python爬取房价信息(附代码)

https://blog.csdn.net/qq_45856698/article/details/129249555?spm=1001.2014.3001.5501


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

 


http://chatgpt.dhexx.cn/article/J6Nmyysd.shtml

相关文章

分位数回归-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;任意类…

C语言的中常用的函数

一、main函数 一个C程序就是由若干头文件和函数组成&#xff0c;有且只有一个主函数&#xff0c;即main函数。 #include <stdio.h>int main(){printf("c语言主函数");return 0; } C程序就是执行主函数里的代码&#xff0c;C语言中的唯一入口。 main前面的int…

C语言中常用的函数

C语言中常用的函数 1、putchar()函数2、getchar()函数3、pow( a , b )函数4、sqrt( a )函数5、fabs(a)函数6、puts(字符数组)函数——输出字符串的函数7、gets(字符数组)——输入字符串的函数8、strcat(a , b)函数——字符串连接函数9、strcpy函数——字符串复制函数10、strncp…

C语言中的函数(详解)

目录 1.函数是什么 2.c语言中函数的分类&#xff1a; 2.1. 库函数 2. 自定义函数 3. 函数的参数 3.1 实际参数&#xff08;实参&#xff09; 3.2 形式参数&#xff08;形参&#xff09; 4. 函数的调用&#xff1a; 4.1 传值调用 4.2 传址调用 5. 函数的嵌套调用和链…

linux Ubuntu将默认bash修改为csh

Ubuntu将默认bash修改为csh 前言Linux系统中的shell版本问题修改方法bash切换csh方法 前言 为什么要将默认bash修改为csh&#xff0c;有时候安装的软件命令是基于csh写的&#xff0c;如果用bash使用软件就会报错&#xff0c;如&#xff1a;“No command ‘setenv’ found”&…