如何选择组合总和遵循特定分布的样本组合?

时间:2016-08-26 08:08:43

标签: r sum combinations distribution

我有两个30个样本数据集。

A1 <- c(368.4777, 387.9693, 403.7576, 417.4397, 429.7728, 441.1835, 451.9409, 462.2286, 472.1809, 481.9012, 491.4738, 500.9705, 510.4558, 519.9902, 529.6330, 539.4454, 549.4926, 559.8473, 570.5931, 581.8296, 593.6794, 606.2988, 619.8938, 634.7472, 651.2666, 670.0744, 692.1994, 719.5452, 756.3235, 815.7298)

B1 <- c(414.2523,  471.8087,  519.1119,  560.4502,  597.9043,  632.6668,  665.5000,  696.9308,  727.3477,  757.0533,  786.2953,  815.2867,  844.2194,  873.2745,  902.6306,  932.4719,  962.9959,  994.4228, 1027.0068, 1061.0519, 1096.9331, 1135.1297, 1176.2765, 1221.2488, 1271.3134, 1328.4178, 1395.8053, 1479.5340, 1593.1899, 1780.2717)

如果我想总结两个发行版,

  1. A1+B1会给我一张绿色虚线密度图。

  2. rowSums(expand.grid(A1, B1))会给我蓝色实线密度图。 (30 * 30 =所有可能组合中的900种)

  3. 但是,我想使总和的分布类似于红线(Target)。换句话说,我想从A1B1中选择组合,以使组合总和遵循红线密度分布(每个值只能选取一次)。我怎么能这样做?

    Target <- c(1691.60, 1041.01, 1581.92, 1392.43, 1806.88, 1788.24, 1838.67, 1953.35, 1253.21, 1791.36, 1644.61, 1425.05, 1218.66, 1596.36, 1305.67, 1031.98,  828.52, 1375.77, 1475.28, 1718.25)
    

    enter image description here

1 个答案:

答案 0 :(得分:0)

我不太关注你问题的最后部分,所以答案可能需要调整。

如果您想对A1B1的组合进行采样,那么您只需使用示例函数即可。所以

s1 = sample(A1) + sample(B1)
plot(density(s1))

这是无需更换的抽样。如果您想要替换,只需在replace=TRUE函数中添加sample