你可以,但你可能不会得到你期望的结果。
lag
这是应用于ts
对象的一年滞后(ldeaths
是一个内置数据集,在帮助文件中用作示例lag
,因此您也可以尝试)。滞后集从一年前开始(并显示所有数据)。
ldeaths
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1974 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512
# 1975 2933 2889 2938 2497 1870 1726 1607 1545 1396 1787 2076 2837
# 1976 2787 3891 3179 2011 1636 1580 1489 1300 1356 1653 2013 2823
# 1977 3102 2294 2385 2444 1748 1554 1498 1361 1346 1564 1640 2293
# 1978 2815 3137 2679 1969 1870 1633 1529 1366 1357 1570 1535 2491
# 1979 3084 2605 2573 2143 1693 1504 1461 1354 1333 1492 1781 1915
lag(ldeaths, 12)
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1973 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512
# 1974 2933 2889 2938 2497 1870 1726 1607 1545 1396 1787 2076 2837
# 1975 2787 3891 3179 2011 1636 1580 1489 1300 1356 1653 2013 2823
# 1976 3102 2294 2385 2444 1748 1554 1498 1361 1346 1564 1640 2293
# 1977 2815 3137 2679 1969 1870 1633 1529 1366 1357 1570 1535 2491
# 1978 3084 2605 2573 2143 1693 1504 1461 1354 1333 1492 1781 1915
现在,将数据集转换为xts
对象并尝试。
ldeaths.x = as.xts(ldeaths)
head(lag(ldeaths.x, 12), n=14)
# [,1]
# Jan 1974 NA
# Feb 1974 NA
# Mar 1974 NA
# Apr 1974 NA
# May 1974 NA
# Jun 1974 NA
# Jul 1974 NA
# Aug 1974 NA
# Sep 1974 NA
# Oct 1974 NA
# Nov 1974 NA
# Dec 1974 NA
# Jan 1975 3035
# Feb 1975 2552
哎呀。不是你所期望的。但是你应该期待它,因为帮助文件lag.xts
说:
... 已决定 lag 的默认行为应与该运算符的常见时间序列解释相匹配 - 特别是时间 't' 的值应该是时间 't-1' 的值以表示正滞后。这与 lag.zoo 和 lag.ts 不同。
所以,让我们试试吧k = -12
。
head(lag(ldeaths.x, -12), n=14)
# [,1]
# Jan 1974 2933
# Feb 1974 2889
# Mar 1974 2938
# Apr 1974 2497
# May 1974 1870
# Jun 1974 1726
# Jul 1974 1607
# Aug 1974 1545
# Sep 1974 1396
# Oct 1974 1787
# Nov 1974 2076
# Dec 1974 2837
# Jan 1975 2787
# Feb 1975 3891
为了好玩,zoo
对象会发生什么?首先,转换为zoo
然后尝试。
ldeaths.z = zoo(ldeaths.x)
head(lag(ldeaths.z, 12), n=14)
#
# Jan 1974 2933
# Feb 1974 2889
# Mar 1974 2938
# Apr 1974 2497
# May 1974 1870
# Jun 1974 1726
# Jul 1974 1607
# Aug 1974 1545
# Sep 1974 1396
# Oct 1974 1787
# Nov 1974 2076
# Dec 1974 2837
# Jan 1975 2787
# Feb 1975 3891