0

为了计算 R 中时间序列的二次变化,我想对每个点求和当前点和最后 x 点的对数返回的平方。

我知道您可以通过键入来构建 py 的对数返回平方

diff(log(py))^2

但是,我怎样才能建立一个时间序列,它在每个点上求和最后 5 个点以建立二次变化?

4

1 回答 1

3

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在此矩阵的行上使用或任何其他操作。

于 2012-07-30T10:07:32.303 回答