2012-09-24 175 views
4

好奇,如果有人使用它。我在时间序列上做了简单的EMA操作。但无法很好地协调。使用TTR软件包计算指数移动平均线

我读到更新常数的值= 2 /(N + 1)。我定义了x = 1:20,并做了EMA(x,5)。然后我用递归计算做了EMA计算。这两个结果真的不排队

该函数返回

EMA(x,5) 
[1] NA NA NA NA 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 

和我的小东西给我,

EMA 
[1] 1.000000 1.333333 1.888889 2.592593 3.395062 4.263374 5.175583 6.117055 7.078037 8.052025 9.034683 10.023122 11.015415 12.010276 13.006851 14.004567 
[17] 15.003045 16.002030 17.001353 18.000902 

回答

6

为了得到你正在寻找的答案,你需要写

TTR::EMA(1:20, n=1, ratio=2/(5+1)) 

[1] 1.000000 1.333333 1.888889 2.592593 3.395062 4.263374 5.175583 
[8] 6.117055 7.078037 8.052025 9.034683 10.023122 11.015415 12.010276 
[15] 13.006851 14.004567 15.003045 16.002030 17.001353 18.000902 

如果你打电话TTR::EMA(1:20, n=5)这相当于调用

TTR::EMA(1:20, n=5, ratio=2/(5+1)) 

这将使NA的第一前4名和后5名将是前5项的简单平均值。 (即在这种情况下为3)。然后EMA算法将开始。第6位将是6 * 2/6 + 3 * 4/6 = 4。第7位将是7 * 2/6 + 4 * 4/6 = 5等等。精确算法here

2

TTR::EMA计算的第一个非缺失值的算术平均值第一个变量,然后开始递归计算。您可以通过设置n=1ratio=1/3来匹配您的计算。

R> EMA(x,n=1,ratio=1/3) 
[1] 1.000000 1.333333 1.888889 2.592593 3.395062 4.263374 5.175583 
[8] 6.117055 7.078037 8.052025 9.034683 10.023122 11.015415 12.010276 
[15] 13.006851 14.004567 15.003045 16.002030 17.001353 18.000902 
+1

'> cor(“TTR作者:Joshua Ulrich”,“回答:Joshua Ulrich”)' '[1] 1' omg! –