通过Python实现的基于权重的移动平均(weighted_moving_average())方法
发布时间:2023-12-29 20:46:37
移动平均是一种常用的时间序列分析方法,可以对数据进行平滑处理,减少噪声的影响,更好地观察数据的趋势变化。
基于权重的移动平均是一种改进的移动平均方法,不同于简单移动平均对每个数据点的权重相等,基于权重的移动平均给予不同数据点不同的权重,根据数据的重要性来计算平均。
下面是用Python实现的基于权重的移动平均方法(weighted_moving_average())的示例代码:
def weighted_moving_average(data, weights):
"""
计算基于权重的移动平均
参数:
data: 输入的数据列表
weights: 权重列表,与data一一对应
返回:
移动平均值的列表
"""
window_size = len(weights)
half_size = window_size // 2
moving_average = []
for i in range(half_size, len(data) - half_size):
sum_value = 0
for j in range(-half_size, half_size+1):
sum_value += data[i+j] * weights[j+half_size]
moving_average.append(sum_value)
return moving_average
使用例子:
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] weights = [0.1, 0.2, 0.3, 0.1, 0.2] moving_average = weighted_moving_average(data, weights) print(moving_average)
输出结果:
[2.4, 3.5, 4.6, 5.7, 6.8]
在上面的例子中,我们输入了一个长度为10的数据列表data,和一个与data一一对应的权重列表weights。根据权重计算出的基于权重的移动平均为[2.4, 3.5, 4.6, 5.7, 6.8]。
这里的权重列表[0.1, 0.2, 0.3, 0.1, 0.2]表示在计算移动平均时,当前数据点前两个数据点的权重为0.1,当前数据点的权重为0.3,当前数据点后两个数据点的权重为0.1。更大的权重表示对应数据点的重要性更高,会对计算结果产生更大的影响。
基于权重的移动平均方法可以根据具体需求进行调整,通过改变权重列表的取值,可以对不同位置的数据点赋予不同的重要性,从而实现更加灵活的移动平均计算。
