计算R中的二次变分

时间:2012-07-30 09:58:42

标签: r volatility

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

我知道您可以通过键入

来构建py的日志返回的平方
diff(log(py))^2

但是,我如何建立一个时间序列,在最后5个点的每个点上求和,以构建二次变量?

1 个答案:

答案 0 :(得分:3)

功能embedrowSums相结合,可满足您的需求:

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或任何其他操作。