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.

mhsample

Metropolis-Hastings muestra

Sintaxis

smpl = mhsample(start,nsamples,'pdf',pdf,'proppdf',proppdf, 'proprnd',proprnd)
smpl = mhsample(...,'symmetric',sym)
smpl = mhsample(...,'burnin',K)
smpl = mhsample(...,'thin',m)
smpl = mhsample(...,'nchain',n)
[smpl,accept] = mhsample(...)

Descripción

smpl = mhsample(start,nsamples,'pdf',pdf,'proppdf',proppdf, 'proprnd',proprnd) Extrae muestras aleatorias de una distribución estacionaria de destino utilizando el algoritmo Metropolis-Hastings.nsamplespdf

es un vector de fila que contiene el valor inicial de la cadena de Markov, es un entero que especifica el número de muestras que se generarán y, y son los identificadores de función creados mediante. define la densidad de distribución de la propuesta y define el generador de números aleatorios para la distribución de la propuesta. y tome un argumento como entrada con el mismo tipo y tamaño que. toma dos argumentos como entradas con el mismo tipo y tamaño que.startnsamplespdfproppdfproprnd@proppdfproprndpdfproprndstartproppdfstart

es un vector de columna o matriz que contiene los ejemplos.smpl Si se prefiere la función de densidad de registro y se puede reemplazar con y.'pdf''proppdf''logpdf''logproppdf' Las funciones de densidad utilizadas en el algoritmo Metropolis-Hastings no se normalizan necesariamente.

La distribución de la propuesta (,) da la densidad de probabilidad para elegir como el siguiente punto cuando es el punto actual.qxyxy A veces se escribe como (|).qxy

Si el o satisface (,) = (,), es decir, la distribución de la propuesta es simétrica, implementa el muestreo de Random Walk Metropolis-Hastings.proppdflogproppdfqxyqyxmhsample Si el o satisface (,) = (), es decir, la distribución de la propuesta es independiente de los valores actuales, implementa el muestreo de Metropolis-Hastings independiente.proppdflogproppdfqxyqxmhsample

smpl = mhsample(...,'symmetric',sym) Extrae muestras aleatorias de una distribución estacionaria de destino utilizando el algoritmo Metropolis-Hastings. es un valor lógico que indica si la distribución de la propuesta es simétrica.nsamplespdfsym El valor predeterminado es false, que corresponde a la distribución de la propuesta asimétrica. Si es true, por ejemplo, la distribución de la propuesta es simétrica y es opcional.symproppdflogproppdf

smpl = mhsample(...,'burnin',K) genera una cadena de Markov con valores entre el punto de partida y elkth punto omitido en la secuencia generada. Los valores más allá delkth punto se mantienen. es un entero no negativo con valor predeterminado.k0

smpl = mhsample(...,'thin',m) genera una cadena de Markov con valores omitidos en la secuencia generada. es un entero positivo con el valor predeterminado de.m-1mm1

smpl = mhsample(...,'nchain',n) genera cadenas de Markov utilizando el algoritmo Metropolis-Hastings. es un entero positivo con un valor predeterminado de 1. es una matriz que contiene las muestras.nnsmpl La última dimensión contiene los índices de las cadenas individuales.

[smpl,accept] = mhsample(...) también devuelve, la tasa de aceptación de la distribución propuesta. es un escalar si se genera una cadena única y es un vector si se generan varias cadenas.acceptaccept

Ejemplos

contraer todo

Utilice el muestreo de Metropolis-Hastings independiente para estimar el segundo momento de orden de una distribución gamma.

rng default;  % For reproducibility alpha = 2.43; beta = 1; pdf = @(x)gampdf(x,alpha,beta); % Target distribution proppdf = @(x,y)gampdf(x,floor(alpha),floor(alpha)/alpha); proprnd = @(x)sum(...               exprnd(floor(alpha)/alpha,floor(alpha),1)); nsamples = 5000; smpl = mhsample(1,nsamples,'pdf',pdf,'proprnd',proprnd,...                 'proppdf',proppdf);

Graficar los resultados.

xxhat = cumsum(smpl.^2)./(1:nsamples)'; figure; plot(1:nsamples,xxhat)

Utilice el muestreo de Random Walk Metropolis-Hastings para generar datos de muestra a partir de una distribución normal estándar.

rng default  % For reproducibility delta = .5; pdf = @(x) normpdf(x); proppdf = @(x,y) unifpdf(y-x,-delta,delta); proprnd = @(x) x + rand*2*delta - delta;    nsamples = 15000; x = mhsample(1,nsamples,'pdf',pdf,'proprnd',proprnd,'symmetric',1);

Trace los datos de ejemplo.

figure; h = histfit(x,50); h(1).FaceColor = [.8 .8 1];

Introducido en R2006a