flexgam {FlexGAM} | R Documentation |
Estimation of generalized additive model with flexible response function
Description
Main function to estimate generalized additive models with flexible response function. Currently the response must be binomial, Poisson, Gaussian or Gamma distributed.
Usage
flexgam(formula, data, type = c("FlexGAM1","FlexGAM2","FlexGAM1n",
"FlexGAM2n"), family, control = NULL)
Arguments
formula |
Formula of the covariate effects. The formula must be in the design of the |
data |
Data to fit the model. |
type |
Should the response function be estimated completely flexible ( |
family |
Family of the data. Currently only |
control |
Control parameters to fit the model. The default values are described in |
Details
To reduce the bias of miss-specified response functions the function estimates the response function jointly with the covariate effects. The covariate effects are build similar to the standard mgcv::gam, while the response function is either estimated as a strictly monotone P-spline or a combination of the canonical link and a transformation of the "linear"-predictor. In the outer loop the response function is estimated, while in the inner loop a modified version of the Fisher-Scoring algorithm is applied to get the covariate effects. In the algorithm step-halving is applied. Identifiability is achieved due to at least two smooth effects and scaling of the predictors.
Value
Object of class flexgam
. The list includes the
-
f_k
: The estimated response function. -
gam_temp
: The final step of the Fisher-Scoring algorithm, so the weighted linear model based on the mgcv-package. -
sm_par_vec
: The estimated smoothing parameters. -
coefficients
: The coefficients of the predictor as well as of the response function. -
se
: The standard deviation of the coefficients. -
mean_eta_k
,sd_eta_k
: Some information about the scaling of the predictor. -
control
: The applied control parameters. -
control_input
: The control parameters in the input -
details
: Information about the occurrence of modifications due to extreme values and the convergence. As well as information of the steps done in the algorithm (if saved). As well as other stuff for internal usage
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
predict.flexgam
, plot.flexgam
, deviance.flexgam
, match_flexgam_control
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)
print(model_2)
summary(model_2)
plot(model_2, type = "response")
plot(model_2, type = "covariate")