欢迎访问宙启技术站
智能推送

通过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。更大的权重表示对应数据点的重要性更高,会对计算结果产生更大的影响。

基于权重的移动平均方法可以根据具体需求进行调整,通过改变权重列表的取值,可以对不同位置的数据点赋予不同的重要性,从而实现更加灵活的移动平均计算。