flexgam: Estimation of generalized additive model with flexible...

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/flexgam_start.R

Description

Main function to estimate generalized additive models with flexible response function. Currently the response must be binomial, Poisson, Gaussian or Gamma distributed.

Usage

1
2
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 mgcv package.

data

Data to fit the model.

type

Should the response function be estimated completely flexible ("FlexGAM2") or with a surrounding canonical link ("FlexGAM1")? "FlexGAM1n" and "FlexGAM2n" are similar to "FlexGAM1" and "FlexGAM2", but without monotonicity constraint. Therefore we do not recommend to use "FlexGAM1n" and "FlexGAM2n".

family

Family of the data. Currently only binomial(link="logit"), poisson(link="log"), gaussian(link="identity") and Gamma(link="log") are possible.

control

Control parameters to fit the model. The default values are described in
match_flexgam_control.

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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")

FlexGAM documentation built on May 2, 2019, 2:16 a.m.