ARIMA模型

本文探讨了时间序列的平稳性概念,区分了严平稳和弱平稳,并介绍了差分法处理非平稳序列。重点讲解了ARIMA模型,包括自回归、移动平均和ARIMA(p,d,q)模型的构建过程,以及AIC和BIC选择模型的方法。最后提到模型残差的检验手段。

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

数据平稳性与差分法

平稳性
  1. 经由样本时间序列所得到的拟合曲线在未来一段期间内仍能顺着现有的形态“惯性”地延续下去;
  2. 平稳性要求序列的均值和方差不发生明显变化;
严平稳与弱平稳
严平稳

分布不随时间的改变而改变。如:白噪声(正态),无论怎么取,都是期望为0,方差为1;

弱平稳

期望与相关系数(依赖性)不变。未来某时刻的t的值Xt就要依赖它的过去信息,所以需要依赖性;

差分法

时间序列在t与t-1时刻的差值

ARIMA模型

自回归模型(AR)
  1. 描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测;

  2. 自回归模型必须满足平稳性的要求;

  3. p阶自回归过程的公式定义:在这里插入图片描述

  4. yt是当前值,𝜇是常数项,P是阶数,Ƴ𝒊是自相关系数,∈t是误差;

自回归模型的限制
  1. 自回归模型是用自身的数据来进行预测;
  2. 必须具有平稳性;
  3. 必须具有自相关性,如果自相关系数(𝛗i)小于0.5,则不宜采用;
  4. 自回归只适用于预测与自身前期相关的现象;
移动平均模型(MA)
  1. 移动平均模型关注的是自回归模型中的误差项的累加;

  2. q阶自回归过程的公式定义:在这里插入图片描述

  3. 移动平均法能有效地消除预测中的随机波动;

自回归移动平均模型(ARMA)

自回归与移动平均的结合;

公式定义:在这里插入图片描述

ARIMA(p,d,q)模型全称差分自回归移动平均模型
  1. AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数;d为时间序列成为平稳时所做的差分次数;
  2. 原理:将非平稳时间序列转化为平稳时间序列然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型;

相关函数评估方法

自相关函数ACF
  1. 有序的随机变量序列与其自身相比较,自相关函数反映了同一序列在不同时序的取值之间的相关性;
  2. 公式:在这里插入图片描述
  3. Pk的取值范围为[-1,1];
偏自相关函数(PACF)
  1. 对于一个平稳AR§模型,求出滞后k自相关系数p(k)时实际上得倒并不是x(t)与x(t-k)之间单纯的相关关系;
  2. x(t)同时还会受到中间k-1个随机变量x(t-1)、x(t-2)、…、x(t-k-1)的影响,而这k-1个随机变量又都和x(t-k)具有相关关系,所以自相关系数p(k)里实际掺杂了其他变量对x(t)与x(t-k)的影响;
  3. 剔除了中间k-1个随机变量x(t-1)、x(t-2)、…、x(t-k-1)的干扰之后x(t-k)对x(t)影响的相关程度;
  4. ACF还包含了其他变量的影响,而偏自相关系数PACF是严格这两个变量之间的相关性;

建立ARIMA模型

ARIMA(p,d,q)阶数确定
模型ACFPACF
AR§衰减趋于零(几何形或振荡形)P阶后截尾
MA(q)q阶后截尾衰减趋于零(几何形或振荡形)
ARMA(p,q)q阶后衰减趋于零(几何形或振荡形)p阶后衰减趋于零(几何形或振荡形)

截尾:落在置信区间内(95%的点都符合该规则)

ARIMA建模流程
  1. 将序列平稳(差分法确定d)
  2. p和q阶数确定:ACF与PACF
  3. ARIMA(p,d,q)

模型选择AIC与BIC:选择更简单的模型

  1. AIC:赤道信息准则,AIC=2k-2ln(L)
  2. BIC:贝叶斯信息准则,BIC=kln(n)-2ln(L)
  3. k为模型参数个数,n为样本数量,L为似然函数
模型残差检验
  1. ARIMA模型的残差是否是平均值为0且方差为常数的正态分布
  2. QQ图:线性即正态分布
### ARIMA模型的使用与实现 ARIMA(Auto-Regressive Integrated Moving Average)是一种广泛应用于时间序列分析中的统计模型,特别适合处理具有趋势性和季节性的非平稳时间序列数据。以下是关于ARIMA模型的具体使用方法和实现方式。 #### 1. 数据预处理 在应用ARIMA模型之前,通常需要对原始数据进行必要的预处理操作。这一步骤的主要目的是使时间序列满足模型的前提条件——平稳性。如果输入的时间序列为非平稳,则需对其进行差分变换以达到平稳状态[^2]。 ```python import pandas as pd from statsmodels.tsa.stattools import adfuller def check_stationarity(data): """ADF检验""" result = adfuller(data) p_value = result[1] return p_value < 0.05 # 如果p-value小于显著水平(如0.05),则认为该序列是平稳的 # 对原序列做一阶或多阶差分直到其变为平稳为止 diff_order = 0 while not check_stationarity(series): series_diff = series.diff().dropna() diff_order += 1 ``` #### 2. 参数估计 (p,d,q) ARIMA模型由三个核心参数组成:`p`, `d`, 和 `q`。其中, - **p**: 自回归项数; - **d**: 差分次数(即单整阶数),用来将非平稳序列转换成平稳序列; - **q**: 移动平均项数。 可以通过观察自相关函数图(AutoCorrelation Function, ACF)以及偏自相关函数图(Partial AutoCorrelation Function, PACF)来初步判断合适的(p,q)值[^3]。 另外,在实际工作中也可以借助自动化工具包比如`pmdarima.auto_arima()`来自动生成最佳参数组合: ```python from pmdarima.arima import auto_arima model_auto = auto_arima(train_data, seasonal=False, trace=True, error_action='ignore', suppress_warnings=True) print(model_auto.summary()) ``` #### 3. 模型拟合与验证 选定好参数之后就可以构建并训练我们的ARIMA模型了。接着利用测试集评估模型性能指标如均方误差(MSE), 平均绝对百分比误差(MAPE)等。 ```python from sklearn.metrics import mean_squared_error import numpy as np # 构造ARIMA模型实例 model = sm.tsa.ARIMA(endog=series_diff, order=(p, d, q)) results = model.fit() forecast_values = results.forecast(steps=len(test_set))[0] mape = np.mean(np.abs((test_set.values - forecast_values)/test_set.values))*100 mse = mean_squared_error(test_set, forecast_values) print(f'MAPE: {mape:.2f}%') print(f'MSE: {mse}') ``` #### 4. 结果解释与可视化展示 最后可以绘制预测曲线同真实值对比图表以便直观理解模型效果如何。 ```python plt.figure(figsize=(10,6)) plt.plot(test_index, test_set, label="Observed", color="blue") plt.plot(test_index, forecast_values, label="Forecasted", color="red") plt.legend(loc='upper left') plt.title('Actual vs Predicted Values') plt.show() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值