You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中EWM逆公式推导:求指定EMA对应的col1值

推导EMA逆公式并计算目标值

问题背景

用户创建了如下Pandas DataFrame:

import pandas as pd

ds = {'col1' : [1,2,3,4,3,3,2,2,2,4,5,6,7,5,4,3,2,2,4,5,12]}
df = pd.DataFrame(data=ds)

并通过以下代码计算3期指数移动平均(EMA):

time_window = 3
df['ema3'] = df['col1'].ewm(com=time_window - 1,
                        min_periods=time_window).mean()

已知截至第20条记录的ema3值为6.585,需要确定第21条记录的col1取何值时,对应的ema3为8.12。

EMA公式推导(基于Pandas的ewm(com)参数)

Pandas中使用com参数的指数移动平均递推公式为:

EMAₜ = α × Xₜ + (1-α) × EMAₜ₋₁

其中:

  • α 是平滑系数,计算方式为 α = 1/(com + 1)
  • 这里time_window=3,所以com=time_window-1=2,代入得α=1/3,1-α=2/3

逆公式推导

我们需要已知EMAₜ(目标值8.12)和EMAₜ₋₁(6.585),求Xₜ(第21条的col1值)。将递推公式变形:

EMAₜ = (1/3)Xₜ + (2/3)EMAₜ₋₁
两边乘3:3×EMAₜ = Xₜ + 2×EMAₜ₋₁
整理得:Xₜ = 3×EMAₜ - 2×EMAₜ₋₁

计算与Python实现

代入数值计算:

  • EMAₜ = 8.12,EMAₜ₋₁=6.585
  • Xₜ = 3×8.12 - 2×6.585 = 24.36 - 13.17 = 11.19

用Python代码实现计算:

# 已知参数
ema_prev = 6.585  # 第20条的ema3值
ema_target = 8.12 # 目标ema3值
com = 2           # time_window-1=3-1=2

# 计算平滑系数α
alpha = 1 / (com + 1)

# 逆公式计算X_t
x_t = (ema_target - (1 - alpha) * ema_prev) / alpha

print(f"第21条记录的col1值应为: {x_t}")

运行结果:

第21条记录的col1值应为: 11.19

内容的提问来源于stack exchange,提问作者Giampaolo Levorato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:29:59