Diamond
O Diamond, Diamond, thou little knowest the mischief thou hast done.
(Diamond was Newton's mischievous dog)
What is Diamond?
Diamond utilizes iterative, quasi-Newton 2nd-order solvers for certain kinds of generalized linear models (GLMs) with arbitrary but known L2-regularization. A common use is fitting mixed-effects models, with their covariance already being known by another means (e.g. lme4). These 2nd-order iterative solvers are considerably faster than a full-blown solution.
Limitations
- The random-effects covariances must be input a-priori. Unlike R's lme4 or Julia's MixedModels, Diamond does not estimate the covariance of random effects terms.
- Diamond only supports the following models
- logistic regression
- ordinal logistic regression using proportional odds, as defined in Section 7.2.1 of Categorical Data Analysis, 2nd Ed., by Alan Agresti
- Currently, only formulae with crossed, independent random effects are supported. Using the mtcars dataset as an example, these look like
mpg ~ 1 + hp + (1 + hp | cyl) + (1 | gear)
. I.e. no hierarchical terms
Installation
You must have docker installed. Then, run
docker run -ti --rm -p 8888:8888 tsweetser/diamond
Copy-paste the URL, including the token, into your browser. Then, check out the Jupyter notebook examples!
You can also install from PyPI via pip install sf-diamond
Troubleshooting installation
- You may need to restart docker if you've been running jupyter notebooks locally on port 8888.
Documentation
See documentation for more details on the details of Diamond and how to use it
Contributing to Diamond
We always welcome contributions. See CONTRIBUTING.md
Running Tests
You will need R to run the integration tests. From the root directory, run pip install nose
then nosetests
.
Development Status
Diamond is an evolving project. Please file issues if you would like to use Diamond in new ways.
License
See LICENSE.txt