由來
指數加權平均(Exponential Moving Average,EMA)在初始時可能會受到偏差的影響,特別是在數據量較小時,EMA的值可能會與實際數據有較大的偏差。為了修正這種偏差,可以使用偏差修正方法,通常會將EMA的初始值初始化為第一個數據點,然后逐步修正。
公式
偏差修正的EMA計算公式如下:
EMA(t) = { x(t), if t = 0α * x(t) + (1 - α) * EMA(t-1), if t > 0 }
其中,t 表示當前時刻,x(t) 表示當前時刻的數據點,α 是平滑因子。在這個偏差修正版本的EMA中,當t=0時,直接將EMA初始化為第一個數據點。
代碼實現
import numpy as np
import matplotlib.pyplot as plt# 生成隨機數據
np.random.seed(0)
data = np.random.randn(100)# 指數加權平均的平滑因子
alpha = 0.2# 計算帶有偏差修正的指數加權平均
ema_bias_corrected = np.zeros_like(data)
ema_bias_corrected[0] = data[0]
for t in range(1, len(data)):ema_bias_corrected[t] = alpha * data[t] + (1 - alpha) * ema_bias_corrected[t-1]# 繪制原始數據和帶有偏差修正的指數加權平均
plt.plot(data, label='Original Data')
plt.plot(ema_bias_corrected, label=f'EMA with Bias Correction (alpha={alpha})', color='red')
plt.legend()
plt.xlabel('Time')
plt.ylabel('Value')
plt.title('Exponential Moving Average with Bias Correction')
plt.show()