预测模型
时间序列的一个简单的趋势模型如下:
Yt 是要研究的时间序列,belta 0 和belta 1分别是截距和趋势系数,epsilon t 代表线性趋势不能解释的和时间序列相关的随机偏差。
如果对偏差有合理的假设,可以预测belta 0 和belta 1, 写成b0 和b1, 趋势模型写成如下预测函数:
Ft 是对时间t 的预测值。
这个模型有两个问题:
缺少对参数选择的基础。无法评估预测中的不确定性。
为了确定参数需要了解时间序列的历史值,简单的对过去值取平均数是很蠢的。所以。。。
移动平均
计算过去k个值的平均值作为 t 时间的观测值。
经过这种处理时间序列变这样
然而两个缺点:
较久的历史值和最近的历史值的预测将来的影响一样。如果用较多的时期,就必须保留以往所有的历史数据,对计算机存储能力来说是个负担。
因此。。。
简单指数平滑(Simple exponential smoothing)
对最近的观测和以往平均值的对比取一个权重。递推公式:
递推到第一个观测值:
观测值越早,权重越小:
平方差:
R 代码:
SES(ts, alpha = 0.5, s0 = NULL)
SES 是AnalyzeTS v2.2byHong Viet Minh
ts:时间序列
alpha:平滑系数
s0: 对s0的估计
线性指数平滑(Linear exponential smoothing / Holts'method)
如果一个时间序列在任何时间不是上升就是下降,那么预测模型为:
其中,趋势:
因为:
有:
和简单指数平滑对比:
有阻尼趋势的指数平滑
许多产品都有生命周期,意味着趋势趋向于0。对于这种情况,我们假设时间序列会趋于水平。引入阻尼系数,模型如下:
theta 是0 -1 之间的阻尼系数。 所以h 步以后,趋势T会趋于水平。
季节序列
如果一个时间序列呈现一个固定和已知的时长的周期性模式,那么称它具有季节性(seasonal)因素。
如果一个时间序列呈现一定规律的波动,这些波动有周期性的变量和不可知的时长,那么称为具有周期性(cyclical)因素。