Constructs a learner class object for fitting generalized linear models with stats::glm and MASS::glm.nb. Negative binomial regression is supported with family = "nb" (or alternatively family = "negbin").

learner_glm(
  formula,
  info = "glm",
  family = gaussian(),
  learner.args = NULL,
  ...
)

Arguments

formula

(formula) Formula specifying response and design matrix.

info

(character) Optional information to describe the instantiated learner object.

family

a description of the error distribution and link function to be used in the model. For glm this can be a character string naming a family function, a family function or the result of a call to a family function. For glm.fit only the third option is supported. (See family for details of family functions.)

learner.args

(list) Additional arguments to learner$new().

...

Additional arguments to stats::glm or MASS::glm.nb.

Value

learner object.

Examples

n <- 5e2
x <- rnorm(n)
w <- 50 + rexp(n, rate = 1 / 5)
y <- rpois(n, exp(2 + 0.5 * x + log(w)) * rgamma(n, 1 / 2, 1 / 2))
d0 <- data.frame(y, x, w)

lr <- learner_glm(y ~ x) # linear Gaussian model
lr$estimate(d0)
coef(lr$fit)
#> (Intercept)           x 
#>    444.1858    255.8708 

# negative binomial regression model with offset (using MASS::glm.nb)
lr <- learner_glm(y ~ x + offset(log(w)), family = "nb")
lr$estimate(d0)
coef(lr$fit)
#> (Intercept)           x 
#>   1.8894829   0.6738783 
lr$predict(data.frame(x = 1, w = c(1, 5))) # response scale
#>        1        2 
#> 12.97937 64.89685 
lr$predict(data.frame(x = 1, w = c(1, 5)), type = "link") # link scale
#>        1        2 
#> 2.563361 4.172799