对时间序列的预测,用的最多的是指数平滑算法,算法不复杂。
首先理解一个基本公式:
指数平滑法的基本公式是: 式中,
- St--时间t的平滑值;
- yt--时间t的实际值;
- St ? 1--时间t-1的平滑值;
- a--平滑常数,其取值范围为[0,1];
说明:
1. 此公式用t-1时刻的平滑值和t时刻的hi实际值来计算t时刻的平滑值
2. a是系数,越接近1的话,远期数据对于计算结果影响越小,越接近0,则影响越大
用newlisp表达公式如下:
(define (cal-basic real-t1 smooth-t0 a) (add (mul a real-t1) (mul (sub 1 a) smooth-t0)))
说明:
t0 就是 t-1
t1 就是t
有了这个函数,我们就可以得到t2时刻的平滑值smooth-t2, 然后可以运用一次指数平滑预测公式进行预测:
smooth-t2=a * real-t1 + (1-a) * smooth-t1
newlisp代码为:
;; @return smooth value of t2 (define (cal-exponential1 real-t1 smooth-t0 a) (let (smooth-t1 (cal-basic real-t1 smooth-t0 a)) (print (add (mul a real-t1) (mul (sub 1 a) smooth-t1))) ))
时间: 2024-12-12 19:51:21