private static List<Point> DoMonthlyBiasCorrection(List<Point> obs,
List<Point> sim, List<Point> fut)
{
var obs_dist = new List<MonthCDF> { };
var sim_dist = new List<MonthCDF> { };
for (int i = 1; i <= 12; i++) //calender year list
{
obs_dist.Add(new MonthCDF(obs, i));
sim_dist.Add(new MonthCDF(sim, i));
}
var rval = new List<Point> { };
foreach (Point pt in fut)
{
var obs_cdf = obs_dist[pt.Date.Month - 1];
var sim_cdf = sim_dist[pt.Date.Month - 1];
double value = GetBiasCorrectedFlow(pt.Value,
obs_cdf.Flow,
obs_cdf.Probability,
obs_cdf.LNfit,
sim_cdf.Flow,
sim_cdf.Probability,
sim_cdf.LNfit);
rval.Add(new Point(pt.Date, value));
}
return rval;
}