R help- bootstrap 时间序列数据按行

R help- bootstrap time series data by row

假设有这样一个时间序列数据

set.seed(1234)
x <- matrix( round(rnorm(200, 5)), ncol=10)
colnames(x) <-c('a1','a2','a3','a4','a5','b1','b2','b3','b4','b5')

我试图选择每个变量的每 3 个相邻度量来形成一个新的 table,输出将如下所示:

*小写a1-5,b1-5为原始数据点

*大写的A1-3、B1-3是新的列名,因为每个变量(变量a和b)我只需要3个度量

*1-1,1-2,1-3 表示 sample#1 可以通过替换分成 3 个子集

索引 A1 A2 A3 B1 B2 B3
1-1 a1 a2 a3 b1 b2 b3
1-2 a2 a3 a4 b2 b3 b4
1-3 a3 a4 a5 b3 b4 b5
2-1 a1 a2 a3 b1 b2 b3
2-2 a2 a3 a4 b2 b3 b4
2-3 a3 a4 a5 b3 b4 b5

这类似于 bootstrap 替换,但问题是 a) 它是时间序列和 2) 有多个变量

如有任何建议,我们将不胜感激!

使用一些矩阵索引来抓取块并重塑回矩阵:

colidx <- 1:3 + rep(rbind(0:2, 5:7), each=3)
matrix(x[cbind( rep(seq_len(nrow(x)), each=length(colidx)), colidx)],
       ncol=6, byrow=TRUE)

 #     [,1] [,2] [,3] [,4] [,5] [,6]
 #[1,]    4    5    6    5    5    5
 #[2,]    5    6    6    5    5    4
 #[3,]    6    6    5    5    4    2
 #[4,]    5    5    4    5    4    6
 #[5,]    5    4    8    4    6    5
 #[6,]    4    8    5    6    5    5
 # etc

对比x的第一行可以看到前3列是aX变量的迭代,后3列是bX变量的迭代.

 #[1,]  4  5  6  6  5  |  5  5  5  4  2

        4  5  6        |  5  5  5 
           5  6  6     |     5  5  4
              6  6  5  |        5  4  2