时间序列分解|学习笔记

本文涉及的产品
图片翻译,图片翻译 100张
文档翻译,文档翻译 1千页
语种识别,语种识别 100万字符
简介: 快速学习时间序列分解

开发者学堂课程【场景实践 - 基于阿里云PAI机器学习平台使用时间序列分解模型预测商品销量时间序列分解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/523/detail/7068


时间序列分解


内容介绍:

一、时间序列分解模型

二、乘法模型分解步骤

三、乘法模型预测


一、时间序列分解模型

时间序列Xt可以表示为五个因素的函数 Xt=f(U,Tt,St,Ct,R),这些参数按照顺序分别代表了序列的平均值、长期趋势、季节变动、循环变动和不规则变动。

其中U代表了序列的平均值时间序列分解的方法有很多,较常用的模型有加法模型和乘法模型,这两个模型分别适用于不同情形

1.加法模型

Xt=U+Tt+St+Ct+Rt 适用于四个因素对现象的发展的影响是相互独立的,每个元素都以绝对量表示。

2.乘法模型

Xt=U×Tt×St×Ct×Rt 适用于四个因素对现象的发展的影响是相互作用的,以序列的平均值作为绝对量,其余成分都以比例表示。

大多数的情况下都采用乘法模型,预测更准确。


二、乘法模型分解步骤

Xt=U×Tt×St×Ct×Rt

1.步骤1-移除平均值 U

第一步计算序列的平均值 U,然后将序列中所有个体的值除以 U 来移平均值:Yt=-XU/t

创建了一个值在1左右的新序列Y,如果序列的平均值U的绝对值<0.0000001一小数点后面6个零,就不用进行除法运算。

2.步骤2 -计算移动平均值M

这一步计算Yt的L步移动平均,其中L是季节变动S的周期长度(例如季度序列 L=4,具体到月份,季节变动的周期L=12 )根据业务需要的不同,季节变动的周期长度L是可以变化的。举例来说,如果数据是聚合到季度的序列,那么数据的季节变动周期为4(L=4)。

如果数据是聚合到月度的序列,那么数据的变动周期为12(L=12)。

根据业务需要的聚合程度不同,移动平均的L步长是变化的。一般来说,颗粒的粒度比较细的时候,比如把每天的数据聚合到周,那么L=52,这个时候就可能出现比较多的缺失值,会造成预测的一些误差。

好处就是预测的密度比较细,可以一周一周进行预测。

相反如果聚合的力度高一点,比如到月的时候(L=12),缺失值出现的概率会小很多,但是预测力度也比较粗了,只能一个月一个月的预测,有时候每四周预测一次也就是28天,那么这个时候L应该等于52/4,即13,而不是按月聚合的12。

由于移动平均算的是一年的平均值 ,季节性因素被移除:

Mt=1Li=1LYt−i

41Y4+Y3+Y2+Y1

3.步骤3 -计算长期趋势T

这一步根据移动平均 Mt ,计算该序列的长期趋势 Tt 对移动平均Mt进行线性回归: Mt = a+b×t + et (其中a是截距, b是斜率, et 是线性拟合的残差)

上述等式的线性部分用于定义长期趋势: Tt = a+b×t,这一步得到长期趋势的系数a和b,作为预测时T的系数。

4.步骤4-计算循环变动C

循环变动等于移动平均M.除以长期趋势 Ct=Mt/Tt

之前说过预测的时候循环变动 C 的值可以根据商业的知识手动输入,可以输入一个固定的值,在实验中计算C序列之后,会使它的平均值作为预测使用 C 值。 

5.步骤5-计算季节变动

季节变动K等于Y序列除以移动平均 Mt:Kt=Yt/Mt(注意,K序列是由季节变动和随机变动组成的)

为了计算季节变动S,取时间t所属“季节”的K序列平均值:St=Kt例:共3年数据且L=12,t=1的时候,S1是第一年1月份季节变动等于将所有年份月份的K值加起来取算术平均值。S2K。t1是第一年2月份季节变动。等于将所有年份2月份的K值加起来取算术平均值。

同理类推,S13的值应该与 S1的值相等,因为算法是一样的。季节变动的定义就是每一年的相同月份的值应该是相同的。S1=(K1+K13+K25)/3,S2=(K2+K14+K26)/3....S13=(K1+K13+K25)/3,S14=(K2+K14+K26)/3,...

6.步骤6-计算不规则变动将K序列除以S序列:Rt=KStt,预测的时候假设R值是1。


三、乘法模型预测

1、生成预测

一旦时间序列分解完成,就可以很容易地生成预测:Xt=U×Tt×St×

Ct×Rt 长期趋势 Tt

K=a+bxt 季节变动St=循环变动是手动输入的

t(St=t−L),相同季节的S值相等。

Ct(或取训练集Ct的平均值)

不规则变动Rt则设为S1

相关文章
|
3月前
R语言分布滞后线性和非线性模型DLM和DLNM建模应用| 系列文章
R语言分布滞后线性和非线性模型DLM和DLNM建模应用| 系列文章
|
3月前
【时间序列分析】——时序分解定理详解
【时间序列分析】——时序分解定理详解
|
2月前
|
机器学习/深度学习 算法 vr&ar
Theta方法:一种时间序列分解与预测的简化方法
Theta方法整合了两个基本概念:分解时间序列和利用基本预测技术来估计未来的价值。
32 0
|
3月前
|
数据可视化 语音技术
时间序列分析实战(三):时序因素分解法
时间序列分析实战(三):时序因素分解法
|
3月前
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
|
3月前
|
运维 算法 C++
R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
|
3月前
|
数据可视化
R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
|
3月前
|
运维 算法 C++
R语言时间序列分解和异常检测方法应用案例
R语言时间序列分解和异常检测方法应用案例
|
3月前
|
运维 算法 C++
时间序列分解和异常检测方法应用案例
时间序列分解和异常检测方法应用案例
|
3月前
|
存储
R语言分布滞后线性和非线性模型(DLMs和DLNMs)分析时间序列数据
R语言分布滞后线性和非线性模型(DLMs和DLNMs)分析时间序列数据