将prob应用于多变量矩阵的样本函数

时间:2017-02-24 16:08:59

标签: r statistics-bootstrap

目前,我正在尝试使用114个obs和16个变量来引导数据集。

我使用了示例函数,如下所示:

x[sample(nrow(x),size=114,replace=TRUE),] where x is my dataset. 

但是,我想用分配给特定列的概率进行采样,因为样本函数包含这种可能性。例如,我想对第5列进行抽样,数字概率介于1-5 0.1和数字5-200 0.9之间。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果我了解您正在寻找的内容,这可能是mapply的工作。

# fake data
x <- as.data.frame(matrix(1:10,nrow=2))
x
  V1 V2
1  1  6
2  2  7
3  3  8
4  4  9
5  5 10

# fake probabilities of each row, for each column
probs <- as.data.frame(matrix(c(.1,.1,.1,.2,.5,.5,.2,.1,.1,.1),ncol=2))
probs
   V1  V2
1 0.1 0.5
2 0.1 0.2
3 0.1 0.1
4 0.2 0.1
5 0.5 0.1

# then a little mapply magic - change size as needed
mapply(sample, x=x, prob=probs, replace=T, size=10)
      V1 V2
 [1,]  5  7
 [2,]  5  7
 [3,]  2  6
 [4,]  5  6
 [5,]  1  6
 [6,]  5  9
 [7,]  1  9
 [8,]  5  9
 [9,]  5  6
[10,]  4  7