
426
|
第
14
章
如果要加载 dplyr,则应该使用命名空间来明确正在使用的 lag 函数。
基础 R 函数是 stats::lag,而 dplyr 的函数是 dplyr::lag。
14.8 计算逐次差分
14.8.1 问题
给定时间序列
x
,需要计算连续观察值之间的差分:(
x
2
-
x
1
)、(
x
3
-
x
2
)、(
x
4
-
x
3
)……。
14.8.2 解决方案
使用 diff 函数:
diff(x)
14.8.3 讨论
diff 函数是一个泛型函数,因此它适用于简单向量、xts 对象和 zoo 对象。优美之处在
于,zoo 对象或 xts 对象的差分结果仍是 zoo 对象或 xts 对象,并且差分后具有正确
的日期。在这里,我们计算 IBM 股票连续价格的差分:
ibm.daily
#> 2010-01-04 2010-01-05 2010-01-06 2010-01-07 2010-01-08
#> 132 131 130 130 131
diff(ibm.daily)
#> 2010-01-05 2010-01-06 2010-01-07 2010-01-08
#> -1.60 -0.85 -0.45 1.30
标记为 2010-01-05 的差分是相对前一天(2010-01-04)的变化,这通常是你想要的。当
然,差分序列比原始序列短一个元素,因为 R 无法计算“2010-01-04”的变化。
默认情况下,diff 计算连续差分。你可以使用参数 lag 计算间距更大的差分。假设你
有月度 CPI 数据,并希望计算相对去年同月的变化 ...