Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

slicesample

Sintaxis

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

Descripción

rnd = slicesample(initial,nsamples,'pdf',pdf) genera muestras aleatorias utilizando el método de muestreo de sectores (véase). proporciona la función de densidad de probabilidad de destino (pdf). es un vector de fila o escalar que contiene el valor inicial de las secuencias de muestra aleatorias.nsamplesAlgoritmospdfinitial

rnd = slicesample(initial,nsamples,'logpdf',logpdf) genera muestras utilizando el logaritmo del pdf.

[rnd,neval] = slicesample(initial,...) Devuelve el número medio de evaluaciones de función que se produjeron en el muestreo de sectores.

[rnd,neval] = slicesample(initial,...,Name,Value) genera muestras aleatorias con opciones adicionales especificadas por uno o más argumentos de par.Name,Value

Argumentos de entrada

initial

Punto inicial, un vector escalar o de fila. Set soo es un escalar estrictamente positivo. es el número de dimensiones de cada muestra.initialpdf(initial)length(initial)

nsamples

Entero positivo, el número de muestras que genera.slicesample

pdf

Identificador de una función que genera la función de densidad de probabilidad, especificada con. puede ser sin normalizar, lo que significa que no necesita integrarse.@pdf1

logpdf

Identificador de una función que genera el logaritmo de la función de densidad de probabilidad, especificada con. puede ser el logaritmo de un PDF no normalizado.@logpdf

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

'burnin'

Entero no negativo, el número de muestras que se generarán y descartarán antes de generar las muestras que se devolverán. El algoritmo de muestreo de sectores es una cadena de Markov cuya distribución estacionaria es proporcional a la del argumento.pdf Establezca un valor lo suficientemente alto como para creer que la cadena de Markov alcanza aproximadamente la estacionariedad después de las muestras.burninburnin

Predeterminado: 0

'thin'

Entero positivo, donde descarta todas las muestras y devuelve la siguiente.slicesamplethin - 1 El algoritmo de muestreo de sectores es una cadena de Markov, por lo que las muestras se correlacionan en serie. Para reducir la correlación serial, elija un valor mayor de.thin

Predeterminado: 1

'width'

Ancho del intervalo alrededor de la muestra actual, un escalar o un vector de valores positivos. comienza con este intervalo y busca una región adecuada que contenga los puntos de la evaluación a un valor lo suficientemente grande.slicesamplepdf

  • Si es un escalar y los ejemplos tienen varias dimensiones, se utiliza para cada dimensión.widthslicesamplewidth

  • Si es un vector, debe tener la misma longitud que.widthinitial

Predeterminado: 10

Argumentos de salida

rnd

-by-Matrix, donde cada fila es una muestra.nsampleslength(initial)

neval

Escalar, el número medio de evaluaciones de función por muestra. incluye las evaluaciones y no solo las evaluaciones de las muestras devueltas.nevalburninthinrnd Por lo tanto, el número total de evaluaciones de funciones es

.neval*(nsamples*thin + burnin)

Ejemplos

contraer todo

Este ejemplo muestra cómo generar muestras aleatorias a partir de una densidad multimodal utilizando.slicesample

Defina una función proporcional a una densidad multimodal.

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);

Genere 2000 muestras a partir de la densidad, utilizando un período de combustión de 1000, y manteniendo una de cada cinco muestras.

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

Trace un histograma de la muestra.

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

Escale la densidad para tener la misma área que el histograma y suprúdela en el histograma.

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

Las muestras parecen encajar bien en la distribución teórica, por lo que el valor parece adecuado.burnin

Sugerencias

  • No hay sugerencias definitivas para elegir los valores apropiados para, o.burninthinwidth Elija los valores iniciales de y, y aumente, si es necesario, para dar la independencia necesaria y distribuciones marginales.burninthin Consulte Neal para obtener detalles sobre el efecto del ajuste.[1]width

Algoritmos

En cada punto de la secuencia de muestras aleatorias, selecciona el siguiente punto al "rebanar" la densidad para formar una vecindad alrededor del punto anterior donde la densidad está por encima de algún valor.slicesample Por consiguiente, los puntos de muestreo no son independientes. Los puntos cercanos de la secuencia tienden a estar más juntos de lo que serían a partir de una muestra de valores independientes. Para muchos propósitos, todo el conjunto de puntos se puede utilizar como una muestra de la distribución de destino. Sin embargo, cuando este tipo de correlación serial es un problema, los parámetros y pueden ayudar a reducir esa correlación.burninthin

utiliza el algoritmo de muestreo de sectores de Neal.slicesample[1] Para la estabilidad numérica, convierte una función en una función.pdflogpdf El algoritmo para redimensionar la región de soporte para cada nivel, llamado "Stepping-out" y "Stepping-in", fue sugerido por Neal.

Referencias

[1] Neal, Radford M. Slice Sampling. Ann. Stat. Vol. 31, No. 3, pp. 705–767, 2003. Available at Project Euclid.

Introducido en R2006a