У меня есть набор данных, которые я хотел аппроксимировать с помощью случайной выборки в непараметрической форме, например:Использование бен подсчитывает в качестве весов для выбора случайных чисел
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);
Использовать счетчик бункеров в качестве весов для выбора, т.е. bincount (1-5) = 2, таким образом, вес для выбора 1,2,3,4 или 5 = 2, тогда как (16-20) = 0, так 16,17 , 18, 19 или 20 не может быть выбран, я просто взять bincounts и тиражировать их по размеру бен:
w = repelem(bincounts,binsize);
Чтобы затем выполнить выбор взвешенного номера, я использую:
[~,R] = histc(rand(1,1),cumsum([0;w(:)./sum(w)]));
R = sizes(R);
Для некоторых почему этот подход не может аппроксимировать данные. Это было мое понимание того, что было достаточной глубины выборки, то Binned версия R
будет идентична Binned версии eventl
однако есть существенные различия и часто данные находятся в бункерах, чей вес был 0.
Может кто-нибудь предложить лучший метод сделать это или указать на ошибку?
Я не совсем понимая ваше объяснение того, как вы выбираете веса: говорят ваши данные [5 5 6 6 6 7 8]. Теперь вы делаете bin # 1, содержащий [5 6] и bin # 2, содержащий [7 8]. Вы хотите, как выходы 1 и 2, в 2,5 раза больше, чем 1 в 2? Вы хотите 5,6,7,8 с весами [2,3,1,1], соответственно? – Jonas
Если данные были [5 5 6 6 6 7 8] в бункерах 1-5 (count = 2) и 6-10 (count = 5), выбор 1,2,3,4 или 5 происходит при частота в 2,5 раза ниже, чем выбор 6,7,8,9 или 10. Счетчик дисков описывает частоту, с которой можно выбрать любое количество в этом диапазоне бинов. – AnnaSchumann
Это означало бы, что 6 следует выбирать с равной частотой, равной 8, верно, хотя исходные данные contais 3x равны числу 6? – Jonas