This class represents a generalized linear model with exponential distribution. It inherits from GLM and implements its functions that, for example, evaluate the conditional density and distribution functions.
Super classes
gofreg::ParamRegrModel
-> gofreg::GLM
-> ExpGLM
Methods
Method fit()
Calculates the maximum likelihood estimator for the model parameters based on given data.
Arguments
data
tibble containing the data to fit the model to
params_init
initial value of the model parameters to use for the optimization (defaults to the fitted parameter values)
loglik
function(data, model, params)
defaults tologlik_xy()
inplace
logical
; ifTRUE
, default model parameters are set accordingly and parameter estimator is not returned
Method f_yx()
Evaluates the conditional density function.
Arguments
t
value(s) at which the conditional density shall be evaluated
x
matrix of covariates, each row representing one sample
params
model parameters to use (
list()
with tag beta), defaults to the fitted parameter values
Method F_yx()
Evaluates the conditional distribution function.
Arguments
t
value(s) at which the conditional distribution shall be evaluated
x
matrix of covariates, each row representing one sample
params
model parameters to use (
list()
with tag beta), defaults to the fitted parameter values
Method F1_yx()
Evaluates the conditional quantile function.
Arguments
t
value(s) at which the conditional quantile function shall be evaluated
x
matrix of covariates, each row representing one sample
params
model parameters to use (
list()
with tag beta), defaults to the fitted parameter values
Method sample_yx()
Generates a new sample of response variables with the same conditional distribution.
Arguments
x
matrix of covariates, each row representing one sample
params
model parameters to use (
list()
with tag beta), defaults to the fitted parameter values
Examples
# Use the built-in cars dataset
x <- datasets::cars$speed
y <- datasets::cars$dist
data <- dplyr::tibble(x=x, y=y)
# Create an instance of ExpGLM
model <- ExpGLM$new()
# Fit an Exponential GLM to the cars dataset
model$fit(data, params_init = list(beta=3), inplace=TRUE)
params_opt <- model$get_params()
# Plot the resulting regression function
plot(datasets::cars)
abline(a = 0, b = params_opt$beta)
# Generate a sample for y for given x following the same distribution
x.new <- seq(min(x), max(x), by=2)
y.smpl <- model$sample_yx(x.new)
points(x.new, y.smpl, col="red")
# Evaluate the conditional density, distribution, quantile and regression
# function at given values
model$f_yx(y.smpl, x.new)
#> [1] 0.052973083 0.024542706 0.038582321 0.014103623 0.017757721 0.008522388
#> [7] 0.008322539 0.015644532 0.016640188 0.002634610 0.007220426
model$F_yx(y.smpl, x.new)
#> [1] 0.4421942 0.6123485 0.1874575 0.6287227 0.4390344 0.6859078 0.6494552
#> [8] 0.2586849 0.1238954 0.8474168 0.5438142
model$F1_yx(y.smpl, x.new)
#> Warning: NaNs produced
#> [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
y.pred <- model$mean_yx(x.new)
points(x.new, y.pred, col="blue")