func()

in go/distinct_count_accuracy_profile.go [122:180]


func (d *DistinctCountAccuracyProfile) process(cumTrials int, sb *strings.Builder) {
	points := len(d.stats)
	for pt := 0; pt < points; pt++ {
		q := d.stats[pt].(*accuracyStats)

		trueUniques := q.trueValue
		meanEst := q.sumEst / float64(cumTrials)
		meanRelErr := q.sumRelErr / float64(cumTrials)
		meanSqErr := q.sumSqRelErr / float64(cumTrials)
		normMeanSqErr := meanSqErr / (float64(trueUniques) * float64(trueUniques))
		rmsRelErr := math.Sqrt(normMeanSqErr)

		relLb3 := q.sumLB3/float64(cumTrials)/float64(trueUniques) - 1.0
		relLb2 := q.sumLB2/float64(cumTrials)/float64(trueUniques) - 1.0
		relLb1 := q.sumLB1/float64(cumTrials)/float64(trueUniques) - 1.0

		relUb1 := q.sumUB1/float64(cumTrials)/float64(trueUniques) - 1.0
		relUb2 := q.sumUB2/float64(cumTrials)/float64(trueUniques) - 1.0
		relUb3 := q.sumUB3/float64(cumTrials)/float64(trueUniques) - 1.0

		sb.WriteString(fmt.Sprintf("%d", trueUniques))
		sb.WriteString("\t")

		sb.WriteString(fmt.Sprintf("%e", meanEst))
		sb.WriteString("\t")

		sb.WriteString(fmt.Sprintf("%e", meanRelErr))
		sb.WriteString("\t")

		sb.WriteString(fmt.Sprintf("%e", rmsRelErr))
		sb.WriteString("\t")

		sb.WriteString(fmt.Sprintf("%d", cumTrials))
		sb.WriteString("\t")

		// Quantiles
		quants, _ := q.qsk.GetQuantiles(GAUSSIANS_3SD, true)
		for i := 0; i < len(quants); i++ {
			sb.WriteString(fmt.Sprintf("%e", quants[i]/float64(trueUniques)-1.0))
			sb.WriteString("\t")
		}

		// Bound averages
		sb.WriteString(fmt.Sprintf("%e", relLb3))
		sb.WriteString("\t")
		sb.WriteString(fmt.Sprintf("%e", relLb2))
		sb.WriteString("\t")
		sb.WriteString(fmt.Sprintf("%e", relLb1))
		sb.WriteString("\t")

		sb.WriteString(fmt.Sprintf("%e", relUb1))
		sb.WriteString("\t")
		sb.WriteString(fmt.Sprintf("%e", relUb2))
		sb.WriteString("\t")
		sb.WriteString(fmt.Sprintf("%e", relUb3))
		sb.WriteString("\n")

	}
}