指数移动平均

假设变量\(x_t\)随时间\(t\)变化,按照以下规则定义其指数移动平均值:
image
假设\(α\)(衰减因子)=0.7
\(t=1\)时,\(x_1=5\),则
\(ema^{(1)}=x_1=5\)
\(t=2\)时,\(x_2=10\),则
\(ema^{(2)}=α*ema^{(1)}+(1-α)*x_2=0.7*5+(1-0.7)*10=6.5\)
\(t=3\)时,\(x_3=15\),则
\(ema^{(3)}=α*ema^{(2)}+(1-α)*x_3=0.7*6.5+(1-0.7)*15=9.05\)
\(t=4\)时,\(x_4=20\),则
\(ema^{(4)}=α*ema^{(3)}+(1-α)*x_4=0.7*9.05+(1-0.7)*20=12.335\)
经过四次运算后,最后的移动平均值为12.335
对应代码为:

import numpy as np
import matplotlib.pyplot as plt
t = [1,2,3,4]
x = [5,10,15,20]
res = [x[0]]
for i in x[1:]:
    a = 0.7*res[-1]+0.3*i
    res.append(a)
plt.plot(t,x,"r")
plt.plot(t,res,"b")

image

换一个复杂一点的图像观测指数移动平均,可以发现,它在会保留原来的走势,并且适应新的走势

import numpy as np
import random
import matplotlib.pyplot as plt
random.seed(20190725)
t = np.linspace(-5,5,100)
x = [-i**2+random.random()*15 for i in t]
res = [x[0]]
for i in x[1:]:
    a = 0.7*res[-1]+0.3*i
    res.append(a)
plt.plot(t,x,"r")
plt.plot(t,res,"b")

image

posted on 2021-04-13 21:29  朴素贝叶斯  阅读(605)  评论(0编辑  收藏  举报

导航