首页 > 其他分享 >时间序列(二)——实践中应用

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

时间:2024-03-17 19:29:56浏览次数:34  
标签:plot plt 模型 实践 ARIMA PACF 应用 序列 import

时间序列(二)

实践中选择模型

通过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+φ1​Yt−1​+φ2​Yt−2​+…+φp​Yt−p​+θ1​ϵt−1​+θ2​ϵt−2​+…+θq​ϵt−q​+ϵ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)来帮助我们选择最好的模型。

标签:plot,plt,模型,实践,ARIMA,PACF,应用,序列,import
From: https://blog.csdn.net/ss20211121/article/details/136787750

相关文章

  • “成像光谱遥感技术中的AI革命:ChatGPT应用指南“
    遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能在解释复杂数据、提供见解和帮助决策过......
  • windows C++实现控制台应用程序隐藏后台运行
    C++实现程序隐藏后台运行,效果如下:方式一:#pragmacomment(linker,"/subsystem:\"windows\"/entry:\"mainCRTStartup\"")  方式二:   ......
  • 李沐动手学深度学习pytorch实践笔记
    1、pytorch中的矩阵乘法;2、标量对向量求导;3、pytorch的backward函数;4、如何直观理解梯度下降;梯度,是个向量,有方向和长度就是向量,向量里的各个元素是偏导、是标量对向量求导的那个偏导、是多元函数全微分里z对x、y求的那个偏导。全微分dz所在的z轴是向上的,而梯度下降需要向下,所......
  • Java面试题:详解单例模式与内存泄漏?内存模型与volatile关键字的实操?并发工具包与并发框
    Java核心技术:设计模式、内存管理与并发编程深度解析在Java技术领域,设计模式、内存管理和并发编程是构建高效、稳定系统的关键。本文将通过三道综合性面试题,深入探讨这些核心知识点,帮助读者理解其背后的原理,并在实际编程中避免常见错误。面试题一:单例模式与内存泄漏问题核......
  • Pytorch实践学习笔记一(附可运行详细代码实例)
    一、Pytorch的诞生        2017年1月,FAIR(FacebookAIResearch)发布了PyTorch。PyTorch是在Torch基础上用python语言重新打造的一款深度学习框架。Torch是采用Lua语言为接口的机器学习框架,但是因为Lua语言较为小众,导致Torch学习成本高,因此知名度不高。......
  • IntelliJ IDEA 2023.3 最新发布啦!盘点精彩亮点(关注公众号‘精品应用分享’,输入'idea'
    IntelliJIDEA2023.3的发布标志着AIAssistant的持续发展,它现已超越技术预览阶段,并具有许多令人兴奋的改进。在其他领域,该版本包括对最新Java21功能的全面支持,引入了具有编辑操作的直观浮动工具栏,并添加了“运行到光标”嵌入选项以增强调试工作流程。IntelliJIDEAUltima......
  • 引领人工智能时代的应用安全
    当生成式人工智能开始展现其编程能力时,开发人员自然会求助于它来帮助他们高效地编写代码。但随着大量人工智能生成的代码首次进入代码库,安全领导者现在正面临着人工智能对整体安全态势的潜在影响。无论是人工智能被用来将恶意代码插入开源项目,还是人工智能相关攻击的兴起,人工......
  • 时间序列预测的零样本学习是未来还是炒作:TimeGPT和TiDE的综合比较
    最近时间序列预测预测领域的最新进展受到了各个领域(包括文本、图像和语音)成功开发基础模型的影响,例如文本(如ChatGPT)、文本到图像(如Midjourney)和文本到语音(如ElevenLabs)。这些模型的广泛采用导致了像TimeGPT[1]这样的模型的出现,这些模型利用了类似于它们在文本、图像和语音方面获......
  • 第一次实践
    ......
  • 大语言模型三个应用方向
    文章目录大语言模型三个应用方向李彦宏在多个场合强调了大语言模型对未来产业发展所带来的变革潜力,并预测了它将催生三大产业机会:1.**新型云计算公司**:2.**行业模型精调服务**:3.**基于大模型的应用开发公司**:进一步解读大语言模型三个应用方向李彦宏在多个场合......