This method can be used to simulate vectors of responses from the Gaussian posterior approximation of a gamObject.
postSim( o, nsim, newdata, trans = NULL, method = "auto", w = NULL, offset = NULL, savePar = FALSE, ... )
| o | the output of a |
|---|---|
| nsim | the number of simulated vectors of responses. A positive integer. |
| newdata | Optional new data frame used to perform the simulations. To be passed to predict.gam. |
| trans | function used to transform or summarize each vector of simulated responses.
It must take a vector as argument, but it can output a vector or a scalar.
Potentially useful for saving storage (e.g. by transforming each simulated vector
to a scalar). If left to |
| method | the method used for the simulation of responses. See simulate.gam. |
| w | vector of prior weights of each response. See simulate.gam. |
| offset | numeric vector of offsets. For GAMs with multiple linear predictor (see eg gaulss) it
must be a list of vectors. If |
| savePar | if |
| ... | arguments to be passed to vcov.gam. |
If savePar == FALSE the function will return a matrix where each row is a vector of
simulated responses or a transformed version of it. If savePar == TRUE it will return
a list where the $simY entry will contain the simulated responses and $simBeta
the simulated parameters.
library(mgcViz) library(MASS) b <- gam(accel~s(times, k=20), data=mcycle) # Simulate list of 10 vectors of responses from posterior, taking into # account smoothing parameters uncertainty (see ?vcov.gam) n <- 10 sim <- postSim(o = b, nsim = n, unconditional = TRUE) # Posterior simulations in grey and data in red plot(rep(mcycle$times, n), as.vector(t(sim)), col = "grey", ylab = "Acceleration", xlab = "Times")# There is clear disagreement between simulations' and data's # conditional variance, which can be solved using flexible GAMLSS model: b <- gam(list(accel~s(times, k=20), ~s(times)), data=mcycle, family = gaulss) sim <- postSim(o = b, nsim = n) plot(rep(mcycle$times, n), as.vector(t(sim)), col = "grey", ylab = "Acceleration", xlab = "Times")