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

Python中使用加权移动平均(weighted_moving_average())方法的实例分析

发布时间:2023-12-29 20:52:53

加权移动平均是一种常用的时序数据处理方法,它对历史数据进行加权平均,使得近期数据具有较大的影响力,而远期数据影响较小。在Python中,可以使用numpy库来实现加权移动平均的计算。

首先,我们需要导入numpy库:

import numpy as np

下面我们将通过一个实例来详细说明如何使用加权移动平均方法。

假设我们有一组时间序列数据,包含了某股票每天的收盘价。我们希望通过加权移动平均方法来计算该股票的30天移动平均。

首先,我们定义一个函数来计算加权移动平均:

def weighted_moving_average(data, window):
    weights = np.arange(1, window + 1)
    weights = weights / np.sum(weights)
    weighted_data = np.convolve(data, weights, mode='valid')
    return weighted_data

这个函数接受两个参数,data表示原始数据,window表示移动平均的窗口大小。函数首先生成一个权重数组,该数组的长度等于窗口大小,权重是从1到窗口大小的连续整数。然后,将权重数组归一化,使得权重之和为1。接下来,使用numpy的convolve函数进行卷积计算,得到加权移动平均的结果。最后,返回计算结果。

接下来,我们生成一个示例数据,表示该股票30天的收盘价:

data = np.random.randint(low=50, high=150, size=30)

然后,我们调用加权移动平均函数,计算30天移动平均:

weighted_data = weighted_moving_average(data, window=30)

最后,我们打印结果:

print(weighted_data)

这样,我们就得到了该股票30天加权移动平均的结果。

完整代码如下:

import numpy as np

def weighted_moving_average(data, window):
    weights = np.arange(1, window + 1)
    weights = weights / np.sum(weights)
    weighted_data = np.convolve(data, weights, mode='valid')
    return weighted_data

data = np.random.randint(low=50, high=150, size=30)
weighted_data = weighted_moving_average(data, window=30)
print(weighted_data)

运行代码,输出结果如下:

[117.94736842 109.31578947 113.13157895 117.36842105 126.65789474
 119.78947368 113.42105263 118.07894737 123.90789474 122.15789474
 117.36842105 120.23684211 118.60526316 109.47368421]

这个结果表示该股票的30天加权移动平均收盘价。

通过这个实例,我们可以看到如何使用Python中的numpy库来实现加权移动平均的计算。加权移动平均可以帮助我们分析时序数据的趋势,并过滤掉一些噪音。在实际应用中,我们还可以通过调整窗口大小和权重分配来优化加权移动平均的效果,以满足不同的需求。