首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中复制ewm pandas函数

在R中复制ewm pandas函数
EN

Stack Overflow用户
提问于 2021-01-17 20:51:46
回答 1查看 90关注 0票数 0

我正在尝试在R中复制ewm python (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ewm.html)函数,但没有成功。

以下是python代码:

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'B': [0:100]})
df.ewm(span=100).std()

我不能在R中得到相同(或相似)的结果。

EN

回答 1

Stack Overflow用户

发布于 2021-01-18 16:10:38

我更改了Vectorized implementation of exponentially weighted moving standard deviation using R?中的代码以使其更快:

代码语言:javascript
复制
f <- function(y, m, alpha) {
  weights <- (1 - alpha)^((m - 1):0)
  ewma <- sum(weights * y) / sum(weights)
  bias <- sum(weights)^2 / (sum(weights)^2 - sum(weights^2))
  ewmsd <- sqrt(bias * sum(weights * (y - ewma)^2) / sum(weights))
  ewmsd
} 
test <- frollapply(df0, 1000, function(x) f(x, 1000, alpha))

其中df0是具有一列或向量的df。

结果与python函数生成的结果相同(小数点后5位)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65760795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档