`draw.gam()`

with`scales = "fixed"`

now applies to all terms that can be plotted, including 2d smooths.Reported by @StefanoMezzini #73

`dplyr::combine()`

was deprecated. Switch to`vctrs::vec_c()`

.`draw.gam()`

with`scales = "fixed"`

wasn’t using fixed scales where 2d smooths were in the model.Reported by @StefanoMezzini #73

`draw.gam()`

can now include partial residuals when drawing univariate smooths. Use`residuals = TRUE`

to add partial residuals to each univariate smooth that is drawn. This feature is not available for smooths of more than one variable, by smooths, or factor-smooth interactions (`bs = "fs"`

).The coverage of credible and ocnfidence intervals drawn by

`draw.gam()`

can be specified via argument`ci_level`

. The default is arbitrarily`0.95`

for no other reason than (rough) compatibility with`plot.gam()`

.This chance has had the effect of making the intervals slightly narrower than in previous versions of

*gratia*; intervals were drawn at ± 2 × the standard error. The default intervals are now drawn at ± ~1.96 × the standard error.New function

`difference_smooth()`

for computing differences between factor smooth interactions. Methods available for`gam()`

,`bam()`

,`gamm()`

and`gamm4::gamm4()`

. Also has a`draw()`

method, which can handle differences of 1D and 2D smooths currently (handling 3D and 4D smooths is planned).New functions

`add_fitted()`

and`add_residuals()`

to add fitted values (expectations) and model residuals to an existing data frame. Currently methods available for objects fitted by`gam()`

and`bam()`

.`data_sim()`

is a tidy reimplementation of`mgcv::gamSim()`

with the added ability to use sampling distributions other than the Gaussian for all models implemented. Currently Gaussian, Poisson, and Bernoulli sampling distributions are available.`smooth_samples()`

can handle continuous by variable smooths such as in varying coefficient models.`link()`

and`inv_link()`

now work for all families available in*mgcv*, including the location, scale, shape families, and the more specialised families described in`?mgcv::family.mgcv`

.`evaluate_smooth()`

,`data_slice()`

,`family()`

,`link()`

,`inv_link()`

methods for models fitted using`gamm4()`

from the**gamm4**package.`data_slice()`

can generate data for a 1-d slice (a single variable varying).The colour of the points, reference lines, and simulation band in

`appraise()`

can now be specified via arguments`point_col`

,`point_alpha`

,`ci_col`

`ci_alpha`

`line_col`

These are passed on to

`qq_plot()`

,`observed_fitted_plot()`

,`residuals_linpred_plot()`

, and`residuals_hist_plot()`

, which also now take the new arguments were applicable.Added utility functions

`is_factor_term()`

and`term_variables()`

for working with models.`is_factor_term()`

identifies is the named term is a factor using information from the`terms()`

object of the fitted model.`term_variables()`

returns a character vector of variable names that are involved in a model term. These are strictly for working with parametric terms in models.`appraise()`

now works for models fitted by`glm()`

and`lm()`

, as do the underlying functions it calls, especially`qq_plot`

.`appraise()`

also works for models fitted with family`gaulss()`

. Further locational scale models and models fitted with extended family functions will be supported in upcoming releases.

`datagen()`

is now an*internal*function and is no longer exported. Use`data_slice()`

instead.`evaluate_parametric_terms()`

is now much stricter and can only evaluate main effect terms, i.e. those whose order, as stored in the`terms`

object of the model is`1`

.

The

`draw()`

method for`derivatives()`

was not getting the x-axis label for factor by smooths correctly, and instead was using`NA`

for the second and subsequent levels of the factor.The

`datagen()`

method for class`"gam"`

couldn’t possibly have worked for anything but the simplest models and would fail even with simple factor by smooths. These issues have been fixed, but the behaviour of`datagen()`

has changed, and the function is now not intended for use by users.Fixed an issue where in models terms of the form

`factor1:factor2`

were incorrectly identified as being numeric parametric terms. #68

New functions

`link()`

and`inv_link()`

to access the link function and its inverse from fitted models and family functions.Methods for classes:

`"glm"`

,`"gam"`

,`"bam"`

,`"gamm"`

currently. #58Adds explicit

`family()`

methods for objects of classes`"gam"`

,`"bam"`

, and`"gamm"`

.`derivatives()`

now handles non-numeric when creating shifted data for finite differences. Fixes a problem with`stringsAsFactors = FALSE`

default in R-devel. #64

- Updated
*gratia*to work with*tibble*versions >= 3.0

*gratia*now uses the*mvnfast*package for random draws from a multivariate normal distribution (`mvnfast::rmvn()`

). Contributed by Henrik Singmann (@singmann) #28New function

`basis()`

for generating tidy representations of basis expansions from an*mgcv*-like definition of a smooth, e.g.`s()`

,`te()`

,`ti()`

, or`t2()`

. The basic smooth types also have a simple`draw()`

method for plotting the basis.`basis()`

is a simple wrapper around`mgcv::smoothCon()`

with some post processing of the basis model matrix into a tidy format. #42New function

`smooth_samples()`

to draw samples of entire smooth functions from their posterior distribution. Also has a`draw()`

method for plotting the posterior samples.

`draw.gam()`

would produce empty plots between the panels for the parametric terms if there were 2 or more parametric terms in a model. Reported by @sklayn #39.`derivatives()`

now works with factor by smooths, including ordered factor by smooths. The function also now works correctly for complex models with multiple covariates/smooths. #47`derivatives()`

also now handles`'fs'`

smooths. Reported by @tomand-uio #57.`evaluate_parametric_term()`

and hence`draw.gam()`

would fail on a`ziplss()`

model because i)*gratia*didn’t handle parametric terms in models with multiple linear predictors correctly, and ii)*gratia*didn’t convert to the naming convention of*mgcv*for terms in higher linear predictors. Reported by @pboesu #45.