This class represents a generalized linear model with Weibull 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
-> WeibullGLM
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 tags beta and shape), 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 tags beta and shape), 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 tags beta and shape), 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 tags beta and shape), 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 WeibullGLM
model <- WeibullGLM$new()
# Fit an Weibull GLM to the cars dataset
model$fit(data, params_init = list(beta=3, shape=1), 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.054237868 0.036129468 0.031633989 0.022794911 0.026427663 0.025439486
#> [7] 0.021268204 0.019804374 0.013188120 0.007488956 0.014649633
model$F_yx(y.smpl, x.new)
#> [1] 0.1181740 0.8293946 0.1598945 0.1299025 0.6617417 0.4443738 0.5907194
#> [8] 0.4600372 0.1742578 0.8858073 0.3929237
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")