通过组替换引导,但为重新采样的单元创建新标识符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过组替换引导,但为重新采样的单元创建新标识符相关的知识,希望对你有一定的参考价值。
我正在尝试从R中的替换数据表中引导组。
这是数据表,例如:
dat = data.table('n'=c(1,1,1,2,2,2,2,3,4,4,4,4,4),'y'=round(rnorm(13,0,1),1))
n y
1: 1 -0.8
2: 1 0.5
3: 1 -0.1
4: 2 0.2
5: 2 -0.1
6: 2 -2.7
7: 2 0.1
8: 3 0.3
9: 4 -0.7
10: 4 -0.2
11: 4 1.2
12: 4 1.2
13: 4 -0.1
一个自举样本随机抽取4组'n',因此结果可能是这样的(在这个实现中,绘制了1,4组,绘制了两次):
n y
1: 4 -0.7
2: 4 -0.2
3: 4 1.2
4: 4 1.2
5: 4 -0.1
6: 3 0.3
7: 3 0.3
8: 1 -0.8
9: 1 0.5
10: 1 -0.1
但是,我的问题是,如果我按'n'分组,它认为第6行和第7行是同一组,而实际上它们是重采样版本,所以我想以不同方式对待它们,例如,通过添加第三列这就是说,“这是从3开始的第二组”(例如3.1和3.2)或完成它的东西。
答案
你可以通过连接(很可能也是其他方式)来做到这一点。
首先,我们生成一个bootstrap示例。这包含两个变量:新组id,bid
和样本组n
set.seed(84)
bootsample = data.table(n=sample(1:4, 4, replace=TRUE), bid=1:4)
bootsample
n bid
1: 4 1
2: 2 2
3: 4 3
4: 4 4
然后我们需要将它合并回原始数据表。由于这些组被重复,我们应该使用allow.cartesian=TRUE
参数。您可以在后续分析中使用bid
变量组。
merge(bootsample, dat, allow.cartesian=TRUE)
n bid y
1: 2 2 1.1
2: 2 2 2.2
3: 2 2 -0.8
4: 2 2 -1.4
5: 4 1 -1.3
6: 4 1 -0.4
7: 4 1 -1.0
8: 4 1 0.9
9: 4 1 -0.3
10: 4 3 -1.3
11: 4 3 -0.4
12: 4 3 -1.0
13: 4 3 0.9
14: 4 3 -0.3
15: 4 4 -1.3
16: 4 4 -0.4
17: 4 4 -1.0
18: 4 4 0.9
19: 4 4 -0.3
可能有更紧凑的解决方案。请注意,如果引导组的大小不同,则可能会给您带来各种问题,具体取决于您使用引导数据的方式。
以上是关于通过组替换引导,但为重新采样的单元创建新标识符的主要内容,如果未能解决你的问题,请参考以下文章