Python中执行分位数回归的示例详解

 更新时间:2024年03月19日 09:26:55   作者:python收藏家  
分位数回归是线性回归的扩展版本,分位数回归构建一组变量(也称为自变量)和分位数(也称为因变量)之间的关系,下面我们就来看看Python如何执行分位数回归吧

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

到此这篇关于Python中执行分位数回归的示例详解的文章就介绍到这了,更多相关Python分位数回归内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python PyAutoGUI实现自动化鼠标键盘等常用操作

    python PyAutoGUI实现自动化鼠标键盘等常用操作

    这篇文章主要介绍了python PyAutoGUI实现自动化鼠标键盘等常用操作使用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python生成一个迭代器的实操方法

    Python生成一个迭代器的实操方法

    在本文里小编给大家分享了关于Python怎么生成一个迭代器的相关操作方法,有需要的朋友们可以学习参考下。
    2019-06-06
  • python中subplot大小的设置步骤

    python中subplot大小的设置步骤

    matploglib能够绘制出精美的图表,有时候我们希望把一组图放在一起进行比较,就需要用到matplotlib中提供的subplot了,这篇文章主要给大家介绍了关于python中subplot大小的设置方法,需要的朋友可以参考下
    2021-06-06
  • 基于并发服务器几种实现方法(总结)

    基于并发服务器几种实现方法(总结)

    下面小编就为大家分享一篇基于并发服务器几种实现方法(总结),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Python2包含中文报错的解决方法

    Python2包含中文报错的解决方法

    这篇文章主要给大家介绍了关于Python2包含中文报错的解决方法,文中通过示例代码详细介绍了解决的方法,相信会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Ubuntu权限不足无法创建文件夹解决方案

    Ubuntu权限不足无法创建文件夹解决方案

    这篇文章主要介绍了Ubuntu权限不足无法创建文件夹解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 深入解读python字符串函数

    深入解读python字符串函数

    这篇文章主要为大家介绍了python字符串函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python编程学习使用管道Pipe编写优化代码

    python编程学习使用管道Pipe编写优化代码

    大家好,今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python 如何给图像分类(图像识别模型构建)

    Python 如何给图像分类(图像识别模型构建)

    这篇文章主要介绍了Python 教你如何给图像分类,今天的文章主要是讲图像识别模型如何构建,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python NumPy灰度图像的压缩原理讲解

    Python NumPy灰度图像的压缩原理讲解

    在本篇文章里小编给大家整理的是一篇关于Python NumPy灰度图像的压缩原理讲解内容,有兴趣的朋友们可以学习参考下。
    2021-08-08

最新评论