我不了解TTR SMA功能如何处理重量。首先,wts和w有什么区别?然后,结果出乎我的意料。
我想在SMA计算的每个位置使用一组线性权重,以便要计算的当前值具有最高的权重,第n个最远的值具有最低的权重。如果权重按我假设的方式工作,这是一个应该权重的示例(我的示例提供了线性滤波器的脉冲函数):
t <- replicate(0, n = 12)
t[5] <- 1
weights <- c(0.25, 0.5, 0.75, 1.0)
SMA(t, n = 4, wts = weights)
但这给出了: 不适用不适用0.00 0.25 0.25 0.25 0.25 0.00 0.00 0.00 0.00
如果使用一组权重c(1,1,1,1),则得到的结果相同。我希望看到项目5-8分别为1.0、0.75、0.5、0.25。我无法在Internet上找到有关SMA如何计算加权SMA函数的任何解释。
答案 0 :(得分:0)
TTR的SMA
不使用权重(w或wts)。您可以将w或wts添加到SMA
函数中,但是将不能使用,如下面的检查所示。
identical(SMA(t, n = 4), SMA(t, n = 4, wts = weights))
[1] TRUE
wts
用于WMA
。并且w
与VMA
一起使用。
我同意在这一点上文档应该更加清晰。
来自This page的研究者对WMA
的描述更为清楚。
VMA更像是一种自适应移动平均线,并且正在向EMA公式添加某种权重,如下所示。
# parts from c code from TTR package
d_ratio = 2/(n+1)
EMA[i] = d_x[i] * d_ratio + d_result[i-1] * (1-d_ratio);
VMA[i] = d_x[i] * d_w[i] * d_ratio + d_result[i-1] * (1-d_ratio*d_w[i]);
在查看所需说明时,应使用WMA
函数