基于python的时间序列分析_使用ARIMA模型进行时间序列分析(Python_u-Statsmodels包),利用,PythonStatsmodels...

本文介绍了如何使用Python的Statsmodels库进行时间序列分析,特别是ARIMA模型的运用。首先导入相关库,定义数据并进行可视化,然后进行时间序列差分以使其平稳。接着,通过自相关图和偏自相关图选择合适的ARIMA模型参数p和q。通过AIC准则选择了ARMA(8,0)模型,并检验了残差序列的自相关性和正态分布。最后,进行了预测并展示了预测结果。" 129972904,374628,门限签名详解:GG18 ECDSA 门限签名协议,"['密码学', '安全协议', '门限签名', 'ECDSA', '分布式计算']
摘要由CSDN通过智能技术生成

先分享几个关于ARIMA写的比较好的博客:

1. import 基础库

import pandas as pd

import numpy as np

from scipy import stats

import matplotlib.pyplot as plt

import statsmodels.api as sm

from statsmodels.graphics.api import qqplot

2. 定义数据

dta=[10930,10318,10595,10972,7706,6756,9092,10551,9722,10913,11151,8186,6422,

6337,11649,11652,10310,12043,7937,6476,9662,9570,9981,9331,9449,6773,6304,9355,

10477,10148,10395,11261,8713,7299,10424,10795,11069,11602,11427,9095,7707,10767,

12136,12812,12006,12528,10329,7818,11719,11683,12603,11495,13670,11337,10232,

13261,13230,15535,16837,19598,14823,11622,19391,18177,19994,14723,15694,13248,

9543,12872,13101,15053,12619,13749,10228,9725,14729,12518,14564,15085,14722,

11999,9390,13481,14795,15845,15271,14686,11054,10395]

dta=np.array(dta,dtype=np.float) //这里要转下数据类型,不然运行会报错

dta=pd.Series(dta)

dta.index = pd.Index(sm.tsa.datetools.dates_from_range('2001','2090')) //应该是2090,不是2100

dta.plot(figsize=(12,8))

plt.show()

645a2d23e90c90a47a2bcc2576d1d99e.png

3. 时间序列的差分 d

ARIMA 模型对时间序列的要求是平稳型。因此,当你得到一个非平稳的时间序列时,首先要做的即是做时间序列的差分,直到得到一个平稳时间序列。如果你对时间序列做d次差分才能得到一个平稳序列,那么可以使用ARIMA(p,d,q)模型,其中d是差分次数。

fig = plt.figure(figsize=(12,8))

ax1= fig.add_subplot(111)

diff1 = dta.diff(1)

diff1.plot(ax=ax1)

b028477e4c2a0a8a5f1950323de3a652.png

StatsmodelsPython中用于统计建模和计量经济学的库,它提供了各种统计模型括线性回归、时间序列分析等。在时间序列分析中,ARIMA模型是一种常用的模型ARIMA模型是自回归移动平均模型的缩写,它是一种广义的线性模型,常用于描述时间序列数据的自相关结构和随机性。ARIMA模型可以分为AR(自回归)、MA(移动平均)和差分(I)三部分,其中AR是指用当前值的前几个值来预测当前值,MA是指用当前误差的前几个值来预测当前误差,差分是指对时间序列进行差分处理,使其变得平稳。 在Python中,使用Statsmodels中的ARIMA模型进行时间序列分析可以分为以下几个步骤: 1. 导入相关库 ```python import pandas as pd import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt ``` 2. 读取数据 ```python data = pd.read_csv("data.csv", index_col=0, parse_dates=True) ``` 3. 绘制时间序列图 ```python plt.plot(data) plt.show() ``` 4. 确定模型阶数 可以使用ACF和PACF图来确定ARIMA模型的阶数。ACF图展示了时间序列与其滞后版本之间的自相关性,PACF图展示了当前时间序列与其滞后版本之间的部分自相关性。根据ACF和PACF图的信息,可以确定ARIMA模型的p、d和q参数。 ```python fig, ax = plt.subplots(2,1) sm.graphics.tsa.plot_acf(data, lags=30, ax=ax[0]) sm.graphics.tsa.plot_pacf(data, lags=30, ax=ax[1]) plt.show() ``` 5. 拟合模型 根据确定的ARIMA模型阶数,使用ARIMA()函数拟合时间序列数据。 ```python model = sm.tsa.ARIMA(data, order=(p,d,q)) results = model.fit() ``` 6. 模型诊断 使用plot_diagnostics()函数进行模型诊断,检查残差是否符合白噪声假设。 ```python results.plot_diagnostics(figsize=(15, 12)) plt.show() ``` 7. 预测 使用forecast()函数进行预测。 ```python forecast = results.forecast(steps=10) ``` 以上就是使用PythonStatsmodels进行时间序列分析ARIMA模型的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值