예제 #1
0
        /// <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);
        }