Learn R Programming

spaMM (version 1.4.1)

predict: Prediction from a model fit.

Description

Predictions of the response variable, based on given values of the predictor variables for fixed effects, and/or on predicted random effects.

Usage

## S3 method for class 'HLfit':
predict(
                 object,newX = NULL,coeffs=NULL,re.form= NULL,
                 variances=list(fixef=FALSE,ranef=FALSE,resid=FALSE,sum=FALSE,cov=FALSE),
                 predVar=variances$ranef,residVar=variances$resid,
                 binding = if(is.vector(newX)) {FALSE} else {"fitted"},...)

Arguments

object
The return object of an HLfit or similar function.
newX
Either a matrix or data frame containing all required variables for evaluating fixed and random effects, including an offset. If NULL, the original data are reused. or a numeric vector, which names (if any) are ignored.
coeffs
Precomputed coefficients for the prediction (see Details).
re.form
formula for random effects to include. If NULL, include all random effects; if NA, include no random effects
variances
A list which elements control whether to compute different estimated variances (and their sum). fixef=TRUE will provide the variances of X$\beta$; ranef=TRUE will provide the prediction variance of the random effects;
predVar
(for back-compatibility: variances should now be used) predVar=TRUE corresponds to variances=list(ranef=TRUE), and predVar="Cov" corresponds to variances=list(ranef=TRUE,cov=TRUE).
residVar
(for back-compatibility: variances should now be used) residVar=TRUE corresponds to variances=list(resid=TRUE).
binding
If binding is a valid variable name for a data frame, the predicted values are bound (under the given name) with the data frame used for prediction and the resulting frame is returned. If binding is FALSE, The
...
further arguments passed to or from other methods.

Value

  • A matrix or data frame (according to the binding argument), with optionally one or more prediction variance vector or (co)variance matrices as attributes.

Details

If newX is NULL, predict only returns the fitted responses, including random effects, from the object. Otherwise it computes new predictions including random effects as far as possible. For spatial random effects it constructs a correlation matrix C between new locations and locations in the original fit. Then it infers the random effects in the new locations as C (L'$)^{-1}$ v (see spaMM for notation). If the predictor is used many times, it may be useful to precompute (L'$)^{-1}$ v and to provide this vector through the coeffs argument (see Examples). For non-spatial random effects, it checks whether any group (i.e., level of a random effect) in the new data was represented in the original data, and it adds the inferred random effect for this group to the prediction for individuals in this group. The prediction variance is the variance of the linear predictor ($\eta$). "predVar" is the prediction variance of the random effect terms in ($\eta$). It takes into account the uncertainty in estimation of $\beta$, and is computed as described in Gotway and Wolfinger (2003) based on earlier works for LMMs. Unobserved levels of non-spatial random effects are handled as follows. In the point prediction of the linear predictor, the expected value of $u$ is assigned to the realizations of $u$ for unobserved groups (this value is 0 in LMMs). Corresponding realizations of $v$ are then deduced using the link function(s) for the random effects (the identity link in LMMs). The same computation is performed in all other models, for good or bad. For prediction covariance, it matters whether a single or multiple new levels are used: see Examples.

References

Gotway, C.A., Wolfinger, R.D. (2003) Spatial prediction of counts and rates. Statistics in Medicine 22: 1415-1432.

Examples

Run this code
data(blackcap)
fitobject <- corrHLfit(migStatus ~ 1 + Matern(1|latitude+longitude),data=blackcap,
                       ranFix=list(nu=4,rho=0.4,phi=0.05))
predict(fitobject)

predict(fitobject,blackcap) ## same computation, different format 

## same result using precomputed 'coeffs':
coeffs <- predictionCoeffs(fitobject) ## using dedicated extractor function
predict(fitobject,coeffs=coeffs,variances=list(sum=TRUE)) -> pf
attr(pf,"sumVar")


###### handling of unobserved groups
## (1) fit with an additional random effect
grouped <- cbind(blackcap,grp=c(rep(1,7),rep(2,7))) 
fitobject <- corrHLfit(migStatus ~ 1 +  (1|grp) +Matern(1|latitude+longitude),
                       data=grouped,  ranFix=list(nu=4,rho=0.4,phi=0.05))
## (2) comparison of covariance matrices for two types of new data
moregroups <- grouped[1:5,]
rownames(moregroups) <- paste("newloc",1:5,sep="")
moregroups$grp <- rep(3,5) ## all new data belong to an unobserved third group 
cov1 <- attr(predict(fitobject,newX=moregroups,
                     variances=list(ranef=TRUE,cov=TRUE)),"predVar")
moregroups$grp <- 3:7 ## all new data belong to distinct unobserved groups
cov2 <- attr(predict(fitobject,newX=moregroups,
                     variances=list(ranef=TRUE,cov=TRUE)),"predVar")
cov1-cov2 ## the expected off-diagonal covariance due to the common group in the first fit.

## Effects of numerically singular correlation matrix C:
fitobject <- corrHLfit(migStatus ~ 1 + Matern(1|latitude+longitude),data=blackcap,
                       ranFix=list(nu=10,rho=0.001)) ## numerically singular C
predict(fitobject) ## predicted mu computed as X beta + L v 
predict(fitobject,newX=blackcap) ## predicted mu computed as X beta + C

Run the code above in your browser using DataLab