private static List <double> AnnualBiasCorrection(List <Point> obs, List <Point> sim, List <Point> fut) { List <double> fut_avgs = Utils.GetWYAnnualAverages(fut); AnnualCDF obs_dist = new AnnualCDF(obs); AnnualCDF sim_dist = new AnnualCDF(sim); var rval = new List <double> { }; foreach (var item in fut_avgs) { double value = GetBiasCorrectedFlow(item, obs_dist.Flow, obs_dist.Probability, obs_dist.LNfit, sim_dist.Flow, sim_dist.Probability, sim_dist.LNfit); rval.Add(value); } return(rval); }
public AnnualCDF(List <Point> points) { var values = Utils.GetWYAnnualAverages(points); List <double> sorted_values; var cdf = Utils.ComputeCDF(values, out sorted_values); Probability = cdf; Flow = sorted_values; LNfit = new LNFit(values); }
/// <summary> /// Dictionary of key=wy, value=annual_factor /// </summary> /// <param name="biasedAnnual"></param> /// <param name="biasedMonthly"></param> /// <param name="startYear"></param> /// <returns></returns> private static Dictionary <int, double> GetAnnualFactors( List <double> biasedAnnual, List <Point> biasedMonthly) { var rval = new Dictionary <int, double> { }; List <double> biasedMonthlyAnnual = Utils.GetWYAnnualAverages(biasedMonthly); int startYear = biasedMonthly[0].Date.Year + 1; for (int i = 0; i < biasedAnnual.Count; i++) { rval.Add(startYear + i, biasedAnnual[i] / biasedMonthlyAnnual[i]); } return(rval); }