`newdata`

argument of the `marginaleffects`

or `predictions`

functions.`R/datagrid.R`

`datagrid.Rd`

Generate a data grid of "typical," "counterfactual," or user-specified values for use in the `newdata`

argument of the `marginaleffects`

or `predictions`

functions.

- ...
named arguments with vectors of values for user-specified variables. The output will include all combinations of these variables (see Examples below.)

- model
Model object

- newdata
data.frame (one and only one of the

`model`

and`newdata`

arguments- grid_type
character

"typical": variables whose values are not explicitly specified by the user in

`...`

are set to their mean or mode, or to the output of the functions supplied to`FUN_type`

arguments."counterfactual": the entire dataset is duplicated for each combination of the variable values specified in

`...`

. Variables not explicitly supplied to`datagrid()`

are set to their observed values in the original dataset.

- FUN_character
the function to be applied to character variables.

- FUN_factor
the function to be applied to factor variables.

- FUN_logical
the function to be applied to factor variables.

- FUN_numeric
the function to be applied to numeric variables.

- FUN_other
the function to be applied to other variable types.

A `data.frame`

in which each row corresponds to one combination of the named
predictors supplied by the user via the `...`

dots. Variables which are not
explicitly defined are held at their mean or mode.

If `datagrid`

is used in a `marginaleffects`

or `predictions`

call as the
`newdata`

argument, users do not need to specify the `model`

or `newdata`

argument. The data is extracted automatically from the model.

If users supply a model, the data used to fit that model is retrieved using
the `insight::get_data`

function.

```
# The output only has 2 rows, and all the variables except `hp` are at their
# mean or mode.
datagrid(newdata = mtcars, hp = c(100, 110))
#> mpg cyl disp drat wt qsec vs am gear
#> 1: 20.09062 6.1875 230.7219 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875
#> 2: 20.09062 6.1875 230.7219 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875
#> carb hp
#> 1: 2.8125 100
#> 2: 2.8125 110
# We get the same result by feeding a model instead of a data.frame
mod <- lm(mpg ~ hp, mtcars)
datagrid(model = mod, hp = c(100, 110))
#> hp
#> 1: 100
#> 2: 110
# Use in `marginaleffects` to compute "Typical Marginal Effects". When used
# in `marginaleffects()` or `predictions()` we do not need to specify the
#`model` or `newdata` arguments.
marginaleffects(mod, newdata = datagrid(hp = c(100, 110)))
#> rowid type term dydx std.error statistic p.value conf.low
#> 1 1 response hp -0.06822828 0.01011930 -6.742390 1.558018e-11 -0.08806174
#> 2 2 response hp -0.06822828 0.01011878 -6.742737 1.554304e-11 -0.08806072
#> conf.high hp
#> 1 -0.04839481 100
#> 2 -0.04839583 110
# The full dataset is duplicated with each observation given counterfactual
# values of 100 and 110 for the `hp` variable. The original `mtcars` includes
# 32 rows, so the resulting dataset includes 64 rows.
dg <- datagrid(newdata = mtcars, hp = c(100, 110), grid_type = "counterfactual")
nrow(dg)
#> [1] 64
# We get the same result by feeding a model instead of a data.frame
mod <- lm(mpg ~ hp, mtcars)
dg <- datagrid(model = mod, hp = c(100, 110), grid_type = "counterfactual")
nrow(dg)
#> [1] 64
```