我希望能从时间序列数据集中生成四个bootstrap样本,并将每个新的bootstrap样本变成一个新的列表元素。样本大小需要与原始数据集的长度相同。请问有人能帮忙吗?这是我目前为止想到的全部。
data <- ts(matrix(rnorm(36), 12, 3), start=c(2012, 1), frequency=12)
data
replicate(4, apply(data, 1, sample, replace=TRUE))
我希望能从时间序列数据集中生成四个bootstrap样本,并将每个新的bootstrap样本变成一个新的列表元素。样本大小需要与原始数据集的长度相同。请问有人能帮忙吗?这是我目前为止想到的全部。
data <- ts(matrix(rnorm(36), 12, 3), start=c(2012, 1), frequency=12)
data
replicate(4, apply(data, 1, sample, replace=TRUE))
apply
,并使用list
使每个复制品成为列表元素:boot <- replicate( 4 , list( apply(data , 2 , function(x) sample( x , replace=TRUE ) ) ) )
class(boot)
#[1] "list"
length( boot )
#[1] 4
head(boot[[1]])
# Series 1 Series 2 Series 3
#[1,] 0.4652513 -0.02065698 0.3328945
#[2,] 0.6649865 0.08845410 0.2032134
#[3,] 0.5975473 -1.64571306 1.6516726
#[4,] 0.5975473 -0.23359075 -0.3255437
#[5,] 0.4008458 0.42180633 1.8402009
#[6,] -0.5436319 1.17034910 0.3456304
由于您需要整行进行操作,因此这更容易!
boot <- replicate( 4 , list( data[ sample( nrow(data) , replace = TRUE ) , ] ) )
bootstrap
包。 - cryo111