Coefficient of Variation (CV) and Coefficient of Quartile Variation (CQV) with Confidence Intervals (CI)
Project description
pycvcqv
Introduction
pycvcqv provides versatile functions to quantify homogeneity with
confidence intervals. It offers a variety of well-established methods from
the literature (Kelley, McKay, Miller, Vangel, Mahmoudvand-Hassani,
Equal-Tailed, Shortest-Length, Normal Approximation, Bonett, and the
Abu-Shawiesh-Akyuz-Kibria adjusted-degrees-of-freedom, large-sample, and
augmented-large-sample CIs) and bootstrap resampling techniques (Normal,
Basic, Percentile, BCa) for constructing confidence intervals on the
Coefficient of Variation (cv) and the Coefficient of Quartile
Variation (cqv).
Coefficient of Variation
cv is a measure of relative dispersion representing the degree of
variability relative to the mean (Albatineh et al., 2014). Since cv is
unitless, it is useful for comparing variables that have different units.
It is also a measure of homogeneity (Albatineh et al., 2014).
Coefficient of Quartile Variation
cqv is a measure of relative dispersion based on the interquartile
range (IQR). Since cqv is unitless, it is also useful for comparing
variables that have different units. It is also a measure of homogeneity
(Bonett, 2006; Altunkaynak, 2018).
Install
pip install pycvcqv
Usage
import pandas as pd
from pycvcqv import coefficient_of_variation, cqv
coefficient_of_variation(
data=[
0.2, 0.5, 1.1, 1.4, 1.8, 2.3, 2.5, 2.7, 3.5, 4.4,
4.6, 5.4, 5.4, 5.7, 5.8, 5.9, 6.0, 6.6, 7.1, 7.9
],
multiplier=100,
ndigits=2
)
# {'cv': 57.77, 'lower': 41.43, 'upper': 98.38}
cqv(
data=[0.2, 0.5, 1.1, 1.4, 1.8, 2.3, 2.5, 2.7, 3.5, 4.4, 4.6, 5.4, 5.4],
multiplier=100,
)
# 51.7241
data = pd.DataFrame(
{
"col-1": pd.Series([0.2, 0.5, 1.1, 1.4, 1.8, 2.3, 2.5, 2.7, 3.5]),
"col-2": pd.Series([5.4, 5.4, 5.7, 5.8, 5.9, 6.0, 6.6, 7.1, 7.9]),
}
)
coefficient_of_variation(data=data, num_threads=3)
# columns cv lower upper
# 0 col-1 0.6076 0.3770 1.6667
# 1 col-2 0.1359 0.0913 0.2651
cqv(data=data, num_threads=-1)
# columns cqv
# 0 col-1 0.3889
# 1 col-2 0.0732
Confidence-interval methods for cv
coefficient_of_variation accepts a method argument that selects the confidence-interval estimator.
from pycvcqv import coefficient_of_variation
x = [
0.2, 0.5, 1.1, 1.4, 1.8, 2.3, 2.5, 2.7, 3.5, 4.4,
4.6, 5.4, 5.4, 5.7, 5.8, 5.9, 6.0, 6.6, 7.1, 7.9,
]
for method in (
"kelley", "mckay", "miller", "vangel",
"mahmoudvand_hassani", "equal_tailed",
"shortest_length", "normal_approximation",
"aak_adj", "aak_ls", "aak_als",
"norm", "basic", "perc", "bca",
):
print(method, coefficient_of_variation(
data=x,
method=method,
multiplier=100,
ndigits=3,
num_replicates=10000,
random_state=42,
))
Output (95% CI, multiplier=100, ndigits=3, bootstrap methods use
num_replicates=10000, random_state=42):
| method | est | lower | upper | description |
|---|---|---|---|---|
kelley |
57.774 | 41.303 | 97.950 | cv with Kelley 95% CI |
mckay |
57.774 | 41.441 | 108.483 | cv with McKay 95% CI |
miller |
57.774 | 34.053 | 81.495 | cv with Miller 95% CI |
vangel |
57.774 | 40.955 | 103.931 | cv with Vangel 95% CI |
mahmoudvand_hassani |
57.774 | 43.476 | 82.857 | cv with Mahmoudvand-Hassani 95% CI |
equal_tailed |
57.774 | 43.937 | 84.383 | cv with Equal-Tailed 95% CI |
shortest_length |
57.774 | 42.015 | 81.013 | cv with Shortest-Length 95% CI |
normal_approximation |
57.774 | 44.533 | 85.272 | cv with Normal Approximation 95% CI |
aak_adj |
57.774 | 48.029 | 72.516 | cv with Abu-Shawiesh-Akyuz-Kibria Adjusted-DoF 95% CI |
aak_ls |
57.774 | 46.310 | 72.075 | cv with Abu-Shawiesh-Akyuz-Kibria Large-Sample 95% CI |
aak_als |
57.774 | 45.839 | 75.092 | cv with Abu-Shawiesh-Akyuz-Kibria Augmented-LS 95% CI |
norm |
57.774 | 38.850 | 78.379 | cv with Normal Approximation Bootstrap 95% CI |
basic |
57.774 | 37.716 | 77.166 | cv with Basic Bootstrap 95% CI |
perc |
57.774 | 38.382 | 77.832 | cv with Bootstrap Percentile 95% CI |
bca |
57.774 | 41.556 | 83.032 | cv with Adjusted Bootstrap Percentile (BCa) 95% CI |
Confidence-interval methods for cqv
cqv accepts a method argument that selects the confidence-interval estimator.
When method is omitted only the point estimate is returned (the legacy behavior).
from pycvcqv import cqv
x = [
0.2, 0.5, 1.1, 1.4, 1.8, 2.3, 2.5, 2.7, 3.5, 4.4,
4.6, 5.4, 5.4, 5.7, 5.8, 5.9, 6.0, 6.6, 7.1, 7.9,
]
for method in ("bonett", "norm", "basic", "perc", "bca"):
print(method, cqv(
data=x,
method=method,
multiplier=100,
ndigits=3,
num_replicates=10000,
random_state=42,
))
Output (95% CI, multiplier=100, ndigits=3, bootstrap methods use
num_replicates=10000, random_state=42):
| method | est | lower | upper | description |
|---|---|---|---|---|
bonett |
45.625 | 24.785 | 77.329 | cqv with Bonett 95% CI |
norm |
45.625 | 19.937 | 70.403 | cqv with Normal Approximation Bootstrap 95% CI |
basic |
45.625 | 21.081 | 73.923 | cqv with Basic Bootstrap 95% CI |
perc |
45.625 | 17.327 | 70.169 | cqv with Bootstrap Percentile 95% CI |
bca |
45.625 | 22.006 | 76.331 | cqv with Adjusted Bootstrap Percentile (BCa) 95% CI |
Credits
This project was generated with
python-package-template
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycvcqv-0.7.1.tar.gz.
File metadata
- Download URL: pycvcqv-0.7.1.tar.gz
- Upload date:
- Size: 47.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f5878988ae8a1619582781560099b221e18a216cb8cfb2571dc12acc9e59a55
|
|
| MD5 |
e2997e93d28904eaf8b4cde72b0962f5
|
|
| BLAKE2b-256 |
fe316579ea4f3687c26c8bc327389002221282d1e1f229422568f8a55bc2e536
|
Provenance
The following attestation bundles were made for pycvcqv-0.7.1.tar.gz:
Publisher:
publish.yml on MaaniBeigy/pycvcqv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pycvcqv-0.7.1.tar.gz -
Subject digest:
6f5878988ae8a1619582781560099b221e18a216cb8cfb2571dc12acc9e59a55 - Sigstore transparency entry: 1587265817
- Sigstore integration time:
-
Permalink:
MaaniBeigy/pycvcqv@49f32d0820a5a9371339254530941752d0424953 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/MaaniBeigy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@49f32d0820a5a9371339254530941752d0424953 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pycvcqv-0.7.1-py3-none-any.whl.
File metadata
- Download URL: pycvcqv-0.7.1-py3-none-any.whl
- Upload date:
- Size: 78.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4a7944f6efbf0b598785e60a9b7e831f6fcf6793b6431f3dd68ad281a3fd5d0
|
|
| MD5 |
0357b127bf8aaec5130adffd9fa18953
|
|
| BLAKE2b-256 |
a8081db38bca0f9ff535274fe8899f7f084d589dbccd1037c4c1758ff7dc657e
|
Provenance
The following attestation bundles were made for pycvcqv-0.7.1-py3-none-any.whl:
Publisher:
publish.yml on MaaniBeigy/pycvcqv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pycvcqv-0.7.1-py3-none-any.whl -
Subject digest:
e4a7944f6efbf0b598785e60a9b7e831f6fcf6793b6431f3dd68ad281a3fd5d0 - Sigstore transparency entry: 1587265917
- Sigstore integration time:
-
Permalink:
MaaniBeigy/pycvcqv@49f32d0820a5a9371339254530941752d0424953 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/MaaniBeigy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@49f32d0820a5a9371339254530941752d0424953 -
Trigger Event:
push
-
Statement type: