为了计算 R 中时间序列的二次变化,我想对每个点求和当前点和最后 x 点的对数返回的平方。
我知道您可以通过键入来构建 py 的对数返回平方
diff(log(py))^2
但是,我怎样才能建立一个时间序列,它在每个点上求和最后 5 个点以建立二次变化?
为了计算 R 中时间序列的二次变化,我想对每个点求和当前点和最后 x 点的对数返回的平方。
我知道您可以通过键入来构建 py 的对数返回平方
diff(log(py))^2
但是,我怎样才能建立一个时间序列,它在每个点上求和最后 5 个点以建立二次变化?
embed
与 结合的功能rowSums
可以满足您的需求:
cbind(
AirPassengers,
sum5=c(rep(NA, 4), rowSums(embed(AirPassengers, 5)))
)
AirPassengers sum5
Jan 1949 112 NA
Feb 1949 118 NA
Mar 1949 132 NA
Apr 1949 129 NA
May 1949 121 612
Jun 1949 135 635
Jul 1949 148 665
...
什么embed
是创建一个具有初始向量滞后值的矩阵:
embed(AirPassengers, 5)
[,1] [,2] [,3] [,4] [,5]
[1,] 121 129 132 118 112
[2,] 135 121 129 132 118
[3,] 148 135 121 129 132
[4,] 148 148 135 121 129
[5,] 136 148 148 135 121
[6,] 119 136 148 148 135
[7,] 104 119 136 148 148
[8,] 118 104 119 136 148
...
您可以rowSums
在此矩阵的行上使用或任何其他操作。