❗️
Pymer4 is a statistics library for estimating various regression and multi-level models in Python. Love lme4 in R, but prefer to work in the scientific Python ecosystem? This package has got you covered!
pymer4
provides a clean interface that hides the back-and-forth code required when moving between R and Python. In other words, you can work completely in Python, never having to deal with R, but get (most) of lme4’s goodness. This is accomplished using rpy2 to interface between langauges.
Additionally pymer4
can fit various additional regression models with some bells, such as robust standard errors, and two-stage regression (summary statistics) models. See the features page for more information.
TL;DR this package is your new simple Pythonic drop-in replacement for lm()
or glmer()
in R.
For example:
# Assuming you have a pandas dataframe in tidy/long format
# with DV and IV columns for dependent/outcome vars and
# independent/predictor vars
model = Lmer('DV ~ IV1 + IV2 + (IV+IV2|Group)', data=dataframe)
# Fit and print an R/statsmodels style summary
# with t/z-tests, CIs, and p-values
model.fit()
# Access model attributes
model.BIC
model.residuals
# Get fitted parameters
model.coef # population parameters
model.fixef # group/cluster estimates (BLUPs)
model.ranef # group/cluster deviates
Check out the documentation site for detailed tutorial examples, API documentation, and installation instructions!
Installing via Anaconda is the preferred installation method. Follow the directions here.
conda create -n build python=3.8 pip conda-build
conda activate build
conda-build ./conda --python=3.8 -c https://conda.anaconda.org/conda-forge --output-folder ./conda/build --output ./conda/build
tarball=$(conda-build ./conda --python=3.8 --output | tail -1)
conda convert -p linux-64 -p win-64 $tarball -o ./conda/build
# after
# conda install anaconda-client
# anaconda login
# pre-release
anaconda upload ./conda/build/**/pymer4*.tar.bz2 -l "pre-release"
# main
anaconda upload ./conda/build/**/pymer4*.tar.bz2 -l "main"
Contributions are always welcome!
If you are interested in contributing feel free to check out the open issues, development roadmap on Trello, or submit pull requests for additional features or bug fixes. If you do make a pull request, please do so by forking the development branch and taking note of the contribution guidelines.