PoolAdjacentViolatorsModel.Observation observation = new PoolAdjacentViolatorsModel.Observation
(csvReader.dataLists.get("target_cpc_customers").get(i), csvReader.dataLists.get("effective_cust_daily_spend").get(i));
observations.add(observation);
}
PoolAdjacentViolatorsModel pav = new PoolAdjacentViolatorsModel(observations, 4);
PoolAdjacentViolatorsModel.Observation prev = null;
// observations.sort(Comparator.<PoolAdjacentViolatorsModel.Observation>naturalOrder());
for (PoolAdjacentViolatorsModel.Observation observation : observations) {
PoolAdjacentViolatorsModel.Observation obsToAdd = new PoolAdjacentViolatorsModel.Observation(observation.input, pav.predict(observation.input));
predictions.add(obsToAdd);
if (prev !=null && prev.output < observation.output)
System.out.println("prev out: " + prev.toString() + ". obs.input: " + obsToAdd.toString());
prev = obsToAdd;
}
TreeSet<PoolAdjacentViolatorsModel.Observation> calibrationSet = pav.getCalibrationSet();
TreeSet<PoolAdjacentViolatorsModel.Observation> preSmoothingSet = pav.getPreSmoothingSet();
System.out.println("calibration set: " + calibrationSet.toString());
LinePlotter linePlotter = new LinePlotterBuilder().chartTitle("pav trial").xAxisLabel("cpc").yAxisLabel("rate").buildLinePlotter();
linePlotter.addSeries(calibrationSet, "unweigted linear interpolation");
linePlotter.addSeries(predictions, "weighted linear interpolation");
linePlotter.addSeries(preSmoothingSet, "binned observations with weight 4");