pyHomogeneity
What is the Homogeneity Test ?
The homogeneity test is a statistical test method, that checks if two (or more) datasets come from the same distribution or not. In a time series, the homogeneity test is applied to detect one (or more) change/breakpoint in the series. This breakpoint occurs where the data set changes its distribution. Lots of statistical analyses require a homogenous dataset. That's why it is an important test in statistical analysis.
pyHomogeneity is a pure Python implementation for the homogeneity test. There are several tests available to check the homogeneity of a time series. pyHomogeneity package can perform six commonly used Homogeneity test listed below:
-
Pettitt test (pettitt_test)
-
Standard Normal Homogeinity Test (SNHT) Test (snht_test)
-
Buishand Q Test (buishand_q_test)
-
Buishand's Range Test (buishand_range_test):
-
Buishand's Likelihood Ration Test (buishand_likelihood_ratio_test)
-
Buishand U Test (buishand_u_test)
Function details:
All Homogeneity test functions have almost similar input parameters. These are:
- x: a vector (list, numpy array or pandas series) data
- alpha: significance level (0.05 default)
- sim: No. of monte carlo simulation for p-value calculation.
And all Homogeneity tests return a named tuple which contained:
- h: True (if data is nonhomogeneous) or False (if data is homogeneous)
- cp: probable change point location
- p: p value of the significance test
- U/T/Q/R/V: test statistics which depends on the test method
- avg: mean values at before and after the change point
Dependencies
For the installation of pyHomogeneity, the following packages are required:
Installation
You can install pyHomogeneity using pip. For Linux users
sudo pip install pyhomogeneity
or, for Windows user
pip install pyhomogeneity
Or you can clone the repo and install it:
git clone https://github.com/mmhs013/pyhomogeneity
cd pyhomogeneity
python setup.py install
Tests
pyHomogeneity is automatically tested using pytest package on each commit here, but the tests can be manually run:
pytest -v
Usage
A quick example of pyHomogeneity usage is given below. Several more examples are provided here.
import numpy as np
import pyhomogeneity as hg
# Data generation for analysis
data = np.random.rand(360,1)
result = hg.pettitt_test(data)
print(result)
Output are like this:
Pettitt_Test(h=False, cp=89, p=0.1428, U=3811.0, avg=mean(mu1=0.5487521427805625, mu2=0.46884198890609463))
Whereas, the output is a named tuple, so user can call by name for specific result:
print(result.cp)
print(result.avg.mu1)
or, user can directly unpack results like this:
h, cp, p, U, mu = hg.pettitt_test(x, 0.05)
Contributions
pyHomogeneity is a community project and welcomes contributions. Additional information can be found in the contribution guidelines
Code of Conduct
pyHomogeneity wishes to maintain a positive community. Additional details can be found in the Code of Conduct
References
-
Alexandersson, H., 1986. A homogeneity test applied to precipitation data. Journal of climatology, 6(6), pp.661-675. doi:10.1002/joc.3370060607
-
Buishand, T.A., 1982. Some methods for testing the homogeneity of rainfall records. Journal of hydrology, 58(1-2), pp.11-27. doi:10.1016/0022-1694(82)90066-X
-
Pettitt, A.N., 1979. A non-parametric approach to the change-point problem. Journal of the Royal Statistical Society: Series C (Applied Statistics), 28(2), pp.126-135. doi:10.2307/2346729
-
Pohlert, T., 2016. Package 'trend'. Title Non-Parametric Trend Tests and Change-Point Detection.
-
Verstraeten, G., Poesen, J., Demaree, G. and Salles, C., 2006. Long-term (105 years) variability in rain erosivity as derived from 10-min rainfall depth data for Ukkel (Brussels, Belgium): Implications for assessing soil erosion rates. Journal of Geophysical Research: Atmospheres, 111(D22). doi:10.1029/2006JD007169
Metadata
Release files for pyhomogeneity 1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyhomogeneity-1.1.tar.gz | 29.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyhomogeneity-1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.4 kB
Release files / pyhomogeneity-1.1.tar.gz
| Download URL | pyhomogeneity-1.1.tar.gz |
|---|---|
| Size | 29.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55bc59bcc591e7dd9fa04d081c8cd50be74106f349378d7bc97c2ebfd5fb65a1
|
|
BLAKE2b-256 checksum How to use checksums |
7df55e16ae2b77a76733747bad0e7eef611d1556169ebdf301d9134e897d3540
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
|
Release files / pyhomogeneity-1.1-py3-none-any.whl
| Download URL | pyhomogeneity-1.1-py3-none-any.whl |
|---|---|
| Size | 12.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
837ebcae1f08f7094567265f9b14b27bda2c0857ffb5a65a0a3a2ee701856da2
|
|
BLAKE2b-256 checksum How to use checksums |
e28aa1ffa82674cc748bdf8d46c3d1f681651679038f1cbd9bb0fae7b649d457
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
|