import pointblank as pb
import polars as pl
seed = pl.DataFrame({"x": list(range(100)), "y": ["a", "b"] * 50})
synthetic = pl.DataFrame({"x": [k % 10 for k in range(100)], "y": ["a", "b"] * 50})
pb.check_synthetic(synthetic, seed).get_tabular_report()| Synthetic data check | |
synthetic: 100 rows · seed: 100 rows 3 issues found. |
|
| Check | Result |
|---|---|
| Fidelity | |
xcompared with the seed |
MAJOR PSI 8.28 numeric; KS 0.9 (p = 0); missing 0.0% (the seed: 0.0%) |
ycompared with the seed |
STABLE PSI 0 categorical; missing 0.0% (the seed: 0.0%) |
| Diversity | |
| Rows that repeat an earlier row compared on x, y |
MORE 90 of 100 rows (90.0%) the seed: 0 of 100 rows (0.0%) |
| Copies | |
| Synthetic rows that copy a seed row compared on x, y |
COPIES 100 of 100 rows (100.0%) 100 the same |
| PSI is the population stability index of the shares of the values (binned by the deciles of the seed, for a numeric column): a change is moderate from 0.1 and major from 0.2. KS is the Kolmogorov-Smirnov statistic. A change of 10 percentage points or more in the share of missing values is an issue. | |
| A share of repeated rows 5 percentage points or more above the seed's is an issue. | |