python时间序列小波分析_python时间序列分析

本文介绍了Python中进行时间序列分析的基本步骤,包括时间序列模型ARIMA,以及如何利用pandas进行数据处理。首先解释了时间序列分析的概念和重要性,然后探讨了为何选择Python进行分析。接着,文章详细展示了如何配置环境,使用pandas进行时间序列操作,以及如何进行平稳性检验。最后,通过航空乘客数据实例,演示了ARIMA模型的构建和预测,以及如何通过差分和移动平均处理不平稳序列。
摘要由CSDN通过智能技术生成

什么是时间序列

时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不考虑含外生变量的时间序列)。

为什么用python

用两个字总结“情怀”,爱屋及乌,个人比较喜欢python,就用python撸了。能做时间序列的软件很多,SAS、R、SPSS、Eviews甚至matlab等等,实际工作中应用得比较多的应该还是SAS和R,前者推荐王燕写的《应用时间序列分析》,后者推荐“

环境配置

python推荐直接装Anaconda,它集成了许多科学计算包,有一些包自己手动去装还是挺费劲的。statsmodels需要自己去安装,这里我推荐使用0.6的稳定版,0.7及其以上的版本能在github上找到,该版本在安装时会用C编译好,所以修改底层的一些代码将不会起作用。

时间序列分析

1.基本模型

自回归移动平均模型(ARMA(p,q))是时间序列中最为重要的模型之一,它主要由两部分组成: AR代表p阶自回归过程,MA代表q阶移动平均过程,其公式如下:

依据模型的形式、特性及自相关和偏自相关函数的特征,总结如下:

在时间序列中,ARIMA模型是在ARMA模型的基础上多了差分的操作。

2.pandas时间序列操作

大熊猫真的很可爱,这里简单介绍一下它在时间序列上的可爱之处。和许多时间序列分析一样,本文同样使用航空乘客数据(AirPassengers.csv)作为样例。

数据读取:

# -*- coding:utf-8 -*- import numpy as np import pandas as pd

from datetime import datetime

import matplotlib.pylab as plt

# 读取数据,pd.read_csv默认生成DataFrame对象,需将其转换成Series对象

df = pd.read_csv('AirPassengers.csv', encoding='utf-8', index_col='date')

df.index = pd.to_datetime(df.index) # 将字符串索引转换成时间索引

ts = df['x'] # 生成pd.Series对象

# 查看数据格式

ts.head()

ts.head().index

查看某日的值既可以使用字符串作为索引,又可以直接使用时间对象作为索引

ts['1949-01-01'] ts[datetime(1949,1,1)]

两者的返回值都是第一个序列值:112

如果要查看某一年的数据,pandas也能非常方便的实现

ts['1949']

切片操作:

ts['1949-1' : '1949-6']

注意时间索引的切片操作起点和尾部都是包含的,这点与数值索引有所不同

pandas还有很多方便的时间序列函数,在后面的实际应用中在进行说明。

3. 平稳性检验

我们知道序列平稳性是进行时间序列分析的前提条件,很多人都会有疑问,为什么要满足平稳性的要求呢?在大数定理和中心定理中要求样本同分布(这里同分布等价于时间序列中的平稳性),而我们的建模过程中有很多都是建立在大数定理和中心极限定理的前提条件下的,如果它不满足,得到的许多结论都是不可靠的。以虚假回归为例,当响应变量和输入变量都平稳时,我们用t统计量检验标准化系数的显著性。而当响应变量和输入变量不平稳时,其标准化系数不在满足t分布,这时再用t检验来进行显著性分析,导致拒绝原假设的概率增加,即容易犯第一类错误,从而得出错误的结论。

平稳时间序列有两种定义:严平稳和宽平稳

严平稳顾名思义,是一种条件非常苛刻的平稳性,它要求序列随着时间的推移,其统计性质保持不变。对于任意的τ,其联合概率密度函数满足:

严平稳的条件只是理论上的存在,现实中用得比较多的是宽平稳的条件。

宽平稳也叫弱平稳或者二阶平稳(均值和方差平稳),它应满足:常数均值

常数方差

常数自协方差

平稳性检验:观察法和单位根检验法

基于此,我写了一个名为test_stationarity的统计性检验模块,以便将某些统计检验结果更加直观的展现出来。

# -*- coding:utf-8 -*- from statsmodels.tsa.stattools import adfuller import pandas as pd import matplotlib.pyplot as plt import numpy as np from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

# 移动平均图 def draw_trend(timeSeries, size): f = plt.figure(facecolor='whi

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python时间序列小波相干分析是一种用于研究两个时间序列之间的关系的方法。小波相干分析可以显示出在不同时间周期上,两个时间序列之间的相关性如何。这通过计算小波交叉谱和小波相干谱来实现。 小波交叉谱显示了两个时间序列在不同频率上的相关性,可以帮助我们确定在哪些时期,两个时间序列具有相似的周期信号。而小波相干谱则显示了两个时间序列在不同时间周期和频率上的相关性,可以帮助我们确定在哪些周期段的信号上,两个时间序列的相关性如何。这里的相关性是指绝对值。 在Python中,我们可以使用pycwt包来实现时间序列的小波相干分析。具体的代码和数据可以在GitHub上找到,这个包的作者是Sebastian Krieger和Nabil Freij等人。通过使用这个包,我们可以生成小波交叉谱和小波相干谱,并通过箭头表示对应信号的相位差。 因此,Python时间序列小波相干分析提供了一种强大的工具,可以帮助我们研究和分析两个时间序列之间的关系。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python实现小波相干和小波交叉](https://blog.csdn.net/weixin_45577825/article/details/131231760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python在大数据方面的应用前景](https://download.csdn.net/download/milk416666/88264587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [时间序列小波分析](https://download.csdn.net/download/fuyanghuzui/11221053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值