时间序列分析 - 移动平均SMA, EMA(EWMA) 之python

article/2025/10/26 12:57:25

pandas:

pandas.DataFrame.rolling

pandas.DataFrame.ewm

pandas.DataFrame.mean

 

其中rolling可以指定窗口类型win_type,比如boxcar, boxcar, triang, blackman, hanning, bartlett

以hanning window为例,其窗口形状为钟型,曲线函数为:

w(n)=0.5(1-cos(\frac{2\pi n}{N-1}))

python代码:

import matplotlib.pyplot as plt
import statsmodels.api as smdata_loader = sm.datasets.sunspots.load_pandas()
df = data_loader.dataprint("df length is %d" %len(df))
print("inital df head:")
print(df.head(20))
print("SMA head:")
print(df["SUNACTIVITY"].rolling(window=10).mean().head(20))
print("EMA head:")
print(df["SUNACTIVITY"].ewm(span=10,min_periods=10).mean().head(20))year_range = df["YEAR"].values
plt.plot(year_range, df["SUNACTIVITY"].values, label="Original")
plt.plot(year_range, df["SUNACTIVITY"].rolling(window=10).mean(), label="SMA wave")
plt.plot(year_range, df["SUNACTIVITY"].rolling(window=10, win_type='hanning').mean(), label="SMA wave with Hanning window")
plt.plot(year_range, df["SUNACTIVITY"].ewm(span=10,min_periods=10).mean(), label="EMA wave")
plt.legend()
plt.show()

输出结果:

df length is 309
inital df head:YEAR  SUNACTIVITY
0   1700.0          5.0
1   1701.0         11.0
2   1702.0         16.0
3   1703.0         23.0
4   1704.0         36.0
5   1705.0         58.0
6   1706.0         29.0
7   1707.0         20.0
8   1708.0         10.0
9   1709.0          8.0
10  1710.0          3.0
11  1711.0          0.0
12  1712.0          0.0
13  1713.0          2.0
14  1714.0         11.0
15  1715.0         27.0
16  1716.0         47.0
17  1717.0         63.0
18  1718.0         60.0
19  1719.0         39.0
SMA head:
0      NaN
1      NaN
2      NaN
3      NaN
4      NaN
5      NaN
6      NaN
7      NaN
8      NaN
9     21.6
10    21.4
11    20.3
12    18.7
13    16.6
14    14.1
15    11.0
16    12.8
17    17.1
18    22.1
19    25.2
Name: SUNACTIVITY, dtype: float64
EMA head:
0           NaN
1           NaN
2           NaN
3           NaN
4           NaN
5           NaN
6           NaN
7           NaN
8           NaN
9     20.690866
10    17.076843
11    13.664921
12    10.982917
13     9.244962
14     9.580603
15    12.880856
16    19.296004
17    27.462651
18    33.512151
19    34.528305
Name: SUNACTIVITY, dtype: float64

参考:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ewm.html

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mean.html


http://chatgpt.dhexx.cn/article/G5jxE9DK.shtml

相关文章

线性和EWMA指数加权移动平均模型

线性和EWMA指数加权移动平均模型 模型应用场景: 对历史测量值赋权重,对现在t时刻的数值做估计。 1 移动平均 移动平均是是技术分析其中一种分析时间序列数据的工具移动平均可抚平短期波动,将长线趋势或周期显现出来。数学上,移…

(四十八)用EWMA和GARCH模型估计波动率和相关系数

ARCH、EWMA、GARCH介绍 案例 对2016年至2018年沪深300指数的涨跌幅数据建立ARCH(1)、EWMA和GARCH(1,1)三种波动率模型,并以30天前的数据为起点,逐一预测后一天的波动率。 ARCH(1) import numpy as np import pandas as pd dfpd.read_excel(C:/Users/De…

Matlab正态分布、历史模拟法、加权移动平均线 EWMA估计风险价值VaR和回测Backtest标准普尔指数 SP500时间序列

最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。 此示例说明如何使用三种方法估计风险价值 (VaR) 并执行 VaR 回测分析。这三种方法是: 正态分布 历史模拟 指数加权移动平均线 (EWMA) 视频:风险价值VaR原理与Py…

指数加权移动平均法(EWMA)

指数加权移动平均法(EWMA) https://www.cnblogs.com/jiangxinyang/p/9705198.html ** 本文内容来自于吴恩达深度学习公开课 1、概述 加权移动平均法,是对观察值分别给予不同的权数,按不同权数求得移动平均值,并以最…

R语言指数加权模型EWMA预测股市多变量波动率时间序列

最近我们被客户要求撰写关于波动率的研究报告,包括一些图形和统计输出。 从广义上讲,复杂的模型可以实现很高的预测准确性。 但是您的读者需要快速理解。他们没有意愿或时间去处理任何太乏味的事情,即使它可以稍微准确一些。简单性是商业中…

pandas 0.23.4 :'pd.ewma'没有这个模块,改用`Series.ewm` 或 降低版本到 pandas 0.21.0

问题: 在进行画出指数平滑移动平均线,遇到如下问题: # pd.ewma(comNone, spanone) # 指数平均线。com:数据;span:时间间隔AttributeError: module pandas has no attribute ewma解决办法: 方…

java 移动平均_EWMA之——EWMA指数加权移动平均模型的Java实现

具体代码如下: package com.lyz.storm.ewma; import java.io.Serializable; /** * 实现指数移动平均值计算 * 实现中使用了流式风格的builder API * author liuyazhuang * */ public class EWMA implements Serializable { private static final long serialVersion…

EWMA模型估计波动率

#tushare ID:474220 指数移动平均(Exponential Moving Average, EMA或EWMA)是以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。加权的程度以常数λ…

史上最通俗易懂的EWMA(指数加权移动平均)的参数解释以及程序代码

文章目录 一、EWMA(指数加权移动平均)是什么?二、详细的参数解释3、使用Python pandas库中的ewm()函数实现指数加权移动平均(EWMA)的示例代码总结 一、EWMA(指数加权移动平均)是什么&#xff1f…

用计算器来进行计算10的几次方的问题

一、首先找到计算器,然后就是找到科学,如图: 二、比如说进行10的2次方,先进行CE清除,然后就是选中10,然后就是选中如下:10^x,如图: 选择10的平方为100,如图: …

十次方项目登陆问题 token令牌解析,claims获取不到userid,求大神帮忙看下代码解决问题

十次方项目登陆问题 token令牌解析,claims获取不到userid 这个是拦截器: 判断角色是用户还是管理员,如果是用户就存入(“claims_user”,token);到controller控制层 此时clims为空,所以下面取值为权限不足

C语言求次方代码

使用pow库函数求2的10次方 #include <stdio.h> #include <math.h>int main() {double a pow(2, 10);printf("%lf",a);return 0; }使用C编译器运行程序 只需更换pow函数中的参数即可求其他结果 _Check_return_ double __cdecl pow(_In_ double _X, …

十次方:区块链需要服务器吗?

随着区块链被正名&#xff0c;上升国家战略后&#xff0c;区块链“忽如一夜春风来&#xff0c;瞬间火遍了全国”。 什么是区块链? 区块链技术是指全民参与记账的一种方式。所有系统背后都有一个数据库&#xff0c;你可以把它看作是一个大账簿。目前是各自记各自的账。它最本…

十次方:服务器的1U、2U、U代表什么意思?

我们在租用或购买服务器的时候&#xff0c;其中有个需要考虑的因素是&#xff0c;我们的服务器需要选择多少U?有1U、2U、4U等服务器可以选择&#xff0c;那么这里的U代表是什么意思? 服务器中的 “U” 代表什么意思 ? 服务器里的“U”特指的是服务器机箱的高度&#xff0c…

五次方数(C语言)

解题思路&#xff1a; 本题的难点在于如何判断边界&#xff0c;我们先判断上边界&#xff1a;我们试着以每位数最大单位数9为边界&#xff0c;所以9^559049,有5位数&#xff0c;所以5*59049295245&#xff1b; 下边界&#xff1a;按题目要求&#xff0c;对一个数十进制表示时的…

科学计算机怎么用10次方,一个数怎么用计算器开10次方

2010-10-20 关于使用计算器&#xff1f;谢谢 那个x^y的按键就是x的y次方的意思 不知道您上高中没有&#xff0c;大概是上高中的时候学的&#xff0c;开根号的新的表示方法 比如说根号下3&#xff0c;也就是2次根号下3&#xff0c;就等于3的2分之1次方 再比如3次根号下16&#x…

window如何安装head插件

head插件是给Elasticsearch提供的图形化界面 1&#xff0c;下载地址 head插件下载地址 2&#xff0c;解压 3&#xff0c;安装node js&#xff0c;安装cnpm npm install ‐g cnpm ‐‐registryhttps://registry.npm.taobao.org4&#xff0c;将grunt安装为全局命令 。Grunt是…

用计算机怎么按四分之三次方等于多少,八十一分之十六的负四分之三次方怎么算,要具体过程,答案是多少?...

八十一分之十六的负四分之三次方怎么算&#xff0c;要具体过程&#xff0c;答案是多少&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01; 八十一分之十六的负四分之三次方怎么算&a…

十次方:机架式服务器和塔式服务器有什么区别?

通过服务器外形的结构,可以把服务器分为塔式、机架式、刀片式服务器三种类型。而目前市场上比较常见的是塔式和机架式服务器两种,那么这两种服务器有什么区别呢? 外形上: 塔式服务器它的外形上跟我们普通电脑的主机差不多,是立的,可以随便放置,无需机柜。只不过个头更…

【十次方】Springboot中使用SpringCache做缓存

Spring全家桶分布式微服务&#xff08;十次方项目学习&#xff09; 十次方学习交流qq群&#xff1a;672373393 其实在sptringboot中本身提供了一个缓存SpringCache&#xff0c;相比redis更加的简单&#xff0c;但是相对的功能也没有redis强大。如果没有其它特别的需求&#xff…