Skip to main content

pyHomogeneity

Build Status PyPI PyPI - License PyPI - Status Downloads PyPI - Python Version DOI

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:

  1. Pettitt test (pettitt_test)

  2. Standard Normal Homogeinity Test (SNHT) Test (snht_test)

  3. Buishand Q Test (buishand_q_test)

  4. Buishand's Range Test (buishand_range_test):

  5. Buishand's Likelihood Ration Test (buishand_likelihood_ratio_test)

  6. 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

  1. Alexandersson, H., 1986. A homogeneity test applied to precipitation data. Journal of climatology, 6(6), pp.661-675. doi:10.1002/joc.3370060607

  2. 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

  3. 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

  4. Pohlert, T., 2016. Package 'trend'. Title Non-Parametric Trend Tests and Change-Point Detection.

  5. 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)

Source distribution for pyhomogeneity 1.1
File Size Uploaded
pyhomogeneity-1.1.tar.gz 29.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyhomogeneity 1.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.1 This release

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page