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
假设有这样一个时间序列数据
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