季节性时间序列分析-SARIMAX模型的python实现

本文介绍了如何使用Python中的SARIMAX模型进行季节性时间序列分析,包括数据预处理、平稳性检测、季节性分解、参数定阶以及模型拟合。关键步骤在于确定season_order参数的m值,例如月度数据m通常设为12,而周度数据可能设为52。通过对预测值和真实值的对比,评估模型效果。
摘要由CSDN通过智能技术生成

0 SARIMAX模型时间序列分析步骤

1. 用pandas处理时序数据

2. 检验时序数据的平稳性

3. 将时序数据平稳化

4. 确定order 的 p.d.q值

5. 确定season_order的四个值

6. 应用SARIMAX模型对时序数据进行预测

其实SARIMAX比ARIMA模型就多了个season_order参数的确定,但也是这里最费时间的一个步骤

1 将数据转化成为时序数据

先一股脑导入一下工具包

import pandas as pd
import datetime
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
import seaborn as sns
import statsmodels.tsa.stattools as ts
import statsmodels.api as sm
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.stats.diagnostic import unitroot_adf
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import itertools
import warnings
import numpy as np
from statsmodels.tsa.seasonal import seasonal_decompose
#读取数据
data = pd.read_csv('factor.csv')
data.index = pd.to_datetime(data['date'])
data.drop(['date'], axis=1, inplace=True)
data = data.result
data.head()
#数据大致情况展示
data.plot(figsize=(12,8))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title('result')
sns.despine()
plt.show()

 

2 序列平稳性检测

#数据平稳性检测 因为只有平稳数据才能做时间序列分析
def judge_stationarity(data_sanya_one):
    dftest = ts.adfuller(data_sanya_one)
    print(dftest)
    dfoutput = pd.Series(dftest[0:4], index=['
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>