statsmodels.base.model.GenericLikelihoodModel#
- class statsmodels.base.model.GenericLikelihoodModel(endog, exog=None, loglike=None, score=None, hessian=None, missing='none', extra_params_names=None, **kwds)[source]#
Allows the fitting of any likelihood function via maximum likelihood
A subclass needs to specify at least the log-likelihood If the log-likelihood is specified for each observation, then results that require the Jacobian will be available. (The other case is not tested yet.)
- Parameters:
- endogarray_like
A 1-d endogenous response variable. The dependent variable.
- exogarray_like,
optional A nobs x k array where nobs is the number of observations and k is the number of regressors. An intercept is not included by default and should be added by the user.
- loglike
callable,optional Log-likelihood function. If provided, it is used instead of the class’s loglike/loglikeobs methods for this instance.
- score
callable,optional Score (gradient) function. If provided, it is used instead of the class’s score method for this instance.
- hessian
callable,optional Hessian function. If provided, it is used instead of the class’s hessian method for this instance.
- missing
str,optional Available options are ‘none’, ‘drop’, and ‘raise’. If ‘none’, no nan checking is done. If ‘drop’, any observations with nans are dropped. If ‘raise’, an error is raised. Default is ‘none’.
- extra_params_names
listofstr,optional Names for additional parameters that are not part of exog, appended to exog_names.
- **kwds
Extra arguments that are used to set model properties when using the formula interface.
- Attributes:
endog_namesNames of endogenous variables
exog_namesNames of exogenous variables
Methods
expandparams(params)Expand to full parameter array when some parameters are fixed
fit([start_params, method, maxiter, ...])Fit the model via maximum likelihood
from_formula(formula, data[, subset, drop_cols])Create a Model from a formula and dataframe
hessian(params)Hessian of log-likelihood evaluated at params
hessian_factor(params[, scale, observed])Weights for calculating Hessian
information(params)Fisher information matrix of model
Initialize (possibly re-initialize) a Model instance.
loglike(params)Log-likelihood of model at params
loglikeobs(params)Log-likelihood of the model for all observations at params
nloglike(params)Negative log-likelihood of model at params
predict(params[, exog])After a model has been fit, predict returns the fitted values
reduceparams(params)Reduce parameters
score(params)Gradient of log-likelihood evaluated at params
score_obs(params, **kwds)Jacobian/Gradient of log-likelihood evaluated at params for each observation
Notes
Optimization methods that require only a likelihood function are ‘nm’ and ‘powell’
Optimization methods that require a likelihood function and a score/gradient are ‘bfgs’, ‘cg’, and ‘ncg’. A function to compute the Hessian is optional for ‘ncg’.
Optimization method that require a likelihood function, a score/gradient, and a Hessian is ‘newton’
If they are not overwritten by a subclass, then numerical gradient, Jacobian and Hessian of the log-likelihood are calculated by numerical forward differentiation. This might results in some cases in precision problems, and the Hessian might not be positive definite. Even if the Hessian is not positive definite the covariance matrix of the parameter estimates based on the outer product of the Jacobian might still be valid.
Examples
See also subclasses in directory miscmodels
>>> import numpy as np >>> import statsmodels.api as sm >>> data = sm.datasets.spector.load() >>> data.exog = sm.add_constant(data.exog) >>> # in this dir >>> from model import GenericLikelihoodModel >>> probit_mod = sm.Probit(data.endog, data.exog) >>> probit_res = probit_mod.fit() >>> loglike = probit_mod.loglike >>> score = probit_mod.score >>> mod = GenericLikelihoodModel(data.endog, data.exog, loglike, score) >>> res = mod.fit(method="nm", maxiter=500) >>> np.allclose(res.params, probit_res.params)
Methods
expandparams(params)Expand to full parameter array when some parameters are fixed
fit([start_params, method, maxiter, ...])Fit the model via maximum likelihood
from_formula(formula, data[, subset, drop_cols])Create a Model from a formula and dataframe
hessian(params)Hessian of log-likelihood evaluated at params
hessian_factor(params[, scale, observed])Weights for calculating Hessian
information(params)Fisher information matrix of model
Initialize (possibly re-initialize) a Model instance.
loglike(params)Log-likelihood of model at params
loglikeobs(params)Log-likelihood of the model for all observations at params
nloglike(params)Negative log-likelihood of model at params
predict(params[, exog])After a model has been fit, predict returns the fitted values
reduceparams(params)Reduce parameters
score(params)Gradient of log-likelihood evaluated at params
score_obs(params, **kwds)Jacobian/Gradient of log-likelihood evaluated at params for each observation
Properties
Names of endogenous variables
Names of exogenous variables