scipy-psdm
Transform an ill-conditioned quadratic matrix into a positive semi-definite matrix.
Installation
The scipy-psdm git repo is available as PyPi package
pip install scipy-psdm
Usage
Lurie-Goldberg Algorithm to transform an ill-conditioned quadratic matrix into a positive semi-definite matrix.
import scipy_psdm as psdm
import numpy as np
# A matrix with subjectively set correlations
mat = [[ 1. , -0.948, 0.099, -0.129],
[-0.948, 1. , -0.591, 0.239],
[ 0.099, -0.591, 1. , 0.058],
[-0.129, 0.239, 0.058, 1. ]]
mat = np.array(mat)
# Convert to a positive semi-definite matrix
rho = psdm.approximate_correlation_matrix(mat)
print(rho.round(3))
Generate correlated random numbers
import scipy_psdm as psdm
X, rho = psdm.randcorr(n_obs=100, n_vars=5, random_state=42)
# compare
import numpy as np
print(rho.round(3))
print(np.corrcoef(X, rowvar=False).round(3))
Check the examples folder for notebooks.
Appendix
Install a virtual environment
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
pip3 install -r requirements-dev.txt
pip3 install -r requirements-demo.txt
(If your git repo is stored in a folder with whitespaces, then don’t use the subfolder .venv. Use an absolute path without whitespaces.)
Python commands
Start virtual env: source .venv/bin/activate
Jupyter for the examples: jupyter lab
Check syntax: flake8 --ignore=F401 --exclude=$(grep -v '^#' .gitignore | xargs | sed -e 's/ /,/g')
Run Unit Tests: pytest -v
Publish
pandoc README.md --from markdown --to rst -s -o README.rst python setup.py sdist twine upload -r pypi dist/*
Clean up
find . -type f -name "*.pyc" | xargs rm
find . -type d -name "__pycache__" | xargs rm -r
rm -r .pytest_cache
rm -r .venv
Support
Please open an issue for support.
Contributing
Please contribute using Github Flow. Create a branch, add commits, and open a pull request.
Contributers
Metadata
Release files for scipy-psdm 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scipy-psdm-0.2.2.tar.gz | 5.3 kB | Details |
Release files / scipy-psdm-0.2.2.tar.gz
| Download URL | scipy-psdm-0.2.2.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
311db90e5585c3701606671da00b60c9842832791e173d264d9b294e1faba661
|
|
BLAKE2b-256 checksum How to use checksums |
6fa99d7a5f5bdc53037a059b06a7f38c495444d013eadb7536b5bf2a21bbe489
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.8.3 requests/2.28.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.7.9
|