时间序列滚动
rollaplly for time series
我有一个358行的数据集,快速浏览如下
> unempts gdpts
> [1,] 7.03 4.2
> [2,] 7.17 3.7
> [3,] 6.97 3.2
> [4,] 6.83 2.9
> [5,] 6.60 2.7
> [6,] 6.27 3.4
我需要 运行 第 1 列对第 2 列的回归,滚动 60 windows 并将所有结果保存在矩阵中,以便我可以绘制相同的和 运行 HAC
.
我尝试了以下方法:
regRO <- rollapply(datam, 60, lm, by.column = TRUE,fill=NA)
但是报错如下
Error in formula.default(object, env = baseenv()) : invalid formula
请告知需要更改的内容。
您必须明确指定函数调用,以便 X
首先转换为数据框以满足 lm
:
的输入要求
library(zoo)
set.seed(123) # ensure runif in next line uses same random numbers each time run
datam <-matrix(runif(200),ncol=2)
out <- rollapplyr(datam,
width = 60,
FUN = function(X) coef(lm(as.data.frame(X))),
by.column=FALSE,
fill = NA) # omit fill=NA if NA rows not wanted
给予:
> tail(out)
(Intercept) V2
[95,] 0.5071618 -0.1041905
[96,] 0.5015140 -0.1032419
[97,] 0.5196683 -0.1404855
[98,] 0.5171599 -0.1401534
[99,] 0.5122871 -0.1288700
[100,] 0.5176396 -0.1297019
我有一个358行的数据集,快速浏览如下
> unempts gdpts
> [1,] 7.03 4.2
> [2,] 7.17 3.7
> [3,] 6.97 3.2
> [4,] 6.83 2.9
> [5,] 6.60 2.7
> [6,] 6.27 3.4
我需要 运行 第 1 列对第 2 列的回归,滚动 60 windows 并将所有结果保存在矩阵中,以便我可以绘制相同的和 运行 HAC
.
我尝试了以下方法:
regRO <- rollapply(datam, 60, lm, by.column = TRUE,fill=NA)
但是报错如下
Error in formula.default(object, env = baseenv()) : invalid formula
请告知需要更改的内容。
您必须明确指定函数调用,以便 X
首先转换为数据框以满足 lm
:
library(zoo)
set.seed(123) # ensure runif in next line uses same random numbers each time run
datam <-matrix(runif(200),ncol=2)
out <- rollapplyr(datam,
width = 60,
FUN = function(X) coef(lm(as.data.frame(X))),
by.column=FALSE,
fill = NA) # omit fill=NA if NA rows not wanted
给予:
> tail(out)
(Intercept) V2
[95,] 0.5071618 -0.1041905
[96,] 0.5015140 -0.1032419
[97,] 0.5196683 -0.1404855
[98,] 0.5171599 -0.1401534
[99,] 0.5122871 -0.1288700
[100,] 0.5176396 -0.1297019