Produce a 2x2 diagnostic panel for a fitted neuralGAM model, mirroring
the layout of gratia's appraise() for mgcv GAMs:
(top-left) a QQ plot of residuals with optional simulation envelope,
(top-right) a histogram of residuals,
(bottom-left) residuals vs linear predictor \(\eta\), and
(bottom-right) observed vs fitted values on the response scale.
A fitted neuralGAM model.
Optional data.frame for out-of-sample evaluation. If
supplied, response must name the response column.
Character scalar giving the response variable name in
data (required when data is provided).
Character; one of "uniform", "simulate", or
"normal" for the QQ reference. See Details.
Integer; number of \(U(0,1)\) replicates for
qq_method = "uniform".
Integer; number of simulated datasets for
qq_method = "simulate" (also controls the QQ bands).
One of "deviance", "pearson", or
"quantile". Quantile (Dunn-Smyth) residuals are recommended for
discrete families (binomial/poisson) because they are continuous and
approximately standard normal under the fitted model, improving QQ
diagnostics.
Numeric in (0,1); coverage level for the QQ bands when
qq_method = "simulate".
Character; colour for points in scatter/histogram panels.
Numeric in (0,1); point transparency.
Integer; number of bins in the histogram.
A patchwork object combining four ggplot2 plots. You can print it, add titles/themes, or extract individual panels if needed.
The function uses predict.neuralGAM() to obtain the linear
predictor (type = "link") and the fitted mean on the response scale
(type = "response"). Residuals are computed internally for supported
families; by default we use deviance residuals:
Gaussian: \(r_i = y_i - \hat{\mu}_i\).
Binomial: \(r_i = \mathrm{sign}(y_i-\hat{\mu}_i)\, \sqrt{2 w_i \{ y_i \log(y_i/\hat{\mu}_i) + (1-y_i)\log[(1-y_i)/(1-\hat{\mu}_i)] \}}\), with optional per-observation weights \(w_i\) (e.g., trials for proportions).
Poisson: \(r_i = \mathrm{sign}(y_i-\hat{\mu}_i)\, \sqrt{2 w_i \{ y_i \log(y_i/\hat{\mu}_i) - (y_i-\hat{\mu}_i) \}}\), adopting the convention \(y_i \log(y_i/\hat{\mu}_i)=0\) when \(y_i=0\).
For Gaussian models, these plots diagnose symmetry, tail behaviour, and mean/variance misfit similar to standard GLM/GAM diagnostics. For non-Gaussian families (Binomial, Poisson), interpret shapes on the deviance scale, which is approximately normal under a well-specified model. For discrete data, randomized quantile (Dunn-Smyth) residuals are also available and often yield smoother QQ behaviour.
QQ reference methods.
qq_method controls how theoretical quantiles are generated (as in gratia):
"uniform" (default): draw \(U(0,1)\) and map through the inverse CDF of the fitted response distribution
at each observation; convert to residuals and average the sorted curves over n_uniform draws.
Fast and respects the mean-variance relationship.
"simulate": simulate n_simulate datasets from the fitted model at the observed covariates, compute residuals, and average the sorted curves; also provides pointwise level bands on the QQ plot.
"normal": use standard normal quantiles; a fallback when a suitable RNG or inverse CDF is unavailable.
For Poisson models, include offsets for exposure in the linear predictor
(e.g., log(E)). The QQ methods use \(\hat{\mu}_i\) with
qpois/rpois for "uniform"/"simulate", respectively.
Requires ggplot2 and patchwork.
Augustin, N.H., Sauleau, E.A., Wood, S.N. (2012). On quantile-quantile plots for generalized linear models. Computational Statistics & Data Analysis, 56, 2404-2409. https://doi.org/10.1016/j.csda.2012.01.026
Dunn, P.K., Smyth, G.K. (1996). Randomized quantile residuals. Journal of Computational and Graphical Statistics, 5(3), 236-244.