
时间序列分析
|
429
14.10 计算移动平均
14.10.1 问题
计算时间序列的移动平均值。
14.10.2 解决方案
使用 zoo 包的 rollmean 函数计算
k
期移动平均值:
library(zoo)
ma <- rollmean(ts, k)
这里 ts 是在 zoo 对象中捕获的时间序列数据,k 是移动平均的期数。
对于大多数金融应用,仅仅使用历史数据通过 rollmean 计算移动平均值,即只应用
该日能够得到的数据。这可以通过指定参数 align = right 来实现。否则,函数
rollmean 会应用在计算点尚不可得的未来数据来计算均值:
ma <- rollmean(ts, k, align = "right")
14.10.3 讨论
交易员喜欢移动平均线以平滑价格波动,也称为
滚动均值
。可以通过结合 rollapply
函数和 mean 函数来计算 14.12 节中所述的滚动均值,但 rollmean 要快得多。
除了速度之外,rollmean 的美妙之处在于它返回了它所要求的相同类型的时间序列对
象(即 xts 或 zoo)。对于对象中的每个元素,其日期是相应的移动平均值的日期。因
为结果是时间序列对象,所以你可以轻松地合并原始数据和移动平均值,然后将它们绘
制在一起,如图 14-3 所示:
ibm_year <- ibm["2016"]
ma_ibm <- rollmean(ibm_year, 7, align = "right")
ma_ibm <- merge(ma_ibm, ibm_year) ...