在Python中执行分位数回归

news2024/9/23 15:20:41

线性回归被定义为根据给定的变量集构建因变量和自变量之间关系的统计方法。在执行线性回归时,我们对计算响应变量的平均值感到好奇。相反,我们可以使用称为分位数回归的机制来计算或估计响应值的分位数(百分位数)值。例如,第30百分位、第50百分位等。

分位数回归

分位数回归是线性回归的扩展版本。分位数回归构建一组变量(也称为自变量)和分位数(也称为因变量)之间的关系。

在Python中执行分位数回归

计算分位数回归是一个逐步的过程。所有步骤详细讨论如下:

创建演示数据集

现在,让我们创建一个数据集。例如,我们正在创建一个数据集,其中包含20辆不同品牌的汽车的总行驶距离和总排放量的信息。

# Python program to create a dataset

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

np.random.seed(0)

# Specifying the number of rows
rows = 20

# Constructing Distance column
Distance = np.random.uniform(1, 10, rows)

# Constructing Emission column
Emission = 20 + np.random.normal(loc=0, scale=.25*Distance, size=20)

# Creating a dataframe
df = pd.DataFrame({'Distance': Distance, 'Emission': Emission})

df.head()

输出

    Distance    Emission
0    5.939322    22.218454
1    7.436704    19.618575
2    6.424870    20.502855
3    5.903949    18.739366
4    4.812893    16.928183

构建分位数回归

现在,我们将构建分位数回归模型,

  • 行驶距离:作为预测变量
  • 排放量:作为响应变量

现在,我们将利用这个模型来估计基于汽车行驶的总距离产生的排放的第70个百分位数。

# Python program to illustrate
# how to estimate quantile regression 

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

np.random.seed(0)

# Number of rows
rows = 20

# Constructing Distance column
Distance = np.random.uniform(1, 10, rows)

# Constructing Emission column
Emission = 40 + Distance + np.random.normal(loc=0,
											scale=.25*Distance,
											size=20)

# Creating the data set
df = pd.DataFrame({'Distance': Distance, 
				'Emission': Emission})

# fit the model
model = smf.quantreg('Emission ~ Distance',
					df).fit(q=0.7)

# view model summary
print(model.summary())

从该程序的输出中,可以推导出估计的回归方程为:

val = 39.5647 + 1.3042 * X (distance in km)
这意味着行驶X km的所有汽车的排放的第70百分位数预期为val。

可视化分位数回归

为了可视化和理解分位数回归,我们可以使用散点图拟合分位数回归。

# Python program to visualize quantile regression

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

np.random.seed(0)

# Number of rows
rows = 20

# Constructing Distance column
Distance = np.random.uniform(1, 10, rows)

# Constructing Emission column
Emission = 40 + Distance + np.random.normal(loc=0,
											scale=.25*Distance, 
											size=20)

# Creating a dataset
df = pd.DataFrame({'Distance': Distance, 
				'Emission': Emission})

# #fit the model
model = smf.quantreg('Emission ~ Distance', 
					df).fit(q=0.7)

# define figure and axis
fig, ax = plt.subplots(figsize=(10, 8))

# get y values
y_line = lambda a, b: a + Distance
y = y_line(model.params['Intercept'],
		model.params['Distance'])

# Plotting data points with the help
# pf quantile regression equation
ax.plot(Distance, y, color='black')
ax.scatter(Distance, Emission, alpha=.3)
ax.set_xlabel('Distance Traveled', fontsize=20)
ax.set_ylabel('Emission Generated', fontsize=20)

# Save the plot
fig.savefig('quantile_regression.png')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity UGUI之Toggle基本了解

在Unity中,Toggle一般用于两种状态之间的切换,通常用于开关或复选框等功能。 它的基本属性如图: 其中, Interactable(可交互):指示Toggle是否可以与用户交互。设置为false时,禁用To…

代码随想录|Day23|回溯03|39.组合总和、40.组合总和II、131.分割回文串

39.组合总和 本题和 216.组合总和III 类似,但有几个区别: 没有元素个数限制:树的深度并不固定,因此递归终止条件有所变化每个元素可以使用多次:下层递归的起始位置和上层相同(startIndex不需要改动&#xf…

#每天一道面试题# 什么是MySQL的回表查询

MySQL中的索引按照物理存储的方式分为聚集索引和非聚集索引; 聚集索引索引和数据存储在一起,B树的叶子节点就是表数据,如果通过聚集索引查询数据,直接就可以查询出我们想要的数据;非聚集索引B树的叶子节点存储的是主键…

Hive SQL必刷练习题:连续问题 间断连续(*****)

问题描述: 1) 连续问题:找出连续三天(或者连续几天的啥啥啥)。 2) 间断连续:统计各用户连续登录最长天数,间断一天也算连续,比如1、3、4、6也算登陆了6天 问题分析&am…

Java八股文(XXL-JOB)

Java八股文のXXL-JOB XXL-JOB XXL-JOB xxl-job 是什么?它的主要作用是什么? xxl-job 是一款分布式任务调度平台,用于解决分布式系统中的定时任务和异步任务调度问题。 它提供了任务的注册、调度、执行和监控等功能,能够帮助开发者…

激光打标机的维护与保养:确保设备长期稳定运行的关键

​ 激光打标机的维护与保养是确保设备长期稳定运行的关键,以下是一些关键的维护和保养步骤: 一、定期清洁 1. 清洁镜片:定期清洁激光打标机的镜片是维护保养的重要环节。使用纯净的酒精或专用的激光镜片清洗剂,轻轻擦拭镜片表面&…

WPS制作甘特图

“ 甘特图(Gantt chart)又称为横道图、条状图(Bar chart),通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。” 设置基础样式 设置行高 设置宽度 准备基础数据 计算持续时间 …

C语言数组—二维数组

二维数组的创建 //数组创建 int arr[3][4]; //三行四列,存放整型变量 double arr[2][4];二维数组的初始化 我们如果这样初始化,效果是什么样的呢 int arr[3][4] { 1,2,3,4,5,6,7,8,9,10,11,12 };那如果我们不写满十二个呢 int arr[3][4] { 1,2,3,4…

超实用!免费软件站大盘点,总有一款适合你

相信用Mac电脑的同学都知道一个网站MacWK,可以白嫖几乎所有常用软件,不用付费,但不好的消息是在2022年10月宣布关站,小编从此走上了开源免费的道路,尽管不太好用,奈何口袋木有钱,经过小编的不断…

一个页面请求从在浏览器中输入网址到页面最终呈现

前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步…

通过调整报文偏移解决CAN应用报文丢帧或周期过长问题

偏移原理 报文很多都是周期性发送的,但是如果每条报文都以一开始作为开始计时的时间点,也就是一开始就发送第一条报文,可能会导致CAN堵塞,导致丢帧或者某些报文某一时刻周期过长,就像下图这样,同一时刻CAN…

机器视觉引导的多材料3D打印

3D打印机使用机器视觉来解决困扰3D喷墨打印机的问题,增加了可以使用的材料范围,并实现了机器人手等复杂物体的快速生产。 增材制造(也称为 3D 打印)的进步已经产生了越来越强大的能力,可以生产使用传统制造工艺无法制…

CMake编译 c++源码入门教程

CMake 随着工程的越来越大,且需要跨平台的应用,Make工具也会相对麻烦。因此,2000年,由Kitware公司开发。CMake是一种跨平台的构建系统,它使用一种声明式的构建语言,允许用户通过简单的配置文件来定义项目的…

基于Andriod的连锁药店管理系统(源码|论文)

一、系统架构 前端:vue | uni-app 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理后台-首页 03. 管理后台-个人中心-修改密码 04. 管理后台-个人中心-个…

嵌入式Linux 内核的内存管理方法

内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏内核运行。 2、 用户进程也会破坏其他进程的运行 …

【Unity】CatlikeCoding SRP

Unity 自定义渲染管线 提示:基于CatlikeCoding SRP系列教程学习 学习链接:SRP 个人测试: Demo 相关记录以后有时间再更:

计算机考研|北航北理北邮怎么选?

北航985,北理985,北邮211 虽然北邮事211,但是北邮的计算机实力一点也不弱,学科评级,计算机是A 北航计算机评级也是A,北理的计算机评级是A- 所以,这三所学校在实力上来说,真的大差…

大模型知识积累——幻觉

什么是大模型幻觉 在大语言模型的文本生成场景下,幻觉是指一本正经的胡说八道。逻辑连贯的自然表述中,有理论或者事实错误,捏造事实等问题。 幻觉问题的危害 LLM幻觉可能产生传播错误知识的后果。对于医疗应用中结果安全和可信AI尤为重要&a…

研究揭示OpenAI GPT-3.5-Turbo模型参数量可能只有7B

加利福尼亚州,洛杉矶 - 一项由南加州大学计算机科学系的研究人员进行的新研究,通过创新的数学方法,对OpenAI公司的最新语言模型GPT-3.5-Turbo的内部结构进行了深入分析。研究团队通过一系列精心设计的“暴力提问”实验,成功地估计…

【全网最详细】ComfyUI下,Insightface安装指南-聚梦小课堂

🥮背景 ComfyUI下使用IP-adapter下的faceID模型的时候,大家可能会遇到如下错误: Error occurred when executing InsightFaceLoader: No module named insightface File "F:\ComfyUI-aki\execution.py", line 151, in recursive_…