Я искал везде и ничего не нашел. Есть ли способ выполнить взвешенный сэмпл в Octave?
То есть, если у нас есть два вектора e и v, где sum(v) = 1, способ выборки n элементов из e с вероятностями v.
Я искал везде и ничего не нашел. Есть ли способ выполнить взвешенный сэмпл в Octave?
То есть, если у нас есть два вектора e и v, где sum(v) = 1, способ выборки n элементов из e с вероятностями v.
Вы хотите определить индекс в соответствии с вероятностью в векторе «v», а затем выберите соответствующий индекс в «e». Таким образом, вам нужно использовать выборку с обратным преобразованием. Простой способ сделать это, например:
clear
close all
e = [10 20 30 40 50];
v = [0.1 0.2 0.5 0.1 0.1];
cdf = cumsum(v);
n = 1000;
E = [];
for i=1:n
r = rand;
idx = find(cdf>r);
E = [E e( idx(1) )];
end
hist(E)