【发布时间】:2017-12-28 14:16:03
【问题描述】:
例如
require(tseries)
series1 <- c(100,140,150,200,150,260,267,280,300,350)
series2 <- c(500,600,250,300,350,500,100,130,50,60)
data <- data.frame("series1" = series1, "series2" = series2)
ts = tsbootstrap(data$series1, m=1, b=2, type="block", nb=10)
ts <- as.data.frame(ts)
head(ts)
> head(ts)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 280 280 150 200 100 300 150 140 100 260
2 300 300 200 150 140 350 260 150 140 267
3 140 260 140 260 267 200 150 150 260 300
4 150 267 150 267 280 150 200 200 267 350
5 260 100 260 150 300 100 150 267 100 200
6 267 140 267 200 350 140 260 280 140 150
我们现在有两个块并以不同的顺序拼接在一起。我的问题是,如何通过块 boostrap 来“重新洗牌” series1 和 series2,同时保持两个系列的块顺序相同?
例如..如果我们将块设置为 2,它会抓取 2 个块,比如说它的位置 5,6(共 10 个)。它抓取元素 5,6 并将其移动到位置 1,2...这是用于系列 1 ,对于系列 2,它抓取元素 5,6 并移动到位置 1,2。这样我保持两个系列的顺序相同,这可能吗?
到目前为止,我已尝试将 series1 和 series2 合并为一个新列。这样,当使用引导程序时,它将两个系列移动到相同的位置:
data <- transform(data, ts.merge=paste(series1, series2, sep=","))
head(data)
series1 series2 ts.merge
1 100 500 100,500
2 140 600 140,600
3 150 250 150,250
4 200 300 200,300
5 150 350 150,350
6 260 500 260,500
但是,, 分隔符与 tseries 不兼容...
Error in FUN(newX[, i], ...) :
NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning messages:
1: In as.vector(x, mode = "double") : NAs introduced by coercion
2: In as.vector(x, mode = "double") : NAs introduced by coercion
我也尝试使用分隔符 "" 但是,我不确定之后如何区分两个数值以便将它们分开(请注意,我的现实生活示例不仅仅是如上所示的三位数值,否则我可以将它们分成两半之后)
【问题讨论】:
标签: r time-series statistics-bootstrap