Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Metropolis-Hastings sample

```
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(...)

```
smpl = mhsample(start,nsamples,'pdf',pdf,'proppdf',proppdf,
'proprnd',proprnd)
```

draws `nsamples`

random
samples from a target stationary distribution `pdf`

using
the Metropolis-Hastings algorithm.

`start`

is a row vector containing the start
value of the Markov Chain, `nsamples`

is an integer
specifying the number of samples to be generated, and `pdf`

, `proppdf`

,
and `proprnd`

are function handles created using `@`

. `proppdf`

defines
the proposal distribution density, and `proprnd`

defines
the random number generator for the proposal distribution. `pdf`

and `proprnd`

take
one argument as an input with the same type and size as `start`

. `proppdf`

takes
two arguments as inputs with the same type and size as `start`

.

`smpl`

is a column vector or matrix containing
the samples. If the log density function is preferred, `'pdf'`

and `'proppdf'`

can
be replaced with `'logpdf'`

and `'logproppdf'`

.
The density functions used in Metropolis-Hastings algorithm are not
necessarily normalized.

The proposal distribution *q*(*x*,*y*)
gives the probability density for choosing *x* as
the next point when *y* is the current point. It
is sometimes written as *q*(*x*|*y*).

If the `proppdf`

or `logproppdf`

satisfies *q*(*x*,*y*)
= *q*(*y*,*x*),
that is, the proposal distribution is symmetric, `mhsample`

implements
Random Walk Metropolis-Hastings sampling. If the `proppdf`

or `logproppdf`

satisfies *q*(*x*,*y*)
= *q*(*x*), that is, the proposal
distribution is independent of current values, `mhsample`

implements
Independent Metropolis-Hastings sampling.

`smpl = mhsample(...,'symmetric',sym)`

draws `nsamples`

random
samples from a target stationary distribution `pdf`

using
the Metropolis-Hastings algorithm. `sym`

is a logical
value that indicates whether the proposal distribution is symmetric.
The default value is false, which corresponds to the asymmetric proposal
distribution. If `sym`

is true, for example, the
proposal distribution is symmetric, `proppdf`

and `logproppdf`

are
optional.

`smpl = mhsample(...,'burnin',K)`

generates
a Markov chain with values between the starting point and the `k`

^{th} point
omitted in the generated sequence. Values beyond the `k`

^{th} point
are kept. `k`

is a nonnegative integer with default
value of `0`

.

`smpl = mhsample(...,'thin',m)`

generates
a Markov chain with `m-1`

out of `m`

values
omitted in the generated sequence. `m`

is a positive
integer with default value of `1`

.

`smpl = mhsample(...,'nchain',n)`

generates `n`

Markov
chains using the Metropolis-Hastings algorithm. `n`

is
a positive integer with a default value of 1. `smpl`

is
a matrix containing the samples. The last dimension contains the indices
for individual chains.

`[smpl,accept] = mhsample(...)`

also returns `accept`

,
the acceptance rate of the proposed distribution. `accept`

is
a scalar if a single chain is generated and is a vector if multiple
chains are generated.

Was this topic helpful?