gpt4 book ai didi

r - 使用 R 中的过滤函数计算 EMA

转载 作者:行者123 更新时间:2023-12-01 10:05:22 25 4
gpt4 key购买 nike

我想用向量化符号重​​现这段代码

getEMA2<-function(x,win){
k<-2/(win+1)
v<-vector()
for (i in 1:length(x)){
if (i==1){
v[i]<-x[i]
}
else{
v[i]<-k*x[i]+(1-k)*v[i-1]
}
}
return (v)
}
testOutput<-getEMA2(rnorm(100,0,1),5)

我尝试过使用过滤函数,但递归/卷积方法似乎无法实现这一点

感谢您的回复,

最佳答案

由于 filter 计算

y[n] = x[n] + alpha * y[n-1]

您需要重新缩放结果。

f <- function(x,win) {
alpha <- 2/(win+1)
filter(x, 1-alpha, method="recursive", side=1, init=x[1]/alpha)*alpha
}
x <- 1:10
k <- 3
getEMA2(x,k)
f(x,k) # identical

大多数过滤器已经在 TTR 包中定义。

关于r - 使用 R 中的过滤函数计算 EMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com