AdMitIS {AdMit} | R Documentation |
Performs importance sampling using an adaptive mixture of Student-t distributions as the importance density
AdMitIS(N=1e5, KERNEL, G=function(theta){theta}, mit=list(), ...)
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 . |
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
mu
Sigma
df
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
.
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
.
Further details and examples of the R package AdMit
can be found in Ardia, Hoogerheide, van Dijk (2008a,b). See also
the file ‘AdMitJSS.R’ in the package's folder.
Further information on importance sampling can be found in Geweke (1989) or Koop (2003).
David Ardia <david.ardia@unifr.ch>
Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2008a) `Adaptive mixture of Student-t distributions as a flexible candidate distribution for efficient simulation: The R package AdMit', Tinbergen Institute discussion paper 2008-062/4. http://www.tinbergen.nl/discussionpapers/08062.pdf
Ardia, D., Hoogerheide, L.F., van Dijk, H.K. (2008b) `The AdMit package', Econometric Institute report 2008-17. http://publishing.eur.nl/ir/repub/asset/13053/EI2008-17.pdf
Geweke, J.F. (1989) `Bayesian Inference in Econometric Models Using Monte Carlo Integration', Econometrica 57(6), pp.1317–1339. Reprinted in: Bayesian Inference, G. C. Box and N. Polson (Eds.), Edward Elgar Publishing, 1994.
Koop, G. (2003) Bayesian Econometrics, Wiley-Interscience (London, UK), first edition, 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.
## 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(GelmanMeng, mu0=c(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)