ARIMA模型(p,d,q)参数确定(python)

本文介绍了如何使用Python中的statsmodels库来确定ARIMA模型的参数p、d、q。通过分析时间序列的自相关函数ACF和偏自相关函数PACF,确定了差分次数d,并探讨了ACF和PACF在模型构建中的作用。内容以历年美国消费者信心指数数据为例,展示了具体代码和分析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数d:

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

模型的参数p和q由ACF和PACF确定

如下表格

在这里插入图片描述

statsmodels介绍

statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法,而贝叶斯方法和机器学习模型可在其他库中找到。
包含在statsmodels中的一些模型:

  • 线性模型,广义线性模型和鲁棒线性模型
  • 线性混合效应模型
  • 方差分析(ANOVA)方法
  • 时间序列过程和状态空间模型
  • 广义的矩量法
我们使用其中的时间序列相关函数进行模型的构建。数据为历年美国消费者信心指数数据,代码如下:
%load_ext autoreload
%autoreload 2
%matplotlib inline
%config InlineBackend.figure_format='retina'
import pandas as pd
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as smt
#Display and Plotting
import matplotlib.pylab as plt
import seaborn as sns
# pandas与numpy属性设置
pd.set_option('display.float_format',lambda x:'%.5f'%x)#pandas
np.set_printoptions(precision=5,suppress=True) #numpy
pd.set_option('display.max_columns',100)
pd.set_option('display.max_rows',100)
#seaborn.plotting style
sns.set(style='ticks',context='poster')

Sentiment='sentiment.csv'
Sentiment=pd.read_csv(Sentiment,index_col=0,parse_dates=[0])
Sentiment.head()

在这里插入图片描述

#选取时间断
sentiment_short=Sentiment.loc['2005':'2016']
sentiment_short.plot(figsize=(12,8))
plt.legend(bbox_to_anchor=(1.25,0.5))
plt.title('Consumer Sentiment')
sns.despine()

在这里插入图片描述

#help(sentiment_short['UMCSENT'].diff(1))
#函数diss()作用:https://blog.csdn.net/qq_32618817/article/details/80653841#
#https://blog.csdn.net/You_are_my_dream/article/details/700
确定ARIMA模型的p、q和d值通常需要进行以下步骤: 1. 确定时间序列的平稳性:通过绘制时间序列图以及对序列进行ADF检验或KPSS检验等统计测试,判断时间序列是否平稳。如果时间序列不平稳,需要进行差分操作。 2. 确定差分次数d:通过观察自相关图和偏自相关图,确定差分次数d,使得时间序列转化为平稳序列。 3. 确定AR部分的阶数p:通过观察偏自相关图,确定AR模型中的阶数p,即自回归项的个数。 4. 确定MA部分的阶数q:通过观察自相关图,确定MA模型中的阶数q,即移动平均项的个数。 可以使用Python中的statsmodels包来确定ARIMA模型的p、q和d值。具体实现代码如下: ```python from statsmodels.tsa.arima_model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacf from statsmodels.tsa.stattools import adfuller, kpss import matplotlib.pyplot as plt # 读取时间序列数据 data = ... # 绘制时间序列图 plt.plot(data) plt.show() # 进行ADF检验和KPSS检验,判断时间序列是否平稳 result_adf = adfuller(data) result_kpss = kpss(data) print('ADF检验结果:', result_adf) print('KPSS检验结果:', result_kpss) # 进行一阶差分操作,使得时间序列平稳 diff_data = ... plt.plot(diff_data) plt.show() # 绘制ACF和PACF图,判断ARIMA模型的p和q值 plot_acf(diff_data) plot_pacf(diff_data) plt.show() # 确定ARIMA模型的p、d、q值 p = ... d = ... q = ... # 构建ARIMA模型 model = ARIMA(data, order=(p, d, q)) # 拟合模型 model_fit = model.fit() # 输出模型参数 print(model_fit.params) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值