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}
}
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 | |
|---|---|---|---|
| improper_payments_dgp-0.1.7.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| improper_payments_dgp-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
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
|