机器学习——时间序列模型

article/2025/10/5 21:51:55

文章目录

  • 1. 基本概念
    • 1.1 自相关函数ACF(autocorrelation function)
    • 1.2 偏自相关函数PACF(partial autocorrelation function)
  • 2. 常见模型
    • 2.1 自回归模型(AR)
    • 2.2 移动平均模型(MA)
    • 2.3 自回归移动平均模型(ARMA)
    • 2.4 差分自回归移动平均模型(ARIMA)
  • 4. 建模步骤
    • 4.1 平稳性检验
      • 4.1.1 时序图、自相关图、偏自相关图
      • 4.1.2 自相关、偏自相关图
      • 4.1.3 单位根检验
      • 4.1.4 差分运算
    • 4.2 白噪声检验
    • 4.3 模型选择(p,q,d)
      • 4.3.1 AIC与BIC
      • 4.3.2 模型稳定性检验
    • 4.4 模型预测

模型名称描述
平滑法削弱短期随机波动对序列的影响,序列插值分布均匀
趋势拟合法把时间作为自变量,相应序列观察值作为因变量,简历回归模型
组合模型法受长期趋势(T)、季节变动(S)、周期变动(C)和不规则变动(ε)四个因素影响
组合模型(1)加法模型: T + S + C + ϵ T+S+C+\epsilon T+S+C+ϵ (2)乘法模型: T S C ϵ T SC\epsilon TSCϵ

常见时间序列模型

模型名称描述
AR模型考虑历史数据的影响,以过往数据为自变量, X t X_t Xt为因变量建立线性回归模型。 X t = ϕ 0 + ϕ 1 x t − 1 + ⋯ + ϕ p x t − p X_t=\phi_0+\phi_1 x_{t-1}+\cdots+\phi_p x_{t-p} Xt=ϕ0+ϕ1xt1++ϕpxtp
MA模型忽略历史数据影响,建立于前q期随机扰动 ϵ t − 1 , ⋯ , ϵ t − q \epsilon_{t-1},\cdots,\epsilon_{t-q} ϵt1,,ϵtq的线性回归模型 X t = μ + ϵ t − θ 1 ϵ t − 1 − ⋯ − θ q ϵ t − q X_t=\mu+\epsilon_t-\theta_1 \epsilon_{t-1}-\cdots-\theta_q \epsilon_{t-q} Xt=μ+ϵtθ1ϵt1θqϵtq
ARMA模型结合考虑AR、MA模型,综合考虑它们的影响
ARIMA模型针对非平稳序列。将非平稳转化为平稳后拟合操作

1. 基本概念

白噪声序列: 数据随机分布,没有规律。
平稳非白噪声序列
非平稳序列: 可以利用差分法转换为平稳非白噪声序列
截尾: 拖尾指序列以指数率单调递减或震荡衰减
拖尾: 截尾指序列从某个时点变得非常小
在这里插入图片描述

1.1 自相关函数ACF(autocorrelation function)

  • 自相关函数反映了同一序列在不同时序的取值之间的相关性。
  • 公式:
    A C F ( k ) = ρ k = C o v ( y t , y t − k ) V a r ( y t ) ACF(k) = \rho_k=\frac{Cov(y_t,y_{t-k})}{Var(y_t)} ACF(k)=ρk=Var(yt)Cov(yt,ytk)
    其中, ρ k ∈ [ − 1 , 1 ] \rho_k \in[-1,1] ρk[1,1]

1.2 偏自相关函数PACF(partial autocorrelation function)

  • 剔除了中间k-1个随机变量 x ( t − 1 ) , x ( t − 2 ) , ⋯ , x ( t − k + 1 ) x(t-1),x(t-2),\cdots,x(t-k+1) x(t1),x(t2),,x(tk+1)的干扰后 x ( t − k ) x(t-k) x(tk) x ( t ) x(t) x(t)影响的相关程度
  • PACF是严格两个变量之间的相关性。

2. 常见模型

2.1 自回归模型(AR)

定义:

  • 描述当前值与历史值之间的关系。利用历史数据对自身进行预测

  • P阶自回归过程,即当前值与 t − p , t − p + 1 , ⋯ , t − 1 t-p,t-p+1,\cdots,t-1 tp,tp+1,,t1相关(P)。
    y t = μ + ∑ i = 1 p γ i y t − i + ϵ t y_t=\mu+\sum_{i=1}^{p} \gamma_i y_{t-i} + \epsilon_t yt=μ+i=1pγiyti+ϵt
    其中, y t y_t yt是当前值, μ \mu μ是常数项,P是阶数, γ i \gamma_i γi是自相关系数, ϵ \epsilon ϵ是误差。

  • 参数:P(自回归阶数)

注意

  • 必须具有平稳性
  • 必须具有自相关性,自相关系数需要大于等于0.5.

模型识别
在这里插入图片描述

2.2 移动平均模型(MA)

定义

  • 移动平均模型是自回归模型中误差项的累加

  • q阶移动模型公式(Q):
    y t = μ + ϵ t + ∑ i = 1 q θ i ϵ t − i y_t = \mu + \epsilon_t + \sum_{i=1}^{q} \theta_i \epsilon_{t-i} yt=μ+ϵt+i=1qθiϵti

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

  • 参数:Q(移动平均阶数)

模型识别
在这里插入图片描述

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

定义

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

  • 公式定义为(P,Q):
    y t = μ + ∑ i = 1 p γ i y t − i + ϵ t + ∑ i = 1 q θ i ϵ t − i y_t = \mu + \sum_{i=1}^{p} \gamma_i y_{t-i} + \epsilon_t + \sum_{i=1}^{q} \theta_i \epsilon_{t-i} yt=μ+i=1pγiyti+ϵt+i=1qθiϵti

  • 参数:P(自回归阶数),Q(移动平均阶数)

模型识别
在这里插入图片描述

2.4 差分自回归移动平均模型(ARIMA)

对于ARIMA模型,我们需要指定三个参数(P, D, Q),分别表示P阶自回归模型,D阶差分和Q阶移动平均模型。
定义:

  • 参数:(P, D, Q),分别表示P阶自回归模型,D阶差分和Q阶移动平均模型。
  • 原理:将非平稳时间序列转换为平稳时间序列,然后将因变量对其滞后值和其随机误差的滞后值进行回归建模。

4. 建模步骤

4.1 平稳性检验

4.1.1 时序图、自相关图、偏自相关图

def tsplot(y,lags=None,figsize=(12,7),style='bmh'):'''Plot time series, its ACF and PACF, calculate Dickey-Fuller testy:timeserieslags:how many lags to include in ACF,PACF calculation'''
#     if not isinstance(y, pd.Series):
#         y = pd.Series(y)with plt.style.context(style):fig = plt.figure(figsize=figsize)layout=(2,2)ts_ax = plt.subplot2grid(layout, (0,0), colspan=2)acf_ax = plt.subplot2grid(layout, (1,0))pacf_ax = plt.subplot2grid(layout, (1,1))y.plot(ax=ts_ax)p_value = sm.tsa.stattools.adfuller(y)[1]ts_ax.set_title('Time Series Analysis Plots\n Dickey-Fuller: p={0:.5f}'.format(p_value))smt.graphics.plot_acf(y,lags=lags, ax=acf_ax)smt.graphics.plot_pacf(y,lags=lags, ax=pacf_ax)plt.tight_layout()    
tsplot(data)

在这里插入图片描述

4.1.2 自相关、偏自相关图

根据自相关图,判断“拖尾”、“截尾”。

from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data).show()

在这里插入图片描述

from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(data).show()

在这里插入图片描述

4.1.3 单位根检验

采用单位根法检验,当单位根大于等于0.05时,表示数据为非平稳序列。

from statsmodels.tsa.stattools import adfuller as ADF
print('原始序列数据的ADF检测结果为:')
print(ADF(data['销量']))
# 返回值依次为: adf, pvalue(单位根,>=0.05就是非平稳序列)

原始序列数据的ADF检测结果为:
(1.813771015094526, 0.9983759421514264, 10, 26, {‘1%’: -3.7112123008648155, ‘5%’: -2.981246804733728, ‘10%’: -2.6300945562130176}, 299.4698986602418)

4.1.4 差分运算

若序列为非平稳序列,则需要转换为平稳序列计算
(1)差分运算

  • P阶差分
    相距一期的两个序列之间的减法运算称为1阶差分运算
    将1阶差分运算的结果再做一次差分运算则称为2阶差分运算
  • K步差分
    相距k期的两个序列值之间的减法运算称为k步差分运算

1. 差分运算

D_data = data.diff().dropna()    # 一阶一步差分,并去除NA
D_data.columns = ['sale diff']

2. 差分结果检验
对差分结果进行相同的平稳性检验,当单位根值小于等于0.05时,表示已经转换为平稳序列。

# 自相关图
plot_acf(D_data).show()
# 偏自相关图
plot_pacf(D_data).show()
# 单位根值
print('原始序列数据进行一次一步差分的ADF检测结果为:')
print(ADF(D_data['sale diff']))

在这里插入图片描述
在这里插入图片描述
原始序列数据进行一次一步差分的ADF检测结果为:
(-3.1560562366723537, 0.022673435440048798, 0, 35, {‘1%’: -3.6327426647230316, ‘5%’: -2.9485102040816327, ‘10%’: -2.6130173469387756}, 287.5909090780334)

4.2 白噪声检验

from statsmodels.stats.diagnostic import acorr_ljungbox
print('差分序列的白噪声检验结果:')
print(acorr_ljungbox(D_data,lags=1))   # 返回统计量与p值,当p <= 0.05 时,不是白噪音

差分序列的白噪声检验结果:
(array([11.30402222]), array([0.00077339]))

4.3 模型选择(p,q,d)

AR, MA模型
通过ACF, PACF截尾开始阶数确定p, q参数值。

  • AR§:PACF上截尾,ACF趋近于0
  • MA(Q):ACF上截尾,PACF趋近于0

采用BIC矩阵,找到最小值对应的p, q值。并以此为参数选择下述三个模型:
在这里插入图片描述

4.3.1 AIC与BIC

AIC:赤池信息准则(Akaike information Criterion)
A I C = 2 k − 2 ln ⁡ ( L ) AIC = 2k-2\ln(L) AIC=2k2ln(L)

BIC:贝叶斯信息准则(Bayesian information Criterion)
B I C = k ln ⁡ ( n ) − 2 ln ⁡ ( L ) BIC = k\ln(n)-2\ln(L) BIC=kln(n)2ln(L)

其中,k为模型参数个数,n为样本数量,L为似然函数。

  • AIC, BIC值越低越好
  • 希望通过AIC, BIC选择更简单的模型,P, Q越大,所需参数项数目越多。
from statsmodels.tsa.arima_model import ARIMA
# 定阶
# data['销量']=data['销量'].astype(float)
pmax = int(len(D_data)/10)
qmax = int(len(D_data)/10)bic_matrix = []          # BIC矩阵
for p in range(pmax+1):tmp = []for q in range(qmax+1):try:    # 部分报错,跳过tmp.append(ARIMA(data,(p,1,q)).fit().bic)except:tmp.append(None)bic_matrix.append(tmp)bic_matrix = pd.DataFrame(bic_matrix)
bic_matrix.index = ['AR{}'.format(i) for i in range(pmax+1)]
bic_matrix.columns = ['MA{}'.format(i) for i in range(qmax+1)]
bic_matrix = bic_matrix[bic_matrix.columns].astype(float)p,q = bic_matrix.stack().idxmin()
print('最小BIC对应的p,q值:%s, %s'%(p,q))

在这里插入图片描述
最小BIC对应的p,q值:0, 1

import seaborn as sns
fig, ax = plt.subplots(figsize = (10,8))
ax = sns.heatmap(bic_matrix,mask = bic_matrix.isnull(),ax = ax,annot = True,fmt='.2f')
ax.set_title('BIC')

在这里插入图片描述

result = smt.arma_order_select_ic(data, ic=['aic', 'bic'], trend='nc', max_ar=4, max_ma=4)

{‘aic’: 0 1 2 3 4
0 NaN 668.212060 627.212365 590.498371 565.724666
1 472.121781 442.706792 444.414985 441.613728 442.640421
2 449.878586 443.006993 445.873538 443.364868 445.454087
3 452.992514 441.894814 443.613869 449.670033 442.185777
4 454.442210 443.477934 445.326246 445.745273 445.296295,
‘bic’: 0 1 2 3 4
0 NaN 671.433896 632.045119 596.942043 573.779256
1 475.343616 447.539546 450.858657 449.668317 452.305928
2 454.711339 449.450664 453.928128 453.030375 456.730513
3 459.436186 449.949403 453.279376 460.946459 455.073120
4 462.496800 453.143442 456.602672 458.632617 459.794557,
‘aic_min_order’: (1, 3),
‘bic_min_order’: (1, 1)}

由此可以选择MA模型,或者p =0, q =1的ARMA模型。可以将做完差分的数据带入平稳模型或者将原数据带入非平稳模型,并设置阶数。

4.3.2 模型稳定性检验

模型残差检验

  • ARIMA的残差是否是平均值为0且方差为常数的正太分布
  • QQ图:线性即正太分布

4.4 模型预测

model = ARIMA(data, (p,1,q)).fit()
print('模型报告为:\n', model.summary2())
print('未来5天的预测结果、准确误差及置信区间:\n',model.forecast(5))


http://chatgpt.dhexx.cn/article/mCEgOBaO.shtml

相关文章

时间序列模型算法 - ARIMA (一)

时间序列模型 1.时间序列模型概述1.1 时间序列的不同分类1.2 确定性时间序列分析方法概述1.3 三种时间序列模型 2.指标平滑ES2.1 一次指数平滑法 3.ACF与PACF4.AR5.MA6.ARMA7.ARIMA7.1 差分 8. ARIMA实践8.1 读取数据8.2 画图&#xff0c;观察数据是否非平稳8.3 差分&#xff0…

Office 2016 定制安装工具 v1.0 | Office 2016 自定义安装组件

软件简介 以往Office的安装包都采用的是MSI安装器&#xff0c;允许用户在安装时选择安装的组件&#xff0c;但是微软发布的Office2016安装包只提供了C2R&#xff08;ClickToRun&#xff09;方式&#xff0c;因此默认情况下用户无法选择安装组件&#xff0c;默认会安装所有。大…

office2016激活后还显示激活页面的解决办法

win10系统的office16通过Office激活工具激活之后&#xff0c;但是打开之后还会出现提示“让我们开始吧”的激活的页面&#xff0c; 1.office2016激活后还显示激活页面的解决办法 以后激活之后&#xff0c;每次试用Word或者Excel的时候&#xff0c;都会出现上图的激活提示页面…

运维 office2016自定义安装

office2016自定义安装组件简明教程 引言 以往Office的安装包都采用的是MSI安装器&#xff0c;允许用户在安装时选择安装的组件&#xff0c; 但是微软发布的Office 2016安装包只提供了C2R&#xff08;ClickToRun&#xff09;方式&#xff0c;因此默认情况下用户无法选择安装组…

安装Office的一些工具

1.可以下载各个版本的office&#xff1a;https://msdn.itellyou.cn/ 这个站点经常装系统的朋友应该都知道&#xff0c;一个老站了。 2.部署工具Office Tool Plus&#xff1a;https://otp.landian.vip/zh-cn/ 这个工具挺强大的&#xff0c;可以下载&#xff0c;可以部署&…

office2016 使用KMS破解无法连接服务器

最后发现是wmi服务异常。 修复完成后就正常 注册了

使用office tool plus清除office激活状态

如何清除office激活状态 大多数问题直接更改许可证就行&#xff0c;只有更改许可证无反应才需要使用&#xff0c;本文只是使软件变成未激活&#xff0c;但是激活仍需你已购买许可证 1下载office tool plus 2解压下载好的压缩包 3运行office too lplus.exe 4关闭所有office软件…

OFFICE激活报错0X80080005

点击工具箱->修复Office无法正常激活->修复&#xff0c;看到修复成功&#xff0c;再用Office Tool Plus激活就可以了

Office2016软件安装教程

关注公众号&#xff0c;免费获取资料 ​ 解压压缩文件 点击office 2013 专业增强版 64位文件夹(根据自身系统选择位数)&#xff0c;右击setup - >以管理员的身份运行 3.勾选接收&#xff0c;继续 4.选择自定义安装&#xff0c; 5.点击浏览&#xff0c;选在office 安装位置&…

office2016专业增强版

链接: https://pan.baidu.com/s/1XBEwwkdwhfSDVpIrBm0cFg 密码: nkv2 Microsoft office 2016官方版是针对Windows 10环境从零全新开发的通用应用(Universal App)。office2016正式版中的Word将会增加“Insights for Office”、“Read Mode”等新功能,powerpoint增加了“Prese…

office2016 + visio2016

在电脑已经安装好了office20016增强版后&#xff0c;如果安装visio2016软件来画图&#xff0c;会弹出了如下提示框&#xff1a; cn_office_professional_plus_2016_x86_x64_dvd_6969182.iso和cn_visio_professional_2016_x86_x64_dvd_6970929.iso虽然镜像名称不同&#xff0c;但…

安装office2016专业增强版

安利2个工具 1.Office 2013-2019 C2R Install Main Window Install Office 为安装&#xff0c;这里无需提前下好镜像文件或安装包但要保持有网的状态&#xff0c;如果显示有别的版本则使用强力卸载&#xff0c;卸载干净之后再安装。右边界面为自定义安装选项&#xff0c;选择版…

激活office2016遇:The Software Licensing Service reported that the product SKU is not found.

今天把办公电脑系统重装了&#xff0c;之前的已经用了3年多了&#xff0c;win10还是不错了&#xff01;&#xff01;哈哈 打开巨硬的下载地址&#xff1a;https://www.microsoft.com/zh-cn/software-download/windows10 上面的立即更新&#xff0c;可以更新当前win10系统到最…

windows安装office2016

注意 多个不同版本的Microsoft Office不能共存在一个Windows系统中。 电脑上安装的可能有买电脑时候安装的office&#xff0c;是正版的office。 有可能安装的就是office2016 如果安装office时候提示 需要先卸载电脑上其他版本的office&#xff0c; 微软卸载教程&工具 …

office 2016下载安装

office 2016 下载安装 好几天啦我的office2010一直提示我激活(可能是之前网上找的激活码不管用啦),对于强迫症的我来说实在受不了,所以就索性卸载2010. 下面是获取office2016以及安装步骤 1. 步骤1 &#xff1a; 百度:mdsn 点击第一个&#xff1a;在应用程序中获取你需要的…

office2016显示已经激活,但每次打开都跳出激活页面

问题描述&#xff1a; Office反复提示在新PC上激活 问题原因&#xff1a; 这种情况是因为在新PC上安装Office Standard或Office Professional Plus的批量许可版本时&#xff0c;在安装Office的批量许可版本之前未在新PC上卸载预装版本的Office。 解决方法&#xff1a; 要停止…

KMS工具激活office2016报错0x80080005的解决记录

参考博客记录 | KMS工具激活Office报错 Error Code: 0x80080005的方法&#xff0c;亲测有效。不过为了不出错我把要删除的注册表在删除前备份了一下。

Office2016 mac版本下载安装教程

Office2016 mac版本是一款稳定易用的办公软件&#xff0c;也是Office所有版本中最常用的版本微软不仅在自己的Windows系统中销售多个版本&#xff0c;还在竞争对手苹果公司销售相应的版本的Mac系统&#xff1b; 今天我就给有Macbook电脑的朋友介绍一下这个软件的安装和详细的激…

office激活工具KMS激活失败

office激活工具KMS激活失败 &#xff08;刚刚解决给自己记录一下&#xff0c;免得下次又忘了。&#xff09; 用KMS工具激活office&#xff0c;版本win10 显示报错&#xff1a;0x800706F7 激活失败是因为&#xff1a;office的KMS服务器和系统的KMS服务器不是同一台。序列号不同…

pandas 两列数据合并

背景 有两个字段&#xff0c;想要将其合并成为一个新的字段。比如当标签分散在不同字段时候&#xff0c;想要将各个标签融合一起。 实现 def test():import pdbimport pandas as pddf pd.DataFrame({year: [2019, 2020], quarter: [q1, q2]})df[year_quarter] df[year] &…