private TestEval eval(List <int> estimates, int vocabSize, string descr) { TestEval res = new TestEval { Descr = descr, VocabSize = vocabSize, RunCount = estimates.Count }; int sum = 0; int diffSum = 0; foreach (int est in estimates) { sum += est; int diff = Math.Abs(vocabSize - est); diffSum += diff; if (diff <= 500) { ++res.Range0500; } else if (diff < 1000) { ++res.Range1000; } else if (diff < 1500) { ++res.Range1500; } else if (diff < 2000) { ++res.Range2000; } else if (diff < 2500) { ++res.Range2500; } else if (diff < 3000) { ++res.Range3000; } else if (diff < 3500) { ++res.Range3500; } else if (diff < 4000) { ++res.Range4000; } else if (diff < 4500) { ++res.Range4500; } else { ++res.RangeGreater; } } res.AvgEstimate = sum / estimates.Count; res.AvgDiff = diffSum / estimates.Count; return(res); }
public override void Process() { // Split rank-based sim with points denser in first part simSplitRank(); // Split prop sim with points denser in first part simSplitProp(); // Old. List <int> estimates = new List <int>(); genPointsLinear(0, dictSize, points); // Muchos FlatA trials: proportional estimate with linear points estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsFlatA); estimates.Add(simProp(points, dictSize, 0)); } TestEval evalFlatAProp = eval(estimates, vocabSize, "FlatA, proportion, linear"); // Muchos SkewA trials: proportional estimate with linear points estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewA); estimates.Add(simProp(points, dictSize, 0)); } TestEval eee = eval(estimates, vocabSize, "SkewA, proportion, linear"); // Muchos SkewA trials: proportional estimate with linear points estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewB); estimates.Add(simProp(points, dictSize, 0)); } TestEval evalSkewAProp = eval(estimates, vocabSize, "SkewA, proportion, linear"); // Muchos SkewB trials: proportional estimate with linear points estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewC); estimates.Add(simProp(points, dictSize, 0)); } TestEval evalSkewBProp = eval(estimates, vocabSize, "SkewB, proportion, linear"); }
private void simSplitProp() { genPointsLinHalf(0, 16500, pointsX); genPointsLinHalf(0, 33500, pointsY); List <int> estimates = new List <int>(); for (int i = 0; i != 1000; ++i) { genSubject(propsFlatA); int estX = simProp(pointsX, 16500, 0); int estY = simProp(pointsY, 33500, 16500); estimates.Add(estX + estY); } TestEval srFlatA = eval(estimates, vocabSize, ""); estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewA); int estX = simProp(pointsX, 16500, 0); int estY = simProp(pointsY, 33500, 16500); estimates.Add(estX + estY); } TestEval srSkewA = eval(estimates, vocabSize, ""); estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewB); int estX = simProp(pointsX, 16500, 0); int estY = simProp(pointsY, 33500, 16500); estimates.Add(estX + estY); } TestEval srSkewB = eval(estimates, vocabSize, ""); estimates.Clear(); for (int i = 0; i != 1000; ++i) { genSubject(propsSkewC); int estX = simProp(pointsX, 16500, 0); int estY = simProp(pointsY, 33500, 16500); estimates.Add(estX + estY); } TestEval srSkewC = eval(estimates, vocabSize, ""); }