## Importance Sampling using an Adaptive Mixture of Student-t Distributions as the Importance Density

### Description

Performs importance sampling using an adaptive mixture of Student-t distributions as the importance density

### Usage

```AdMitIS(N = 1e5, KERNEL, G = function(theta){theta}, mit = list(), ...)
```

### Arguments

 `N` number of draws used in importance sampling (positive integer number). Default: `N = 1e5`. `KERNEL` kernel function of the target density on which the adaptive mixture of Student-t distributions is fitted. This function should be vectorized for speed purposes (i.e., its first argument should be a matrix and its output a vector). Moreover, the function must contain the logical argument `log`. If `log = TRUE`, the function returns (natural) logarithm values of the kernel function. `NA` and `NaN` values are not allowed. (See the function `AdMit` for examples of `KERNEL` implementation.) `G` function of interest used in importance sampling (see *Details*). `mit` list containing information on the mixture approximation (see *Details*). `...` further arguments to be passed to `KERNEL` and/or `G`.

### Details

The `AdMitIS` function estimates E_p[g(theta)], where p is the target density, g is an (integrable w.r.t. p) function and E denotes the expectation operator, by importance sampling using an adaptive mixture of Student-t distributions as the importance density.

By default, the function `G` is given by:

```    G <- function(theta)
{
theta
}
```

and therefore, `AdMitIS` estimates the mean of `theta` by importance sampling. For other definitions of `G`, see *Examples*.

The argument `mit` is a list containing information on the mixture approximation. The following components must be provided:

`p`

vector (of length H) of mixing probabilities.

`mu`

matrix (of size Hxd) containing the vectors of modes (in row) of the mixture components.

`Sigma`

matrix (of size Hxd*d) containing the scale matrices (in row) of the mixture components.

`df`

degrees of freedom parameter of the Student-t components (real number not smaller than one).

where H (>=1) is the number of components of the adaptive mixture of Student-t distributions and d (>=1) is the dimension of the first argument in `KERNEL`. Typically, `mit` is estimated by the function `AdMit`.

### Value

A list with the following components:

`ghat`: a vector containing the importance sampling estimates. `NSE`: a vector containing the numerical standard error of the components of `ghat`. `RNE`: a vector containing the relative numerical efficiency of the components of `ghat`.

### Note

Further details and examples of the R package `AdMit` can be found in Ardia, Hoogerheide, van Dijk (2009a,b). See also the package vignette by typing `vignette("AdMit")`.

Further information on importance sampling can be found in Geweke (1989) or Koop (2003).

Please cite the package in publications. Use `citation("AdMit")`.

David Ardia

### References

Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2009a). AdMit: Adaptive Mixture of Student-t Distributions. R Journal 1(1), pp.25-30. doi: 10.32614/RJ-2009-003

Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2009b). Adaptive Mixture of Student-t Distributions as a Flexible Candidate Distribution for Efficient Simulation: The R Package AdMit. Journal of Statistical Software 29(3), pp.1-32. doi: 10.18637/jss.v029.i03

Geweke, J.F. (1989). Bayesian Inference in Econometric Models Using Monte Carlo Integration. Econometrica 57(6), pp.1317-1339.

Koop, G. (2003). Bayesian Econometrics. Wiley-Interscience (London, UK). ISBN: 0470845678.

`AdMit` for fitting an adaptive mixture of Student-t distributions to a target density through its `KERNEL` function, `AdMitMH` for the independence chain Metropolis-Hastings algorithm using an adaptive mixture of Student-t distributions as the candidate density.

### Examples

```  ## NB : Low number of draws for speedup. Consider using more draws!
## Gelman and Meng (1991) kernel function
GelmanMeng <- function(x, A = 1, B = 0, C1 = 3, C2 = 3, log = TRUE)
{
if (is.vector(x))
x <- matrix(x, nrow = 1)
r <- -.5 * (A * x[,1]^2 * x[,2]^2 + x[,1]^2 + x[,2]^2
- 2 * B * x[,1] * x[,2] - 2 * C1 * x[,1] - 2 * C2 * x[,2])
if (!log)
r <- exp(r)
as.vector(r)
}

## Run the AdMit function to fit the mixture approximation
set.seed(1234)