AdMitIS {AdMit}R Documentation

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 (2008, 2009). See also the package vignette by typing vignette("AdMit") and the files ‘AdMitJSS.txt’ and ‘AdMitRnews.txt’ in the ‘/doc’ package's folder.

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

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

Author(s)

David Ardia <david.ardia@unifr.ch>

References

Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2008). The AdMit Package. Econometric Institute report 2008-17. http://publishing.eur.nl/ir/repub/asset/13053/EI2008-17.pdf (forthcoming in Rnews)

Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2009). Adaptive Mixture of Student-t Distributions as a Flexible Candidate Distribution for Efficient Simulation: The R Package AdMit. Journal of Statistical Software 29(3). http://www.jstatsoft.org/v29/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.

See Also

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

  ## 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)
  outAdMit <- AdMit(KERNEL = GelmanMeng, 
                    mu0 = c(0.0, 0.1))

  ## Use importance sampling with the mixture approximation as the
  ## importance density
  outAdMitIS <- AdMitIS(KERNEL = GelmanMeng, mit = outAdMit$mit)
  print(outAdMitIS)

  ## Covariance matrix estimated by importance sampling
  G.cov <- function(theta, mu)
  {
    G.cov_sub <- function(x)
      (x - mu) 

    theta <- as.matrix(theta)
    tmp <- apply(theta, 1, G.cov_sub)
    if (length(mu) > 1)
      t(tmp)
    else
      as.matrix(tmp)
  }

  outAdMitIS <- AdMitIS(KERNEL = GelmanMeng, 
                        G = G.cov, 
                        mit = outAdMit$mit,
                        mu = c(1.459, 1.459))
  print(outAdMitIS)

  ## Covariance matrix
  V <- matrix(outAdMitIS$ghat, 2, 2)
  print(V)
  
  ## Correlation matrix
  cov2cor(V)

[Package AdMit version 1-01.01 Index]