# deviance_flexgam: Deviance of FlexGAM model In FlexGAM: Generalized Additive Models with Flexible Response Functions

## Description

Calculating the (predictive) deviance of the model.

## Usage

 ```1 2``` ```## S3 method for class 'flexgam' deviance(object, newdata=NULL, use_penalty=FALSE, ...) ```

## Arguments

 `object` Object of class `flexgam`. `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.

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

`flexgam`, `predict.flexgam`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19``` ```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)) ```