Metadata-Version: 2.1
Name: firthlogist
Version: 0.3.1
Summary: Python implementation of Logistic Regression with Firth's bias reduction
Home-page: https://github.com/jzluo/firthlogist
License: MIT
Author: Jon Luo
Author-email: jzluo@alumni.cmu.edu
Requires-Python: >=3.8,<3.11
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering
Requires-Dist: numpy (>=1.22.4,<2.0.0)
Requires-Dist: scikit-learn (>=1.1.1,<2.0.0)
Requires-Dist: tabulate (>=0.8.10,<0.9.0)
Project-URL: Repository, https://github.com/jzluo/firthlogist
Description-Content-Type: text/markdown

# firthlogist

[![PyPI](https://img.shields.io/pypi/v/firthlogist.svg)](https://pypi.org/project/firthlogist/)
![PyPI - Downloads](https://img.shields.io/pypi/dm/firthlogist)
[![GitHub](https://img.shields.io/github/license/jzluo/firthlogist)](https://github.com/jzluo/firthlogist/blob/master/LICENSE)

A Python implementation of Logistic Regression with Firth's bias reduction.


## Installation
    pip install firthlogist

## Usage
firthlogist is sklearn compatible and follows the sklearn API.

```python
>>> from firthlogist import FirthLogisticRegression, load_sex2
>>> fl = FirthLogisticRegression()
>>> X, y, feature_names = load_sex2()
>>> fl.fit(X, y)
FirthLogisticRegression()
>>> fl.summary(xname=feature_names)
                 coef    std err     [0.025      0.975]      p-value
---------  ----------  ---------  ---------  ----------  -----------
age        -1.10598     0.42366   -1.97379   -0.307427   0.00611139
oc         -0.0688167   0.443793  -0.941436   0.789202   0.826365
vic         2.26887     0.548416   1.27304    3.43543    1.67219e-06
vicl       -2.11141     0.543082  -3.26086   -1.11774    1.23618e-05
vis        -0.788317    0.417368  -1.60809    0.0151846  0.0534899
dia         3.09601     1.67501    0.774568   8.03028    0.00484687
Intercept   0.120254    0.485542  -0.818559   1.07315    0.766584

Log-Likelihood: -132.5394
Newton-Raphson iterations: 8
```

### Parameters

`max_iter`: **_int_, default=25**

&emsp;The maximum number of Newton-Raphson iterations.

`max_halfstep`: **_int_, default=25**

&emsp;The maximum number of step-halvings in one Newton-Raphson iteration.

`max_stepsize`: **_int_, default=5**

&emsp;The maximum step size - for each coefficient, the step size is forced to
be less than max_stepsize.

`pl_max_iter`: **_int_, default=100**

&emsp;The maximum number of Newton-Raphson iterations for finding profile likelihood confidence intervals.

`pl_max_halfstep`: **_int_, default=25**

&emsp;The maximum number of step-halvings in one iteration for finding profile likelihood confidence intervals.

`pl_max_stepsize`: **_int_, default=5**

&emsp;The maximum step size while finding PL confidence intervals - for each coefficient, the step size is forced to
be less than max_stepsize.

`tol`: **_float_, default=0.0001**

&emsp;Convergence tolerance for stopping.

`fit_intercept`: **_bool_, default=True**

&emsp;Specifies if intercept should be added.

`skip_lrt`: **_bool_, default=False**

&emsp;If True, p-values will not be calculated. Calculating the p-values can
be expensive since the fitting procedure is repeated for each
coefficient.

`skip_ci`: **_bool_, default=False**

&emsp;If True, confidence intervals will not be calculated. Calculating the confidence intervals via profile likelihoood is time-consuming.


### Attributes
`bse_`

&emsp;Standard errors of the coefficients.

`classes_`

&emsp;A list of the class labels.

`ci_`

&emsp; The fitted profile likelihood confidence intervals.

`coef_`

&emsp;The coefficients of the features.

`intercept_`

&emsp;Fitted intercept. If `fit_intercept = False`, the intercept is set to zero.

`loglik_`

&emsp;Fitted penalized log-likelihood.

`n_iter_`

&emsp;Number of Newton-Raphson iterations performed.

`pvals_`

&emsp;p-values calculated by penalized likelihood ratio tests.

## References
Firth, D (1993). Bias reduction of maximum likelihood estimates.
*Biometrika* 80, 27–38.

Heinze G, Schemper M (2002). A solution to the problem of separation in logistic
regression. *Statistics in Medicine* 21: 2409-2419.

