This metric measures whether a synthetic column covers the full range of values that are present in a real column.
- Numerical : This metric is meant for continuous, numerical data
- Datetime : This metric converts datetime values into numerical values
This metric ignores missing values.
- (best) 1.0: The synthetic column covers the range of values present in the real column
- (worst) 0.0: The synthetic column does not overlap at all with the range of values in the real column
The plot below shows some fictitious real and synthetic data (black and green respectively) with RangeCoverage=0.82.
The real data is in range [37.0, 97.7] while the synthetic data is in the range [45, 95]. The synthetic data fails to cover the lower end and higher ends of the real values: [37, 45] and [95, 97.7]. The missing ranges account for roughly 18% of the overall range, making the RangeCoverage 0.82.
If r and s represent the real and synthetic columns, then this metric computes how close the min and max values of s come to the true min and max values in r according to the formula below.
If the synthetic data does has extremely poor range coverage, the equation above may become negative. In this case, we report a score 0 since it is the lowest possible value.
Note that the score isn't penalized if the synthetic data data goes out of bounds. If the synthetic data reaches beyond the real min and max, the range is fully covered and the score will be 1.
To manually apply this metric, access the the
single_columnmodule and use the
from sdmetrics.single_column import RangeCoverage
real_data: A pandas.Series object with the column of real data
synthetic_data: A pandas.Series object with the column of synthetic data
If the synthetic data is going out of bounds (the min is less than the real min or the max is greater than the real max), then this metric considers that part of the range covered.