Python_Statsmodels包_时间序列分析_ARIMA模型

本文介绍了使用Python的Statsmodels库进行时间序列分析,特别是ARIMA模型的应用。首先,通过导入相关库并加载数据,然后进行一阶差分使序列平稳。接着,利用自相关图和偏自相关图选择合适的ARIMA模型参数,并通过AIC、BIC和HQIC准则确定最优模型。最后,检查模型残差的自相关性和正态性,并进行预测。结果显示ARIMA(8,0)模型表现最佳,预测结果给出了未来几年的数据趋势。" 112798945,7549583,Java开发的塞北村镇旅游网站,"['Java', '旅游网站开发', '数据库设计', 'JSP', 'SQL']
摘要由CSDN通过智能技术生成

以前都是用SPSS/EVIEWS等来做的,现在用Python来搞搞看,前后弄了一个星期,总算基本走通了。


基础库: pandas,numpy,scipy,matplotlib,statsmodels :

from __future__ import print_function
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


运行的时候会报错:Undefined variable from import:,不过好像不影响结果


1.数据:

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() // 在Scala IDE要输入这个命令才能显示图片


2.时间序列的差分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)


已经平稳,二阶效果也差不多,具体见原文

3.合适的p,q 


现在我们已经得到一个平稳的时间序列

评论 84
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值