/// <summary> /// Build the array <c>z</c>. /// </summary> protected void Buildz() { z2 = new CompositeKeyArray <Expert, Variable> (NbQuantiles + 1); foreach (var expert in OrderedExperts) { foreach (var variable in Variables.Where(x => x.Calibration)) { var vector = new double[NbQuantiles + 1]; for (int t = 0; t < vector.Length; t++) { double upper, lower; if (t == 0) { upper = Estimates[expert, variable][t]; vector[t] = (variable.Value <= upper) ? 1 : 0; } else if (t == Estimates.ArrayLength) { lower = Estimates[expert, variable][t - 1]; vector[t] = (variable.Value > lower) ? 1 : 0; } else { lower = Estimates[expert, variable][t - 1]; upper = Estimates[expert, variable][t]; vector[t] = (variable.Value > lower & variable.Value <= upper) ? 1 : 0; } } z2.Add(expert, variable, vector); } } }
protected ExpertOpinionFramework(double[] quantileVector) { OvershootFactor = 0.1; QuantileVector = quantileVector; LowerBound = null; UpperBound = null; Estimates = new CompositeKeyArray <Expert, Variable> (QuantileVector.Length - 2); }