improper-payments-dgp
A Python package to simulate data for improper payments.
Installation
pip install improper-payments-dgp
Quick Start
from improper_payments_dgp import improper_payments_dgp
# Generate 100,000 payments with maximum payment amount of $1,000, mean
# payment amount of $100, and a standard devation of 1/2 the payment
# amount (e.g., coefficient of variation equal to 0.5). The percentage
# of each payment that is improper is between 40% and 60% of the
# payment amount, and the probability that each payment is improper is 10%.
pop_data = improper_payments_dgp(
mean_target=100,
cv_target=1/2,
A=0,
B=1000,
b=(0.4, 0.6),
p_improper=0.1,
size=100000,
random_state=123
)
print(f"The mean payment amount is ${pop_data.X.mean():.2f} with a total payment amount of ${pop_data.X.sum():,.2f}.")
print(f"The coefficient of variation for payment amount is {pop_data.X.var()**0.5/pop_data.X.mean():.2%}.")
print(f"The minimum and maximum percentages of improper payments are {pop_data.B.min():.2%} and {pop_data.B.max():.2%}, respectively.")
print(f"The probability of an improper payment is {pop_data.Z.mean():.2%}.")
print(f"The mean improper payment amount (conditional on being improper) is ${pop_data.Y[pop_data.Y > 0].mean():.2f}.")
print(f"The total improper payment amount is ${pop_data.Y.sum():,.2f}.")
The generated dataset includes:
- Payment amounts (X): Following a truncated gamma distribution
- Improper percentages (B): Uniform distribution of what portion is improper
- Improper indicators (Z): Binary indicators of whether payment is improper
- Improper amounts (Y): Calculated as X × B × Z
API Reference
improper_payments_dgp(mean_target, cv_target, A, B, b, p_improper, size=1, random_state=None)
Generate simulated data for improper payments.
Parameters:
mean_target(int or float): Target mean payment amountcv_target(float): Target coefficient of variation for payment amountsA(int or float): Minimum payment amountB(int or float): Maximum payment amountb(int, float, or tuple): Bounds for uniform distribution of improper percentages (0 ≤ b ≤ 1)p_improper(float): Probability that a given payment is impropersize(int): Number of payments to generaterandom_state(int, optional): Random seed for reproducibility
Returns:
pandas.DataFrame: DataFrame with columns:X: Payment amounts (truncated gamma distribution)B: Improper payment percentages (uniform distribution)Z: Improper payment indicators (binomial distribution)Y: Improper payment amounts (X × B × Z)
Requirements
- Python ≥ 3.9
- truncated-gamma-rvs
- scipy
- pandas
Development
git clone https://github.com/wkingc/improper-payments-dgp-py-package.git
cd improper-payments-dgp-py-package
pip install -e ".[dev]"
python -m pytest
License
MIT License. See LICENSE for details.
Documentation
For a complete usage guide, see https://www.kingcopeland.com/improper-payments-dgp-py/.
Citation
If you use this package in your research, please consider citing it:
@software{copeland2026ipaymentsdgp,
author = {Wade K. Copeland},
title = {{improper-payments-dgp: A Python package to simulate data for improper payments}},
url = {https://pypi.org/project/improper-payments-dgp/},
version = {0.1.7},
year = {2026}
}
Metadata
Release files for improper-payments-dgp 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| improper_payments_dgp-0.1.7.tar.gz | 5.2 kB | Without provenance | Details for improper_payments_dgp-0.1.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| improper_payments_dgp-0.1.7-py3-none-any.whl | Python 3 | none | any | Details for improper_payments_dgp-0.1.7-py3-none-any.whl |
Total release size: 10.6 kB
Release files / improper_payments_dgp-0.1.7.tar.gz
| Download URL | improper_payments_dgp-0.1.7.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96d3c2a4f9569f4b662dbdbd7456a9f01b56b623666317c07541c15f98b21728
|
|
BLAKE2b-256 checksum How to use checksums |
bb270693a445dea5a798e397e5d6079cccb91a15ea9f1a9c591d7455d514697c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / improper_payments_dgp-0.1.7-py3-none-any.whl
| Download URL | improper_payments_dgp-0.1.7-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c10052637c56faa105ff502903daa68de6c2023d1ea7db8d587aab89694c4020
|
|
BLAKE2b-256 checksum How to use checksums |
09a338f72ecdaaa4ee9bcaa9b1d5042f22127ea1fb44ad0cb14c9dc94774fb66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for improper-payments-dgp 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.