exponenta event banner

slicesample

Пробоотборник срезов

Синтаксис

rnd = slicesample(initial,nsamples,'pdf',pdf)
rnd = slicesample(initial,nsamples,'logpdf',logpdf)
[rnd,neval] = slicesample(initial,...)
[rnd,neval] = slicesample(initial,...,Name,Value)

Описание

rnd = slicesample(initial,nsamples,'pdf',pdf) производит nsamples случайные выборки с использованием метода выборки среза (см. Алгоритмы). pdf дает целевую функцию плотности вероятности (pdf). initial - вектор строки или скаляр, содержащий начальное значение последовательностей случайных выборок.

rnd = slicesample(initial,nsamples,'logpdf',logpdf) создает образцы с использованием логарифма pdf.

[rnd,neval] = slicesample(initial,...) возвращает среднее число оценок функций, произошедших в выборке среза.

[rnd,neval] = slicesample(initial,...,Name,Value) генерирует случайные выборки с дополнительными опциями, заданными одним или несколькими Name,Value аргументы пары.

Входные аргументы

initial

Начальная точка, скалярный вектор или вектор строки. Набор initial так pdf(initial) является строго положительным скаляром. length(initial) - количество размеров каждого образца.

nsamples

Положительное целое число, число выборок, slicesample генерирует.

pdf

Дескриптор функции, которая генерирует функцию плотности вероятности, заданную с помощью @. pdf может быть ненормализован, что означает, что он не должен интегрироваться в 1.

logpdf

Дескриптор функции, которая генерирует логарифм функции плотности вероятности, указанной в @. logpdf может быть логарифмом ненормализованного pdf.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

'burnin'

Неотрицательное целое число, количество выборок для генерации и отбрасывания перед генерацией выборок для возврата. Алгоритм выборки среза представляет собой цепочку Маркова, стационарное распределение которой пропорционально распределению pdf аргумент. Набор burnin до достаточно высокого значения, которое, по вашему мнению, цепь Маркова примерно достигает стационарности после burnin образцы.

По умолчанию: 0

'thin'

Положительное целое число, где slicesample отбрасывает каждый thin - 1 samples и возвращает следующий. Алгоритм выборки среза представляет собой цепочку Маркова, поэтому выборки последовательно коррелируются. Чтобы уменьшить последовательную корреляцию, выберите большее значение thin.

По умолчанию: 1

'width'

Ширина интервала вокруг текущей выборки, скаляра или вектора положительных значений. slicesample начинается с этого интервала и ищет соответствующую область, содержащую точки pdf которые вычисляются до достаточно большого значения.

  • Если width является скаляром, и выборки имеют несколько измерений, slicesample использование width для каждого измерения.

  • Если width является вектором, он должен иметь ту же длину, что и initial.

По умолчанию: 10

Выходные аргументы

rnd

nsamplesоколо-length(initial) матрица, где каждая строка является одной выборкой.

neval

Скаляр, среднее количество оценок функций на выборку. neval включает в себя burnin и thin оценки, а не только оценки проб, возвращенных в rnd. Таким образом, общее количество аналитических отчетов по функциям составляет

neval*(nsamples*thin + burnin).

Примеры

свернуть все

В этом примере показано, как генерировать случайные выборки из мультимодальной плотности с использованием slicesample.

Определите функцию, пропорциональную мультимодальной плотности.

rng default  % For reproducibility
f = @(x) exp(-x.^2/2).*(1 + (sin(3*x)).^2).*...
    (1 + (cos(5*x).^2));
area = integral(f,-5,5);

Создайте 2000 образцов из плотности, используя период горения 1000 и сохраняя каждый пятый образец.

N = 2000;
x = slicesample(1,N,'pdf',f,'thin',5,'burnin',1000);

Постройте гистограмму образца.

[binheight,bincenter] = hist(x,50);
h = bar(bincenter,binheight,'hist');
h.FaceColor = [.8 .8 1];

Figure contains an axes. The axes contains an object of type patch.

Масштабируйте плотность, чтобы она имела ту же площадь, что и гистограмма, и наложите ее на гистограмму.

hold on
h = gca;
xd = h.XLim;
xgrid = linspace(xd(1),xd(2),1000);
binwidth = (bincenter(2)-bincenter(1));
y = (N*binwidth/area) * f(xgrid);
plot(xgrid,y,'r','LineWidth',2)
hold off

Figure contains an axes. The axes contains 2 objects of type patch, line.

Образцы, похоже, хорошо подходят к теоретическому распределению, поэтому burnin стоимость кажется адекватной.

Совет

  • Нет окончательных предложений по выбору соответствующих значений для burnin, thin, или width. Выберите начальные значения burnin и thin, и увеличить их, если необходимо, чтобы дать необходимую независимость и маргинальные распределения. Подробнее о влиянии корректировки см. Neal [1] width.

Алгоритмы

В каждой точке последовательности случайных выборок, slicesample выбирает следующую точку путем «разрезания» плотности, чтобы сформировать окрестность вокруг предыдущей точки, где плотность выше некоторого значения. Следовательно, точки выборки не являются независимыми. Соседние точки в последовательности имеют тенденцию быть ближе друг к другу, чем они были бы из выборки независимых значений. Для многих целей весь набор точек может использоваться в качестве выборки из целевого распределения. Однако, когда этот тип последовательной корреляции является проблемой, burnin и thin параметры могут помочь уменьшить эту корреляцию.

slicesample использует алгоритм выборки среза Neal [1]. Для обеспечения числовой стабильности он преобразует pdf функция в logpdf функция. Алгоритм изменения размера области поддержки для каждого уровня, называемый «stepping-out» и «stepping-in», был предложен Нилом.

Ссылки

[1] Нил, Рэдфорд М. «Проба среза». Анн. стат. том 31, № 3, стр. 705-767, 2003. Доступно в Project Euclid.

Представлен в R2006a