Python数据挖掘建模 chapter_8 时间序列算法

来源:互联网 发布:手机淘宝开店流程步骤 编辑:程序博客网 时间:2024/04/28 21:22

1.常用时间序列模型

平滑法移动平滑法,指数平滑法趋势拟合法线性拟合,曲线拟合组合模型受长期趋势,季节变动,周期变动,不规则变动等要素影响AR模型以前q期序列值为自变量MA模型随机变量与前q期随机扰动有关ARMA模型与前q期序列值和随机扰动有关ARIMA模型适用于差分平稳序列ARCH模型可准确模拟序列值波动变化GARCH模型广义ARCH模型,可反映序列长期记忆性、信息非对称性

2.预处理

平稳性检验:时序图检验、自相关图检验、单位更检验

非随机性检验


3.

数据举例

datesale_num2015/1/130232015/1/230392015/1/330562015/1/431382015/1/531882015/1/632242015/1/732262015/1/830292015/1/928592015/1/1028702015/1/1129102015/1/1230122015/1/1331422015/1/143252


#-*- coding: utf-8 -*-import pandas as pd#参数初始化discfile = 'data.xls'forecastnum = 5#读取数据,指定日期列为指标data = pd.read_excel(discfile, index_col = u'date')#时序图import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号data.plot()plt.show()#自相关图from statsmodels.graphics.tsaplots import plot_acfplot_acf(data).show()#平稳性检测from statsmodels.tsa.stattools import adfuller as ADFprint(u'原始序列的ADF检验结果为:', ADF(data[u'sale_num']))#返回值依次为adf、pvalue、usedlag、nobs、critical values、icbest、regresults、resstore D_data = data.diff().dropna()D_data.columns = [u'销量差分']D_data.plot() #时序图plt.show()plot_acf(D_data).show() #自相关图from statsmodels.graphics.tsaplots import plot_pacfplot_pacf(D_data).show() #偏自相关图print(u'差分序列的ADF检验结果为:', ADF(D_data[u'销量差分'])) #平稳性检测#白噪声检验from statsmodels.stats.diagnostic import acorr_ljungboxprint(u'差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1)) #返回统计量和p值from statsmodels.tsa.arima_model import ARIMAdata[u'sale_num'] = data[u'sale_num'].astype(float)#定阶pmax = int(len(D_data)/10) qmax = int(len(D_data)/10) bic_matrix = [] #bic矩阵for p in range(pmax+1):  tmp = []  for q in range(qmax+1):    try:       tmp.append(ARIMA(data, (p,1,q)).fit().bic)    except:      tmp.append(None)  bic_matrix.append(tmp)bic_matrix = pd.DataFrame(bic_matrix) #从中可以找出最小值p,q = bic_matrix.stack().idxmin() #先用stack展平,然后用idxmin找出最小值位置。print(u'BIC最小的p值和q值为:%s、%s' %(p,q)) model = ARIMA(data, (p,1,q)).fit() #建立ARIMA(0, 1, 1)模型model.summary2() #给出一份模型报告model.forecast(5) #作为期5天的预测,返回预测结果、标准误差、置信区间。


原创粉丝点击