使用bin计数作为随机数选择的权重

时间:2015-08-14 07:17:37

标签: matlab

我有一组数据,我希望通过非参数方式的随机采样来近似,例如:

eventl=
4
5
6
8
10
11
12
24
32

为了实现这一目标,我最初将数据分类到某个值:

binsize = 5;
nbins = 20;
[bincounts,ind] = histc(eventl,1:binsize:binsize*nbins);

然后填充一个矩阵,其中包含所有可能的数字,这些数字由近似值可以选择:

sizes = transpose(1:binsize*nbins);

使用bin计数作为选择的权重,即bincount(1-5)= 2,因此选择1,2,3,4或5 = 2的权重,而(16-20)= 0所以16,17 ,18,19或20永远不会被选中,我只需要拿入bincounts并将它们复制到bin大小:

w = repelem(bincounts,binsize);

然后执行加权数字选择,我使用:

[~,R] = histc(rand(1,1),cumsum([0;w(:)./sum(w)]));
R = sizes(R);

由于某种原因,这种方法无法逼近数据。我的理解是,足够的采样深度,R的分箱版本与eventl的分箱版本相同,但是存在显着变化,并且通常在重量为0的箱中找到数据。

有人可以建议更好的方法来指出错误吗?

0 个答案:

没有答案