Remove NumericStats temporarily.
NumericStats support will be reenabled when the formula is resolved.
See: go/tq-cobalt-error-formulae
Change-Id: Ibc9b3611e53e6e951b439e7718b3aea15acb7d7d
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/477718
Reviewed-by: Alexandre Zani <azani@google.com>
Commit-Queue: Jared Weinstein <jaredweinstein@google.com>
diff --git a/src/bin/config_parser/src/privacy/error_calculator.go b/src/bin/config_parser/src/privacy/error_calculator.go
index 357d937..f0e9c50 100644
--- a/src/bin/config_parser/src/privacy/error_calculator.go
+++ b/src/bin/config_parser/src/privacy/error_calculator.go
@@ -62,16 +62,17 @@
errorEstimate = MultipleContributionRapporRMSE(24*population, privacyEncodingParams, report.MaxCount)
case config.ReportDefinition_FLEETWIDE_HISTOGRAMS:
errorEstimate = MultipleContributionRapporRMSE(24*population, privacyEncodingParams, 1)
- case config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS:
- if err := meanReportConfigurationError(report, minDenominatorEstimate); err != nil {
- return -1, err
- }
- errorEstimate = NumericStatsRapporRMSE(population, privacyEncodingParams, minDenominatorEstimate, report)
- case config.ReportDefinition_HOURLY_VALUE_NUMERIC_STATS:
- if err := meanReportConfigurationError(report, minDenominatorEstimate); err != nil {
- return -1, err
- }
- errorEstimate = NumericStatsRapporRMSE(24*population, privacyEncodingParams, minDenominatorEstimate, report)
+ // TODO(jaredweinstein): Enable NumericStats once the formula is resolved.
+ // case config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS:
+ // if err := meanReportConfigurationError(report, minDenominatorEstimate); err != nil {
+ // return -1, err
+ // }
+ // errorEstimate = NumericStatsRapporRMSE(population, privacyEncodingParams, minDenominatorEstimate, report)
+ // case config.ReportDefinition_HOURLY_VALUE_NUMERIC_STATS:
+ // if err := meanReportConfigurationError(report, minDenominatorEstimate); err != nil {
+ // return -1, err
+ // }
+ // errorEstimate = NumericStatsRapporRMSE(24*population, privacyEncodingParams, minDenominatorEstimate, report)
case config.ReportDefinition_FLEETWIDE_MEANS:
if err := meanReportConfigurationError(report, minDenominatorEstimate); err != nil {
return -1, err
@@ -112,21 +113,22 @@
return estimate
}
-func NumericStatsRapporRMSE(population uint64, params PrivacyEncodingParams, minDenominatorEstimate uint64, report *config.ReportDefinition) float64 {
- sigma := SingleContributionRapporRMSE(population, params)
- a := params.ProbBitFlip / (1 - 2*params.ProbBitFlip)
- M := uint64(math.Max(math.Abs(float64(report.MinValue)), math.Abs(float64(report.MaxValue))))
-
- // Numerator is aggregated like FleetwideOccurrenceCounts.
- rmseNumerator := MultipleContributionRapporRMSE(population, params, M)
- mseNumerator := math.Pow(rmseNumerator, 2)
-
- // Denominator is aggregated like UniqueDeviceCounts.
- rmseDenominator := SingleContributionRapporRMSE(population, params)
- mseDenominator := math.Pow(rmseDenominator, 2)
-
- return meanRapporRMSE(mseNumerator, mseDenominator, sigma, a, float64(M), float64(minDenominatorEstimate))
-}
+// TODO(jaredweinstein): Add back NumericStats once the formula is resolved.
+// func NumericStatsRapporRMSE(population uint64, params PrivacyEncodingParams, minDenominatorEstimate uint64, report *config.ReportDefinition) float64 {
+// sigma := SingleContributionRapporRMSE(population, params)
+// a := params.ProbBitFlip / (1 - 2*params.ProbBitFlip)
+// M := uint64(math.Max(math.Abs(float64(report.MinValue)), math.Abs(float64(report.MaxValue))))
+//
+// // Numerator is aggregated like FleetwideOccurrenceCounts.
+// rmseNumerator := MultipleContributionRapporRMSE(population, params, M)
+// mseNumerator := math.Pow(rmseNumerator, 2)
+//
+// // Denominator is aggregated like UniqueDeviceCounts.
+// rmseDenominator := SingleContributionRapporRMSE(population, params)
+// mseDenominator := math.Pow(rmseDenominator, 2)
+//
+// return meanRapporRMSE(mseNumerator, mseDenominator, sigma, a, float64(M), float64(minDenominatorEstimate))
+// }
func FleetwideMeansRapporRMSE(population uint64, params PrivacyEncodingParams, minDenominatorEstimate uint64, report *config.ReportDefinition) float64 {
t := float64(report.MaxCount)
diff --git a/src/bin/config_parser/src/privacy/error_calculator_test.go b/src/bin/config_parser/src/privacy/error_calculator_test.go
index 89df399..b7c8736 100644
--- a/src/bin/config_parser/src/privacy/error_calculator_test.go
+++ b/src/bin/config_parser/src/privacy/error_calculator_test.go
@@ -61,20 +61,20 @@
ReportType: config.ReportDefinition_FLEETWIDE_HISTOGRAMS,
LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
}
- uniqueDeviceNumericStats := config.ReportDefinition{
- ReportName: "UniqueDeviceNumericStats",
- ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
- MaxValue: 1,
- }
- hourlyValueNumericStats := config.ReportDefinition{
- ReportName: "HourlyDeviceNumericStats",
- ReportType: config.ReportDefinition_HOURLY_VALUE_NUMERIC_STATS,
- MaxValue: 1,
- }
- uniqueDeviceNumericStatsMissingMaxValue := config.ReportDefinition{
- ReportName: "UniqueDeviceNumericStatsMissingMaxValue",
- ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
- }
+ // uniqueDeviceNumericStats := config.ReportDefinition{
+ // ReportName: "UniqueDeviceNumericStats",
+ // ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
+ // MaxValue: 1,
+ // }
+ // hourlyValueNumericStats := config.ReportDefinition{
+ // ReportName: "HourlyDeviceNumericStats",
+ // ReportType: config.ReportDefinition_HOURLY_VALUE_NUMERIC_STATS,
+ // MaxValue: 1,
+ // }
+ // uniqueDeviceNumericStatsMissingMaxValue := config.ReportDefinition{
+ // ReportName: "UniqueDeviceNumericStatsMissingMaxValue",
+ // ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
+ // }
fleetwideMeans := config.ReportDefinition{
ReportName: "FleetwideMeans",
ReportType: config.ReportDefinition_FLEETWIDE_MEANS,
@@ -128,14 +128,14 @@
{args{&testMetric, &fleetwideHistogram, 1, 20000, 0}, true, 74.80302164673793},
// Mean reports
- {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 500}, true, 0.027891803930152177},
- {args{&testMetric, &uniqueDeviceNumericStats, 10, 10000, 500}, true, 0.018650077285590205},
- {args{&testMetric, &uniqueDeviceNumericStats, 1, 20000, 500}, true, 0.039654432133364455},
- {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 2000}, true, 0.006907368191507632},
- {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 500}, true, 0.14403990551821316},
- {args{&testMetric, &hourlyValueNumericStats, 10, 10000, 500}, true, 0.09424308127635954},
- {args{&testMetric, &hourlyValueNumericStats, 1, 20000, 500}, true, 0.20996453488325503},
- {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 2000}, true, 0.03425744055252169},
+ // {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 500}, true, 0.027891803930152177},
+ // {args{&testMetric, &uniqueDeviceNumericStats, 10, 10000, 500}, true, 0.018650077285590205},
+ // {args{&testMetric, &uniqueDeviceNumericStats, 1, 20000, 500}, true, 0.039654432133364455},
+ // {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 2000}, true, 0.006907368191507632},
+ // {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 500}, true, 0.14403990551821316},
+ // {args{&testMetric, &hourlyValueNumericStats, 10, 10000, 500}, true, 0.09424308127635954},
+ // {args{&testMetric, &hourlyValueNumericStats, 1, 20000, 500}, true, 0.20996453488325503},
+ // {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 2000}, true, 0.03425744055252169},
{args{&testMetric, &fleetwideMeans, 1, 10000, 500}, true, 0.14403990551821316},
{args{&testMetric, &fleetwideMeans, 10, 10000, 500}, true, 0.09424308127635954},
{args{&testMetric, &fleetwideMeans, 1, 20000, 500}, true, 0.20996453488325503},
@@ -147,9 +147,9 @@
// Invalid input
// Mean Report missing minDenominatorEstimate
- {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 0}, false, 0},
- {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 0}, false, 0},
- {args{&testMetric, &uniqueDeviceNumericStatsMissingMaxValue, 1, 10000, 500}, false, 0},
+ // {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 0}, false, 0},
+ // {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 0}, false, 0},
+ // {args{&testMetric, &uniqueDeviceNumericStatsMissingMaxValue, 1, 10000, 500}, false, 0},
{args{&testMetric, &fleetwideMeansMissingMaxValue, 1, 10000, 500}, false, 0},
// This report type is not currently supported.