我有一组数据,我希望通过非参数方式的随机采样来近似,例如:
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的箱中找到数据。
有人可以建议更好的方法来指出错误吗?