nsgpPredict: Posterior prediction for the NSGP In BayesNSGP: Bayesian Analysis of Non-Stationary Gaussian Process Models

Description

nsgpPredict conducts posterior prediction for MCMC samples generated using nimble and nsgpModel.

Usage

 1 2 3 4 5 6 7 8 9 nsgpPredict( model, samples, coords.predict, predict.process = TRUE, constants, seed = 0, ... )

Arguments

 model A NSGP nimble object; the output of nsgpModel. samples A matrix of J rows, each is an MCMC sample of the parameters corresponding to the specification in nsgpModel. coords.predict M x d matrix of prediction coordinates. predict.process Logical; determines whether the prediction corresponds to the y(·) process (TRUE) or z(·) (FALSE; this would likely only be used for, e.g., cross-validation). constants An optional list of contants to use for prediction; alternatively, additional arguments can be passed to the function via the ... argument. seed An optional random seed argument for reproducibility. ... Additional arguments can be passed to the function; for example, as an alternative to the constants list, items can be passed directly via this argument.

Value

The output of the function is a list with two elements: obs, a matrix of J posterior predictive samples for the N observed locations (only for likelihood = "SGV", which produces predictions for the observed locations by default; this element is NULL otherwise); and pred, a corresponding matrix of posterior predictive samples for the prediction locations. Ordering and neighbor selection for the prediction coordinates in the SGV likelihood are conducted internally, as with nsgpModel.

Examples

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # Generate some data: stationary/isotropic N <- 100 coords <- matrix(runif(2*N), ncol = 2) alpha_vec <- rep(log(sqrt(1)), N) # Log process SD delta_vec <- rep(log(sqrt(0.05)), N) # Log nugget SD Sigma11_vec <- rep(0.4, N) # Kernel matrix element 1,1 Sigma22_vec <- rep(0.4, N) # Kernel matrix element 2,2 Sigma12_vec <- rep(0, N) # Kernel matrix element 1,2 mu_vec <- rep(0, N) # Mean nu <- 0.5 # Smoothness dist_list <- nsDist(coords) Cor_mat <- nsCorr( dist1_sq = dist_list\$dist1_sq, dist2_sq = dist_list\$dist2_sq, dist12 = dist_list\$dist12, Sigma11 = Sigma11_vec, Sigma22 = Sigma22_vec, Sigma12 = Sigma12_vec, nu = nu ) Cov_mat <- diag(exp(alpha_vec)) %*% Cor_mat %*% diag(exp(alpha_vec)) D_mat <- diag(exp(delta_vec)^2) set.seed(110) data <- as.numeric(mu_vec + t(chol(Cov_mat + D_mat)) %*% rnorm(N)) # Set up constants constants <- list( nu = 0.5, Sigma_HP1 = 2 ) # Defaults: tau_model = "constant", sigma_model = "constant", mu_model = "constant", # and Sigma_model = "constant" Rmodel <- nsgpModel(likelihood = "fullGP", constants = constants, coords = coords, data = data ) conf <- configureMCMC(Rmodel) Rmcmc <- buildMCMC(conf) Cmodel <- compileNimble(Rmodel) Cmcmc <- compileNimble(Rmcmc, project = Rmodel) samples <- runMCMC(Cmcmc, niter = 200, nburnin = 100) # Prediction predCoords <- as.matrix(expand.grid(seq(0,1,l=10),seq(0,1,l=10))) postpred <- nsgpPredict( model = Rmodel, samples = samples, coords.predict = predCoords )

BayesNSGP documentation built on Jan. 9, 2022, 9:07 a.m.