掌握时间序列分析,从零基础到ARIMA高手
创作时间:
作者:
@小白创作中心
掌握时间序列分析,从零基础到ARIMA高手
引用
CSDN
等
9
来源
1.
https://blog.csdn.net/fenglingguitar/article/details/141927949
2.
https://blog.csdn.net/windowshht/article/details/137715108
3.
https://blog.csdn.net/qq_33375598/article/details/137740852
4.
https://cloud.baidu.com/article/3328834
5.
https://cloud.baidu.com/article/3328665
6.
https://blog.csdn.net/Morse_Chen/article/details/144793235
7.
https://blog.csdn.net/weixin_39753819/article/details/135863541
8.
https://cloud.baidu.com/article/3064036
9.
https://www.feishu.cn/content/timeseries-database-use-cases
时间序列分析是数据分析领域的重要工具,广泛应用于金融、经济、物联网等多个领域。其中,ARIMA模型作为经典的时间序列预测方法,因其强大的预测能力和广泛的适用性而备受青睐。本文将从零基础开始,逐步讲解时间序列分析的基本概念和ARIMA模型的具体应用,帮助读者快速掌握这一重要工具。
01
时间序列分析基础
什么是时间序列分析?
时间序列分析是一种统计方法,通过观察和预测数据随时间的变化趋势来揭示潜在规律。其核心思想是寻找系统的当前值与其过去的运行记录(观察数据)的关系,建立能够比较精确地反映时间序列中动态依存关系的数学模型,并借此对系统的未来行为进行预报。
应用场景
时间序列分析在多个领域都有广泛应用:
- 金融市场:股票价格预测、汇率预测
- 经济预测:GDP预测、失业率预测
- 物联网数据:传感器数据预测
- 库存管理:销售预测、库存优化
数据预处理
在进行时间序列分析之前,需要对数据进行预处理,主要包括:
- 平稳性检验:检查数据是否具有稳定的均值、方差等特性。常用的方法有ADF检验(Augmented Dickey-Fuller Test)。
- 白噪声检验:判断数据是否存在显著变化。白噪声序列无预测价值,需停止分析。
- 差分处理:对非平稳数据进行差分,使其达到平稳状态。
02
ARIMA模型详解
ARIMA模型(Autoregressive Integrated Moving Average model)是时间序列预测分析的重要工具,特别适用于具有趋势但无明显季节性的数据。其模型形式为ARIMA(p,d,q),其中:
- p:自回归阶数
- d:差分次数
- q:滑动平均阶数
模型建立步骤
- 数据预处理:确保数据平稳,必要时进行差分处理。
- 参数选择:
- 通过自相关函数(ACF)和偏自相关函数(PACF)图确定p和q的值
- 使用AIC(赤池信息量准则)或BIC(贝叶斯信息准则)帮助选择最优参数组合
- 模型训练:使用选定的参数建立ARIMA模型,并通过残差检验评估模型拟合效果。
- 模型预测:对未来数据进行预测,并计算预测区间。
03
实际案例分析
以某公司年度销售额数据为例,演示ARIMA模型的建立和预测过程。
数据准备
假设我们有一组年度销售额数据:
年份 | 销售额(万元) |
|---|---|
2010 | 120 |
2011 | 130 |
2012 | 145 |
2013 | 150 |
2014 | 160 |
2015 | 175 |
2016 | 180 |
2017 | 195 |
2018 | 205 |
2019 | 220 |
2020 | 230 |
2021 | 245 |
Python代码实现
import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.stattools import acf, pacf
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt
# 数据准备
data = {'Year': [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021],
'Sales': [120, 130, 145, 150, 160, 175, 180, 195, 205, 220, 230, 245]}
df = pd.DataFrame(data)
df.set_index('Year', inplace=True)
# 平稳性检验
result = adfuller(df['Sales'])
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
# 差分处理
df['Sales_diff'] = df['Sales'].diff().dropna()
result_diff = adfuller(df['Sales_diff'].dropna())
print('ADF Statistic (after differencing): %f' % result_diff[0])
print('p-value (after differencing): %f' % result_diff[1])
# ACF和PACF图
lag_acf = acf(df['Sales_diff'].dropna(), nlags=10)
lag_pacf = pacf(df['Sales_diff'].dropna(), nlags=10, method='ols')
plt.subplot(121)
plt.plot(lag_acf)
plt.axhline(y=0, linestyle='--', color='gray')
plt.axhline(y=-1.96/np.sqrt(len(df['Sales_diff'].dropna())), linestyle='--', color='gray')
plt.axhline(y=1.96/np.sqrt(len(df['Sales_diff'].dropna())), linestyle='--', color='gray')
plt.title('Autocorrelation Function')
plt.subplot(122)
plt.plot(lag_pacf)
plt.axhline(y=0, linestyle='--', color='gray')
plt.axhline(y=-1.96/np.sqrt(len(df['Sales_diff'].dropna())), linestyle='--', color='gray')
plt.axhline(y=1.96/np.sqrt(len(df['Sales_diff'].dropna())), linestyle='--', color='gray')
plt.title('Partial Autocorrelation Function')
plt.tight_layout()
# 模型训练
model = ARIMA(df['Sales'], order=(1, 1, 1))
model_fit = model.fit()
# 模型预测
forecast = model_fit.forecast(steps=5)
print('Forecast for next 5 years:')
print(forecast)
结果分析
通过ADF检验发现原始数据非平稳,差分后数据达到平稳状态。根据ACF和PACF图选择合适的p和q值,最终建立ARIMA(1,1,1)模型。预测结果显示未来5年销售额将持续增长,具体数值如下:
年份 | 预测销售额(万元) |
|---|---|
2022 | 260.5 |
2023 | 276.3 |
2024 | 292.4 |
2025 | 308.8 |
2026 | 325.5 |
04
总结与展望
通过本文的学习,读者应该掌握了时间序列分析的基本概念和ARIMA模型的具体应用。ARIMA模型虽然强大,但也有其局限性:
- 要求数据具有稳定性,或通过差分达到稳定
- 本质上只能捕捉线性关系
- 参数选择较为复杂
未来可以进一步学习:
- 季节性ARIMA(SARIMA)模型,用于处理季节性数据
- 深度学习方法在时间序列预测中的应用
- 组合模型,将多种方法结合以提高预测精度
希望本文能为读者在时间序列分析领域提供一个良好的开端,激发进一步学习的兴趣。
热门推荐
房屋租赁纠纷的解决方法及拍卖房屋租赁协议处理指南
APP开发工具选择指南:从入门到进阶的全方位推荐
强者思维:改变往往需要时间和耐心,但通过持续的努力和反思,你可以实现真正的突破
电机性能测试有哪些步骤?
特需门诊商业保险是什么?个人商业保险哪种最划算?
哪些食物有助于呼吸系统健康?
高血压的心脏彩超表现
虚不受补食疗方
普朗克黑体辐射(普朗克黑体辐射公式的推导)
河北5A景区合集,收好这份河北5A景区名单大全,即刻出发
板块轮动规律:影响因素与投资策略
自来水为什么发黄(自来水发黄如何应对)
租赁合同怎么拟写才有效
小孩学美术的几个阶段有哪些?如何划分?
肺结节的症状与处理:大小、形状、增长速度是关键
树莓派NAS自制攻略:用低成本打造高效家庭存储
专利战频发,中国企业需提前构建知识产权“护城河”
个人如何做量化软件开发
含脂肪丰富的食物有哪些?一文详解脂肪摄入指南
民法典居间合同签订的要素
GPON、XG-PON和XGS-PON的区别
衣服褪色怎么办?一文详解预防与处理方法
被称为地球的"第三极",帕米尔高原上的冰川,隐藏了多少秘密?
充电习惯对新能源整车能量消耗量、安全、电池寿命的影响到底有多大?
医生推荐:冷敷消除眼袋的正确方法与注意事项
小孩去香港旅游需要什么证件?未成年出入香港有限制吗?
本想平庸的意大利二等战列舰,但实际性能仍然非常优秀
本想平庸的意大利二等战列舰,但实际性能仍然非常优秀
重装系统数据会丢失吗?重装系统数据丢了怎么找回来
IntelliJ IDEA 常用快捷键详解与自定义修改方法