一文帶你深入了解Python中的二次移動(dòng)平均法
二次移動(dòng)平均法邏輯
二次移動(dòng)平均法是一種重要的數(shù)學(xué)工具,用于處理時(shí)間序列數(shù)據(jù),它的主要目的是通過(guò)平滑序列中的噪音數(shù)據(jù)來(lái)更好地捕捉趨勢(shì)。
具體實(shí)現(xiàn):
- 計(jì)算第一個(gè)二次移動(dòng)平均數(shù),這通常是簡(jiǎn)單移動(dòng)平均數(shù)(SMA)。
- 使用以下公式計(jì)算每個(gè)時(shí)間步的二次移動(dòng)平均數(shù):
EMAt?=α×yt?+(1−α)×EMAt−1?
其中EMAt表示時(shí)間步t的二次移動(dòng)平均數(shù),yt表示時(shí)間步t的數(shù)據(jù)點(diǎn),α表示權(quán)重系數(shù),它一般設(shè)置為2/(n+1),其中n表示窗口長(zhǎng)度。
Python代碼實(shí)現(xiàn)
下面是一個(gè)用 python 實(shí)現(xiàn)的二次移動(dòng)平均法的代碼示例:
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)
運(yùn)行代碼,得到如下輸出。

第二種實(shí)現(xiàn)二次移動(dòng)平均法的方式
另一種寫法是直接使用 NumPy 的函數(shù) numpy.convolve() 實(shí)現(xiàn)二次移動(dòng)平均法。具體如下:
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 變量表示輸入的數(shù)據(jù), window 變量表示窗口大小,這個(gè)代碼實(shí)現(xiàn)了二次移動(dòng)平均法的功能,可以得到移動(dòng)平均值數(shù)組。
第三種卷積實(shí)現(xiàn)二次移動(dòng)平均法
第三種方法是使用卷積,在 Python 中可以使用 Numpy 實(shí)現(xiàn):
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)
這種方法將二次移動(dòng)平均法轉(zhuǎn)化為卷積的形式,使用 cumsum() 函數(shù)計(jì)算前綴和,然后通過(guò)切片的方式計(jì)算窗口內(nèi)的平均值。
二次移動(dòng)平均法的應(yīng)用場(chǎng)景
數(shù)據(jù)平滑:可以通過(guò)二次移動(dòng)平均法對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行平滑處理,去除其中的噪音和瞬時(shí)干擾。
趨勢(shì)分析:可以通過(guò)對(duì)數(shù)據(jù)進(jìn)行二次移動(dòng)平均法處理,得到數(shù)據(jù)的趨勢(shì)信息,用于趨勢(shì)分析和預(yù)測(cè)。
市場(chǎng)分析:在股市分析中,二次移動(dòng)平均法常被用于分析股票價(jià)格的趨勢(shì),判斷買賣信號(hào)。
去除季節(jié)性:二次移動(dòng)平均法可以用于去除季節(jié)性對(duì)數(shù)據(jù)的影響。
到此這篇關(guān)于一文帶你深入了解Python中的二次移動(dòng)平均法的文章就介紹到這了,更多相關(guān)Python二次移動(dòng)平均法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Anaconda中導(dǎo)出環(huán)境的實(shí)現(xiàn)步驟
在 Anaconda 中導(dǎo)出環(huán)境是一種常用的做法,可以將當(dāng)前的環(huán)境配置導(dǎo)出到一個(gè)文件中,本文主要介紹了Anaconda中導(dǎo)出環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值2024-05-05
淺談python函數(shù)調(diào)用返回兩個(gè)或多個(gè)變量的方法
今天小編就為大家分享一篇淺談python函數(shù)調(diào)用返回兩個(gè)或多個(gè)變量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)
這篇文章主要介紹了python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存
這篇文章主要介紹了Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Ubuntu 下 vim 搭建python 環(huán)境 配置
這篇文章主要介紹了Ubuntu 下 vim 搭建python環(huán)境配置,需要的朋友可以參考下2017-06-06

