Perform leave-one-out cross validation with options for computationally efficient approximations for big data.

loocv(object, ...)

# S3 method for splm
loocv(object, cv_predict = FALSE, se.fit = FALSE, local, ...)

# S3 method for spautor
loocv(object, cv_predict = FALSE, se.fit = FALSE, local, ...)

# S3 method for spglm
loocv(
  object,
  cv_predict = FALSE,
  type = c("link", "response"),
  se.fit = FALSE,
  local,
  ...
)

# S3 method for spgautor
loocv(
  object,
  cv_predict = FALSE,
  type = c("link", "response"),
  se.fit = FALSE,
  local,
  ...
)

Arguments

object

A fitted model object from splm(), spautor(), spglm(), or spgautor().

...

Other arguments. Not used (needed for generic consistency).

cv_predict

A logical indicating whether the leave-one-out fitted values should be returned. Defaults to FALSE. If object is from spglm() or spgautor(), the fitted values returned are on the link scale.

se.fit

A logical indicating whether the leave-one-out prediction standard errors should be returned. Defaults to FALSE. If object is from spglm() or spgautor(), the standard errors correspond to the fitted values returned on the link scale.

local

A list or logical. If a list, specific list elements described in predict.spmodel() control the big data approximation behavior. If a logical, TRUE chooses default list elements for the list version of local as specified in predict.spmodel(). Defaults to FALSE, which performs exact computations.

type

The scale (response or link) of predictions obtained when cv_predict = TRUE and using spglm() or spgautor objects.

Value

If cv_predict = FALSE and se.fit = FALSE, a fit statistics tibble (with bias, MSPE, RMSPE, and cor2; see Details). If cv_predict = TRUE or se.fit = TRUE, a list with elements: stats, a fit statistics tibble (with bias, MSPE, RMSPE, and cor2; see Details); cv_predict, a numeric vector with leave-one-out predictions for each observation (if cv_predict = TRUE); and se.fit, a numeric vector with leave-one-out prediction standard errors for each observation (if se.fit = TRUE).

Details

Each observation is held-out from the data set and the remaining data are used to make a prediction for the held-out observation. This is compared to the true value of the observation and several fit statistics are computed: bias, mean-squared-prediction error (MSPE), root-mean-squared-prediction error (RMSPE), and the squared correlation (cor2) between the observed data and leave-one-out predictions (regarded as a prediction version of r-squared appropriate for comparing across spatial and nonspatial models). Generally, bias should be near zero for well-fitting models. The lower the MSPE and RMSPE, the better the model fit (according to the leave-out-out criterion). The higher the cor2, the better the model fit (according to the leave-out-out criterion). cor2 is not returned when object was fit using spglm() or spgautor(), as it is only applicable here for linear models.

Examples

spmod <- splm(z ~ water + tarp,
  data = caribou,
  spcov_type = "exponential", xcoord = x, ycoord = y
)
loocv(spmod)
#> # A tibble: 1 × 4
#>      bias   MSPE RMSPE  cor2
#>     <dbl>  <dbl> <dbl> <dbl>
#> 1 0.00373 0.0353 0.188 0.218
loocv(spmod, cv_predict = TRUE, se.fit = TRUE)
#> $stats
#> # A tibble: 1 × 4
#>      bias   MSPE RMSPE  cor2
#>     <dbl>  <dbl> <dbl> <dbl>
#> 1 0.00373 0.0353 0.188 0.218
#> 
#> $cv_predict
#>  [1] 1.976891 2.279097 2.104800 2.001062 2.252981 2.081761 2.036528 1.906351
#>  [9] 2.209990 1.920595 1.953973 2.197366 1.941609 2.149225 2.029657 2.073248
#> [17] 2.148203 2.023779 2.100568 1.929728 2.000196 1.782930 1.907800 2.191920
#> [25] 1.915703 1.917835 2.269514 1.941046 1.801330 2.120519
#> 
#> $se.fit
#>  [1] 0.1948550 0.1908319 0.1902988 0.1966091 0.2011680 0.1929935 0.1896957
#>  [8] 0.1828196 0.1827176 0.1901259 0.1852316 0.1842182 0.1836098 0.1843557
#> [15] 0.1869189 0.1852316 0.1842182 0.1836098 0.1843557 0.1869189 0.1929935
#> [22] 0.1896957 0.1828196 0.1827176 0.1901259 0.1948550 0.1908319 0.1902988
#> [29] 0.1966091 0.2011680
#>