deviance.flexgam {FlexGAM} | R Documentation |
Deviance of FlexGAM model
Description
Calculating the (predictive) deviance of the model.
Usage
## S3 method for class 'flexgam'
deviance(object, newdata=NULL, use_penalty=FALSE, ...)
Arguments
object |
Object of class |
newdata |
Data to estimate the (predictive) deviance. |
use_penalty |
If the deviance should be penalized according to the smoothing penalties. |
... |
Currently not used |
Details
Calculates the model deviance of the object for the given data. To get the same value as for object$deviance
you need to set use_penalty = TRUE
. This is due to the fact that the deviance element of the object is the penalized deviance used for step halving.
Value
Estimated deviance
Note
To get numeric stability the fitted values are truncated (min_mu_k
) to achieve numeric stability.
Author(s)
Elmar Spiegel
References
Spiegel, Elmar, Thomas Kneib and Fabian Otto-Sobotka. Generalized additive models with flexible response functions. Statistics and Computing (2017). https://doi.org/10.1007/s11222-017-9799-6
See Also
Examples
set.seed(1)
n <- 1000
x1 <- runif(n)
x2 <- runif(n)
x3 <- runif(n)
eta_orig <- -1 + 2*sin(6*x1) + exp(x2) + x3
pi_orig <- pgamma(eta_orig, shape=2, rate=sqrt(2))
y <- rbinom(n,size=1,prob=pi_orig)
Data <- data.frame(y,x1,x2,x3)
formula <- y ~ s(x1,k=20,bs="ps") + s(x2,k=20,bs="ps") + x3
# Fix smoothing parameters to save computational time.
control2 <- list("fix_smooth" = TRUE, "quietly" = TRUE, "sm_par_vec" =
c("lambda" = 100, "s(x1)" = 2000, "s(x2)" = 9000))
set.seed(2)
model_2 <- flexgam(formula=formula, data=Data, type="FlexGAM2",
family=binomial(link=logit), control = control2)
(deviance <- deviance(model_2, newdata=Data))