網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
二次移動(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ù)的影響。
原文鏈接:https://blog.csdn.net/hihell/article/details/128834635
相關(guān)推薦
- 2022-10-06 Python3中常見配置文件寫法匯總_python
- 2022-01-29 git 本地,遠(yuǎn)程做了不同的修改,同步方法
- 2022-04-28 C#網(wǎng)絡(luò)編程中常用特性介紹_C#教程
- 2022-07-10 Linux安裝及管理程序
- 2023-02-05 不同的編程語(yǔ)言輸出?“Hello?World”?代碼_其它綜合
- 2023-01-10 Vmware虛擬機(jī)設(shè)置主機(jī)端口映射方式_VMware
- 2022-12-31 Android入門之bindService的用法詳解_Android
- 2022-07-10 簡(jiǎn)單解析表格table標(biāo)簽的用法
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支