R: Extract Predictions from a Model Object

prediction-package {prediction} | R Documentation

## Extract Predictions from a Model Object

### Description

Extract predicted values via `predict` from a model object, conditional on data, and return a data frame.

### Usage

    prediction(model, ...)

    ## Default S3 method:
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'Arima'
    prediction(model, calculate_se = TRUE, ...)

    ## S3 method for class 'Gam'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link", "terms"), calculate_se = TRUE,
      ...)

    ## S3 method for class 'ar'
    prediction(model, data, at = NULL, calculate_se = TRUE, ...)

    ## S3 method for class 'arima0'
    prediction(model, data, at = NULL, calculate_se = TRUE,
      ...)

    ## S3 method for class 'betareg'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link", "precision", "variance",
      "quantile"), calculate_se = FALSE, ...)

    ## S3 method for class 'bigLm'
    prediction(model, data = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'bigglm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'biglm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'bruto'
    prediction(model, data = NULL, at = NULL, type = "fitted",
      calculate_se = FALSE, ...)

    ## S3 method for class 'clm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = TRUE, category, ...)

    ## S3 method for class 'coxph'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("risk", "expected", "lp"), calculate_se = TRUE, ...)

    ## S3 method for class 'crch'
    prediction(model, data = find_data(model), at = NULL,
      type = c("response", "location", "scale", "quantile"),
      calculate_se = FALSE, ...)

    ## S3 method for class 'earth'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, category,
      ...)

    ## S3 method for class 'fda'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'gausspr'
    prediction(model, data, at = NULL, type = NULL,
      calculate_se = TRUE, category, ...)

    ## S3 method for class 'gee'
    prediction(model, calculate_se = FALSE, ...)

    ## S3 method for class 'glimML'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, ...)

    ## S3 method for class 'glimQL'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, ...)

    ## S3 method for class 'glm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, ...)

    ## S3 method for class 'glmx'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = FALSE, ...)

    ## S3 method for class 'gls'
    prediction(model, data = find_data(model), at = NULL,
      calculate_se = FALSE, ...)

    ## S3 method for class 'hetglm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link", "scale"), calculate_se = FALSE,
      ...)

    ## S3 method for class 'hurdle'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "count", "prob", "zero"),
      calculate_se = FALSE, ...)

    ## S3 method for class 'hxlr'
    prediction(model, data = find_data(model), at = NULL,
      type = c("class", "probability", "cumprob", "location", "scale"),
      calculate_se = FALSE, ...)

    ## S3 method for class 'ivreg'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'knnreg'
    prediction(model, data, at = NULL, calculate_se = FALSE,
      ...)

    ## S3 method for class 'kqr'
    prediction(model, data, at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'ksvm'
    prediction(model, data, at = NULL, type = NULL,
      calculate_se = TRUE, category, ...)

    ## S3 method for class 'lm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'lme'
    prediction(model, data = find_data(model), at = NULL,
      calculate_se = FALSE, ...)

    ## S3 method for class 'loess'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'lqs'
    prediction(model, data = find_data(model), at = NULL,
      calculate_se = FALSE, ...)

    ## S3 method for class 'mars'
    prediction(model, data = NULL, at = NULL, type = "fitted",
      calculate_se = FALSE, ...)

    ## S3 method for class 'mca'
    prediction(model, data = find_data(model), at = NULL,
      calculate_se = FALSE, ...)

    ## S3 method for class 'mclogit'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, ...)

    ## S3 method for class 'merMod'
    prediction(model, data = find_data(model), at = NULL,
      type = c("response", "link"), calculate_se = FALSE, ...)

    ## S3 method for class 'mnlogit'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'mnp'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'multinom'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'nls'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'nnet'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'plm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'polr'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'polyreg'
    prediction(model, data = NULL, at = NULL,
      type = "fitted", calculate_se = FALSE, ...)

    ## S3 method for class 'ppr'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'princomp'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'rlm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = TRUE, ...)

    ## S3 method for class 'rpart'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = NULL, calculate_se = FALSE, category, ...)

    ## S3 method for class 'rq'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = TRUE, ...)

    ## S3 method for class 'selection'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = "response", calculate_se = FALSE, ...)

    ## S3 method for class 'speedglm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = FALSE, ...)

    ## S3 method for class 'speedlm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, calculate_se = FALSE, ...)

    ## S3 method for class 'survreg'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "lp", "quantile", "uquantile"),
      calculate_se = TRUE, ...)

    ## S3 method for class 'svm'
    prediction(model, data = NULL, at = NULL,
      calculate_se = TRUE, category, ...)

    ## S3 method for class 'svyglm'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "link"), calculate_se = TRUE, ...)

    ## S3 method for class 'train'
    prediction(model, data = find_data(model), at = NULL,
      type = c("raw", "prob"), ...)

    ## S3 method for class 'truncreg'
    prediction(model, data, at = NULL, calculate_se = FALSE,
      ...)

    ## S3 method for class 'zeroinfl'
    prediction(model, data = find_data(model, parent.frame()),
      at = NULL, type = c("response", "count", "prob", "zero"),
      calculate_se = FALSE, ...)

### Arguments

`model` | A model object, perhaps returned by `lm` or `glm`.
`...` | Additional arguments passed to `predict` methods.
`data` | A data.frame over which to calculate marginal effects. If missing, `find_data` is used to specify the data frame.
`at` | A list of one or more named vectors, specifically values at which to calculate the predictions. These are used to modify the value of `data` (see `build_datalist` for details on use).
`type` | A character string indicating the type of marginal effects to estimate. Mostly relevant for non-linear models, where the reasonable options are “response” (the default) or “link” (i.e., on the scale of the linear predictor in a GLM). For models of class “polr” (from `polr`), possible values are “class” or “probs”; both are returned.
`calculate_se` | A logical indicating whether to calculate standard errors (if possible). The output will always contain a “calculate_se” column regardless of this value; this only controls the calculation of standard errors. Setting it to `FALSE` may improve speed.
`category` | For multi-level or multi-category outcome models (e.g., ordered probit, multinomial logit, etc.), a value specifying which of the outcome levels should be used for the `"fitted"` column. If missing, some default is chosen automatically.

### Details

This function is simply a wrapper around `predict` that returns a data frame containing the value of `data` and the predicted values with respect to all variables specified in `data`.

Methods are currently implemented for the following object classes:

- “lm”, see `lm`

- “glm”, see `glm`, `glm.nb`, `glmx`, `hetglm`, `brglm`

- “ar”, see `ar`

- “Arima”, see `arima`

- “arima0”, see `arima0`

- “bigglm”, see `bigglm` (including “ffdf”-backed models provided by `bigglm.ffdf`)

- “biglm”, see `biglm` (including “ffdf”-backed models provided by `bigglm.ffdf`)

- “bigLm”, see `bigLm`

- “betareg”, see `betareg`

- “bruto”, see `bruto`

- “clm”, see `clm`

- “coxph”, see `coxph`

- “crch”, see `crch`

- “earth”, see `earth`

- “fda”, see `fda`

- “Gam”, see `gam`

- “gausspr”, see `gausspr`

- “gee”, see `gee`

- “gls”, see `gls`

- “glimML”, see `betabin`, `negbin`

- “glimQL”, see `quasibin`, `quasipois`

- “hurdle”, see `hurdle`

- “hxlr”, see `hxlr`

- “ivreg”, see `ivreg`

- “knnreg”, see `knnreg`

- “kqr”, see `kqr`

- “ksvm”, see `ksvm`

- “lda”, see `lda`

- “lme”, see `lme`

- “loess”, see `loess`

- “lqs”, see `lqs`

- “mars”, see `mars`

- “mca”, see `mca`

- “mclogit”, see `mclogit`

- “mda”, see `mda`

- “merMod”, see `lmer`, `glmer`

- “mnlogit”, see `mnlogit`

- “mnp”, see `mnp`

- “naiveBayes”, see `naiveBayes`

- “nlme”, see `nlme`

- “nls”, see `nls`

- “nnet”, see `nnet`

- “plm”, see `plm`

- “polr”, see `polr`

- “polyreg”, see `polyreg`

- “ppr”, see `ppr`

- “princomp”, see `princomp`

- “qda”, see `qda`

- “rlm”, see `rlm`

- “rpart”, see `rpart`

- “rq”, see `rq`

- “selection”, see `selection`

- “speedglm”, see `speedglm`

- “speedlm”, see `speedlm`

- “survreg”, see `survreg`

- “svm”, see `svm`

- “svyglm”, see `svyglm`

- “tobit”, see `tobit`

- “train”, see `train`

- “truncreg”, see `truncreg`

- “zeroinfl”, see `zeroinfl`

### Value

A data frame with class “prediction” that has a number of rows equal to number of rows in `data`, or a multiple thereof, if `!is.null(at)`. The return value contains `data` (possibly modified by `at` using `build_datalist`), plus a column containing fitted/predicted values (`"fitted"`) and a column containing the standard errors thereof (`"calculate_se"`). Additional columns may be reported depending on the object class.

### See Also

`find_data`, `build_datalist`, `mean_or_mode`, `seq_range`

### Examples

    require("datasets")
    x <- lm(Petal.Width ~ Sepal.Length * Sepal.Width * Species, data = iris)
    # prediction for every case
    prediction(x)

    # prediction for first case
    prediction(x, iris[1,])

    # basic use of 'at' argument
    prediction(x, at = list(Species = c("setosa", "virginica")))

    # prediction at means/modes of input variables
    prediction(x, at = lapply(iris, mean_or_mode))

    # prediction with multi-category outcome
    ## Not run:
      library("mlogit")
      data("Fishing", package = "mlogit")
      Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
      mod <- mlogit(mode ~ price + catch, data = Fish)
      prediction(mod)
      prediction(mod, category = 3)

    ## End(Not run)

[Package prediction version 0.3.2 Index]