【问题标题】:Weighted Sampling with multiple probability vectors in RR中具有多个概率向量的加权采样
【发布时间】:2023-11-14 08:59:01
【问题描述】:

我也有类似的问题:

Weighted sampling with 2 vectors

我现在有一个数据集,其中包含 1000 个观察值和每个观察值 4 列。我想从原始数据集中抽取 200 个观察值并进行替换。

但问题是:我需要为每一列分配不同的概率向量。例如,对于第一列。我想要相等的概率 c(0.001,0.001,0.001,0.001...)。对于第二列,我想要一些不同的东西,比如 c(0.0005,0.0002,......)。当然,每个概率向量之和为 1。

我知道样本可以使用一个向量。但我不确定其他命令。请帮助我!

提前感谢您! 可乐猴

【问题讨论】:

    标签: r sampling weighted


    【解决方案1】:

    具有样本概率的数据框

    # in your case the rows are 1000 and the columns 4, 
    # but it is just to show the procedure
    samp_prob <- data.frame(A = rep(.25, 4), B = c(.5, .1, .2, .2), C = c(.3, .6, .05, .05))
    

    用于替换采样的值的数据框

    df <- data.frame(a = 1:4, b = 2:5, c = 3:6)
    

    抽样

    sam <- mapply(function(x, y) sample(x, 200, T, y), df, samp_prob)
    head(sam)
         a b c
    [1,] 4 5 6
    [2,] 1 2 4
    [3,] 1 2 4
    [4,] 4 4 4
    [5,] 4 4 4
    [6,] 1 2 4
    
    # you can also write (it is equivalent):
    mapply(df, samp_prob, FUN = sample, size = 200, replace = T)
    

    【讨论】:

    • 感谢您的参与,Davide!我现在正在尝试。
    最近更新 更多