深入详解 二次移动平均法python
Posted 梦想橡皮擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入详解 二次移动平均法python相关的知识,希望对你有一定的参考价值。
什么是 二次移动平均法
二次移动平均法,也称为指数加权移动平均法,是一种用于平滑时间序列数据的算法。
文章目录
二次移动平均法逻辑
二次移动平均法是一种重要的数学工具,用于处理时间序列数据,它的主要目的是通过平滑序列中的噪音数据来更好地捕捉趋势。
具体实现:
- 计算第一个二次移动平均数,这通常是简单移动平均数(SMA)。
- 使用以下公式计算每个时间步的二次移动平均数:
E M A t = α × y t + ( 1 − α ) × E M A t − 1 EMA_t = \\alpha \\times y_t + (1-\\alpha)\\times EMA_t-1 EMAt=α×yt+(1−α)×EMAt−1
其中 E M A t EMA_t EMAt 表示时间步 t 的二次移动平均数, y t y_t yt 表示时间步 t 的数据点, α \\alpha α 表示权重系数,它一般设置为 2 n + 1 \\frac2n + 1 n+12,其中 n n n 表示窗口长度。
Python代码实现
下面是一个用 python 实现的二次移动平均法的代码示例:
def ema(data, window):
alpha = 2 / (window + 1)
ema = [data[0]]
for i in range(1, len(data)):
ema.append(alpha * data[i] + (1 - alpha) * ema[-1])
return ema
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
window = 5
ema_data = ema(data, window)
print(ema_data)
运行代码,得到如下输出。
第二种实现二次移动平均法的方式
另一种写法是直接使用 NumPy 的函数 numpy.convolve()
实现二次移动平均法。具体如下:
import numpy as np
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
window = 5
def double_moving_average(data, window=2):
return np.convolve(data, np.ones(window) / window, 'valid')
ema_data = double_moving_average(data, window)
print(ema_data)
这里的 data
变量表示输入的数据, window
变量表示窗口大小,这个代码实现了二次移动平均法的功能,可以得到移动平均值数组。
第三种卷积实现二次移动平均法
第三种方法是使用卷积,在 Python 中可以使用 Numpy 实现:
import numpy as np
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
window = 5
def moving_average_2(data, window=3):
cumsum_vec = np.cumsum(np.insert(data, 0, 0))
ma = (cumsum_vec[window:] - cumsum_vec[:-window]) / window
return np.concatenate((np.zeros(window - 1), ma))
ema_data = moving_average_2(data, window)
print(ema_data)
这种方法将二次移动平均法转化为卷积的形式,使用 cumsum()
函数计算前缀和,然后通过切片的方式计算窗口内的平均值。
二次移动平均法的应用场景
- 数据平滑:可以通过二次移动平均法对时间序列数据进行平滑处理,去除其中的噪音和瞬时干扰。
- 趋势分析:可以通过对数据进行二次移动平均法处理,得到数据的趋势信息,用于趋势分析和预测。
- 市场分析:在股市分析中,二次移动平均法常被用于分析股票价格的趋势,判断买卖信号。
- 去除季节性:二次移动平均法可以用于去除季节性对数据的影响。
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 859 篇原创博客
👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇
以上是关于深入详解 二次移动平均法python的主要内容,如果未能解决你的问题,请参考以下文章
一文速学-时间序列分析算法之一次移动平均法和二次移动平均法详解+实例代码
(转)滑动平均法滑动平均模型算法(Moving average,MA)