pandas 的 rolling regression

2023-10-13 12:59
文章标签 regression pandas rolling

本文主要是介绍pandas 的 rolling regression,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pandas的Rolling

使用pandas的rolling时,pandas DataFrame rolling 后的 apply 只能处理单列,就算用lambda的方式传入了多列,也不能返回多列 。因此如果想要做一个滚动的多元线性回归,则非常不方便。
最早的时候,有人问过这样子的问题
在这里插入图片描述
当时的解决办法是:

model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['X1', 'X2', 'X3']], window_type='rolling', window=100, intercept=True)
df['Y_hat'] = model.y_predict

但是现在pandas已经没有 stats 了,因此只能换一种方式
搜索到 statsmodels 中有 rolling,因此可以尝试看看这种写法的效率如何:

使用 statsmodels

我们先生成一些测试数据

start_date = '20150101'
end_date = '20210601'
trading_date_lst = list(assistant.ReturnTradingCalendar(start_date=start_date,end_date=end_date)['cal_date'].astype(str))
test_df = pd.DataFrame({'Date':trading_date_lst},index=pd.to_datetime(trading_date_lst))

我们假设有 Y = 3X1 + 7X2 - 10*X3

import random
x1_lst = []
x2_lst = []
x3_lst = []
y_lst = []
for i in range(len(test_df)):x1 = 10*np.sin(2*np.pi*i/60 + 100)x2 = 10*np.sin(2*np.pi*i/178 + 31)x3 = 10*np.cos(2*np.pi*i/121 + 12)y = 3*x1 + 7*x2 - 10*x3y_lst.append(y)x1_lst.append( x1+ 2*random.random())x2_lst.append( x2+ 1*random.random())x3_lst.append( x3+ 0.9*random.random())
test_df['X1'] = x1_lst
test_df['X2'] = x2_lst
test_df['X3'] = x3_lst
test_df['Y'] = y_lst
test_df.head(20)

在这里插入图片描述
现在我们进行rolling的回归

from statsmodels.regression.rolling import RollingOLS
model = RollingOLS(endog =test_df['Y'].values , exog=test_df[['X1','X2','X3']],window=40)
rres = model.fit()
rres.params

在这里插入图片描述
但是速度稍微有点慢。
神奇的是,rres里并没有predict的一个选项,因此我们计算y_hat时,还得手动计算?

para_df = rres.params
test_df['Y_hat'] = (para_df * test_df[['X1','X2','X3']]).sum(axis=1)

这篇关于pandas 的 rolling regression的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203397

相关文章

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

win7下安装Canopy(EPD) 及 Pandas进行python数据分析

先安装好canopy,具体安装版本看自己需要那种,我本来是打算安装win764位的,却发现下载总是出现错误,无奈只能下载了32位的! https://store.enthought.com/downloads/#default 安装好之后,参考如下连接,进行检验: 之后再根据下面提供的连接进行操作,一般是没问题的! http://jingyan.baidu.com/article/5d6

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能,但它与其他Python库(如Matplotlib和Seaborn)无缝集成,允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法: 1. 使用Matplotlib Pandas中的plot()方法实际上是基于Matplotlib的,你可以使用它来绘制各种基本图表,例如折线图、柱状图、散点图等。 import pandas

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

数据处理与数据填充在Pandas中的应用

在数据分析和机器学习项目中,数据处理是至关重要的一步。Pandas作为Python中用于数据分析和操作的一个强大库,提供了丰富的功能来处理和清洗数据。本文将深入探讨Pandas在数据处理,特别是数据填充方面的应用。 在实际的数据集中,缺失值(Missing Values)或异常值(Outliers)是常见的问题。这些不完整或错误的数据如果不加以处理,会严重影响数据分析的准确性和机器学习模型的性能

【python pandas】 Dataframe的数据print输出 显示为...省略号

pandas.set_option() 可以设置pandas相关的参数,从而改变默认参数。 打印pandas数据事,默认是输出100行,多的话会输出….省略号。 那么可以添加: pandas.set_option('display.max_rows',None) 这样就可以显示全部数据 同样,某一列比如url太长 显示省略号 也可以设置。 pd.set_option('display.