Skip to contents

After fitting a PrestoGP model, this method can be used to make predictions on an independent test set (consisting of both new locations and new values of the predictor variables).

Usage

prestogp_predict(
  model,
  X = "matrix",
  locs = "matrix",
  m = "numeric",
  ordering.pred = c("obspred", "general"),
  pred.cond = c("independent", "general"),
  return.values = c("mean", "meanvar")
)

# S4 method for class 'VecchiaModel'
prestogp_predict(
  model,
  X = "matrix",
  locs = "matrix",
  m = NULL,
  ordering.pred = c("obspred", "general"),
  pred.cond = c("independent", "general"),
  return.values = c("mean", "meanvar")
)

# S4 method for class 'FullModel'
prestogp_predict(
  model,
  X = "matrix",
  locs = "matrix",
  m = NULL,
  ordering.pred = c("obspred", "general"),
  pred.cond = c("independent", "general"),
  return.values = c("mean", "meanvar")
)

# S4 method for class 'MultivariateVecchiaModel'
prestogp_predict(
  model,
  X = "matrix",
  locs = "matrix",
  m = NULL,
  ordering.pred = c("obspred", "general"),
  pred.cond = c("independent", "general"),
  return.values = c("mean", "meanvar")
)

Arguments

model

A PrestoGP model object obtained after running link{prestogp_fit}.

X

The values of the predictor variable(s) for which prediction will be performed. Should be a matrix for univariate models or a list for multivariate models.

locs

The locations where prediction will be performed. Should be a matrix for univariate models or a list for multivariate models.

m

The number of neighbors to condition on. If not specified, it will default to the value of m used to fit the model.

ordering.pred

Should "obspred" or "general" ordering be used for prediction? See vecchia_specify or vecchia_Mspecify. Defaults to "obspred".

pred.cond

Should prediction conditioning be "general" or "indepedent"? See vecchia_specify or vecchia_Mspecify. Defaults to "independent".

return.values

Values that should be returned. Possible values include "mean" and "meanvar". See vecchia_prediction or vecchia_Mprediction. Defaults to "mean".

Value

A list containing the estimated mean values and (if requested) standard deviations for the predictions.

Details

It is important to note that the variance estimates produced by this function assume that the Matern covariance parameters are fixed and known. It does not consider any variance resulting from estimating the covariance parameters or the regression coefficients in PrestoGP models. These variance estimates will be anticonservative in such cases (and a warning will be returned when these estimates are calculated).

Prediction is currently not implemented for full models. This function will return an error if it is applied to a full model.

References

  • Katzfuss, M., and Guinness, J. "A general framework for Vecchia approximations of Gaussian processes", Statistical Science (2021) 36(1):124-141.

  • Katzfuss, M., Guinness, J., Gong, W. and Zilber, D. "Vecchia approximations of Gaussian-process predictions", Journal of Agricultural, Biological and Environmental Statistics (2020) 25:383-414.

  • Messier, K.P. and Katzfuss, M. "Scalable penalized spatiotemporal land-use regression for ground-level nitrogen dioxide", The Annals of Applied Statistics (2021) 15(2):688-710.

Examples

data(soil)
soil <- soil[!is.na(soil[,5]),] # remove rows with NA's
y <- soil[,4]                   # predict moisture content
X <- as.matrix(soil[,5:9])
locs <- as.matrix(soil[,1:2])

# Create training and test sets
n <- length(y)
otr <- rep(FALSE, n)
otr[sample(1:n, size=floor(n/2))] <- TRUE
otst <- !otr

# Fit the model on the training set
soil.vm <- new("VecchiaModel", n_neighbors = 10)
soil.vm <- prestogp_fit(soil.vm, y[otr], X[otr,], locs[otr,])
#> 
#> Beginning iteration 1 
#> Estimating theta... 
#> Estimation of theta complete 
#> Estimating beta... 
#> Estimation of beta complete 
#> Iteration 1 complete 
#> Current penalized likelihood: 247.6847 
#> Current MSE: 8.402037 
#> Beginning iteration 2 
#> Estimating theta... 
#> Estimation of theta complete 
#> Estimating beta... 
#> Estimation of beta complete 
#> Iteration 2 complete 
#> Current penalized likelihood: 246.3209 
#> Current MSE: 8.40214 
#> Beginning iteration 3 
#> Estimating theta... 
#> Estimation of theta complete 
#> Estimating beta... 
#> Estimation of beta complete 
#> Iteration 3 complete 
#> Current penalized likelihood: 246.2636 
#> Current MSE: 8.403128 
#> Beginning iteration 4 
#> Estimating theta... 
#> Estimation of theta complete 
#> Estimating beta... 
#> Estimation of beta complete 
#> Iteration 4 complete 
#> Current penalized likelihood: 246.2629 
#> Current MSE: 8.403154 
#> Beginning iteration 5 
#> Estimating theta... 
#> Estimation of theta complete 
#> Estimating beta... 
#> Estimation of beta complete 
#> Iteration 5 complete 
#> Current penalized likelihood: 246.2629 
#> Current MSE: 8.403154 

# Perform predictions on the test set
soil.yhat <- prestogp_predict(soil.vm, X[otst,], locs[otst,])