时间序列(二)——实践中应用

本文介绍了如何通过自相关函数(ACF)和偏自相关函数(PACF)来确定ARIMA模型中的超参数p和q。ACF用于识别AR成分,PACF用于识别MA成分,而模型类型和参数值依赖于这两个图的特性。对于纯随机序列,ACF和PACF通常会显示无明显特征,这时模型可能为ARIMA。实际应用中,可能还需结合模型选择准则如AIC和BIC进行优化。

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

实践中选择模型

通过p、d、q决定需要的模型

ARIMA模型的公式可以表示为:

Y t = c + φ 1 Y t − 1 + φ 2 Y t − 2 + … + φ p Y t − p + θ 1 ϵ t − 1 + θ 2 ϵ t − 2 + … + θ q ϵ t − q + ϵ t Y_t=c+\varphi_1Y_{t-1}+\varphi_2Y_{t-2}+\ldots+\varphi_pY_{t-p}+\theta_1\epsilon_{t-1}+\theta_2\epsilon_{t-2}+\ldots+\theta_q\epsilon_{t-q}+\epsilon_t Yt=c+φ1Yt1+φ2Yt2++φpYtp+θ1ϵt1+θ2ϵt2++θqϵtq+ϵt

时间序列(一)中我们已经提到过,ARIMA模型中的三个参数p、q、d分别代表的含义是:p和q分别控制ARIMA模型中自回归和移动平均的部分,而d则控制输入ARIMA模型的数据被执行的差分的阶数。可以简单理解为:

ARIMA(p,d,q)模型类型模型解释
ARIMA(0,d,0)随机游走模型或白噪声模型当d=1时,是随机游走模型;当d=0时,是白噪声模型
ARIMA(0,d,q)MA模型或IMA模型当d=0时,是MA(q)模型;当d≠0时,是IMA(d,q)模型
ARIMA(p,d,0)AR模型或ARIMA模型当d=0时,是AR模型;当d≠0时,是ARIMA(p,d,0)模型
ARIMA(p,d,q)ARMA模型或ARIMA模型当d=0时,是ARMA(p, q)模型;当d≠0时,是ARIMA(p,d,q)模型

模型解释:

1、AR模型(Autoregressive Model):自回归模型,它将当前值与过去p个值的线性组合进行比较。

2、MA模型(Moving Average Model):移动平均模型,它将当前值与过去q个误差项的线性组合进行比较。

3、ARMA模型(Autoregressive Moving Average Model):自回归移动平均模型,它是AR模型和MA(q)模型的组合。

4、ARIMA模型(Autoregressive Integrated Moving Average Model):自回归积分移动平均模型,它是ARMA(p, q)模型的扩展,增加了差分的步骤,使得非平稳序列变得平稳。

5、IMA模型(Integrated Moving Average Model):积分移动平均模型,它是MA(q)模型的扩展,增加了差分的步骤,使得非平稳序列变得平稳。

超参数p的确定

对于AR模型,ACF会展现出拖尾的形式,而PACF则在p阶后突然截尾。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

# 参数
ar = np.array([1, -0.5, -0.4])
ma = np.array([1])

# 生成AR(2)过程
ar2_process = ArmaProcess(ar, ma)
ar2_sample = ar2_process.generate_sample(nsample=1000)

# 绘制ACF和PACF
plt.figure(figsize=(12,8))
plt.subplot(211)
plot_acf(ar2_sample, ax=plt.gca())
plt.subplot(212)
plot_pacf(ar2_sample, ax=plt.gca())
plt.show()

对任意时间序列,当ACF图像呈现拖尾、且PACF图像呈现截尾状态时,当前时间序列适用AR模型,且PACF截尾的滞后阶数就是超参数p的理想值,如图(此图适用模型:AR,超参数q和p分别为0,2):

在这里插入图片描述

超参数q的确定

对于MA模型,ACF在q阶后突然截尾,而PACF则呈现拖尾的形式

import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

# 定义MA模型的参数
ar = np.array([1])
ma = np.array([1, 0.5, 0.7])
np.random.seed(1)

# 创建ARMA模型
arma_process = ArmaProcess(ar, ma)
sample = arma_process.generate_sample(nsample=1000)

# 绘制ACF和PACF图
plt.figure(figsize=(12,8))
plt.subplot(211)
plot_acf(sample, ax=plt.gca(), lags=30)
plt.subplot(212)
plot_pacf(sample, ax=plt.gca(), lags=30)
plt.show()

对任意时间序列,当PACF图像呈现拖尾、且ACF图像呈现截尾状态时,当前时间序列适用MA模型,且ACF截尾的滞后阶数就是超参数q的理想值
在这里插入图片描述
对于MA模型,PACF的拖尾可能不会很明显,这主要是因为在实际的样本数据中,PACF可能会受到噪声的影响。不过,在理论上,MA(q)模型的PACF应该在q阶后展现出拖尾的特性。

一般情况下如何确定p和q

如果我们有一个纯随机(也称为白噪声)序列,那么它的自相关和部分自相关应该都是接近零的。这就是所谓的“不截尾,几乎没有显著的值”的情况。我们可以用numpy来生成这样一个序列。

import numpy as np
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt

np.random.seed(0)
random_series = np.random.normal(size=1000)

plt.figure(figsize=(12,8))
plt.subplot(211)
plot_acf(random_series, ax=plt.gca())
plt.subplot(212)
plot_pacf(random_series, ax=plt.gca())
plt.show()

对任意时间序列,当ACF图像和PACF图像都呈现不呈现拖尾状态时,无论图像是否截尾,时间序列都适用于ARIMA模型,且此时ACF和PACF图像无法帮助我们确定p和q的具体值,但能确认p和q一定都不为0

在这里插入图片描述

总的来说,ACF和PACF图像可以给我们一些关于应该使用什么类型的模型(AR、MA还是ARIMA)以及可能的p和q值的初步想法。然而,它们不能给我们绝对的答案,因为在实际数据中可能存在一些噪声和复杂性,这就需要我们使用一些模型选择准则(如AIC和BIC)来帮助我们选择最好的模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值