Ejemplo n.º 1
0
        /// <summary>
        /// проверка на соответствие нормальному закону распределния ряда. озвращая критерий согласия Пирсона для этого ряда
        /// http://www.ekonomstat.ru/kurs-lektsij-po-teorii-statistiki/403-proverka-sootvetstvija-rjada-raspredelenija.html
        /// https://life-prog.ru/2_84515_proverka-po-kriteriyu-hi-kvadrat.html критерий пирсона
        /// https://math.semestr.ru/group/example-normal-distribution.php для нормального распределения
        /// </summary>
        /// <param name="range">ряд</param>
        /// <param name="parameter">проверяемый параметр</param>
        /// <returns></returns>
        private static double checkNormalLaw(RawRange range, MeteorologyParameters parameter)
        {
            GradationInfo <GradationItem> grads;

            switch (parameter)
            {
            case MeteorologyParameters.Speed:
                grads = new GradationInfo <GradationItem>(0, SPEED_GRADATION_STEP, range.Max((item) => { return(item.Speed); }));   //градации скорости
                break;

            case MeteorologyParameters.Direction:
                StatisticalRange <WindDirections16> srwd = StatisticEngine.GetDirectionExpectancy(range, GradationInfo <WindDirections16> .Rhumb16Gradations);

                return(0);

            case MeteorologyParameters.Temperature:
                grads = new GradationInfo <GradationItem>(0, TEMPERATURE_GRADATION_STEP, range.Max((item) => { return(item.Temperature); }));   //градации температуры
                break;

            case MeteorologyParameters.Wetness:
                grads = new GradationInfo <GradationItem>(0, WETNESS_GRADATION_STEP, range.Max((item) => { return(item.Wetness); }));   //градации влажности
                break;

            default: throw new WindEnergyException("Этот параметр не реализован");
            }

            //РАСЧЕТ ДЛЯ ВСЕХ, КРОМЕ НАПРАВЛЕНИЙ
            StatisticalRange <GradationItem> stat_range = StatisticEngine.GetExpectancy(range, grads, parameter); //статистический ряд

            // TODO: расчет критерия пирсона для ряда

            return(0);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// создаёт статистический ряд из ряда наблюдений по заданным интервалам (градациям)
 /// </summary>
 /// <param name="range"></param>
 /// <param name="gradation"></param>
 public StatisticalRange(List <double> range, GradationInfo <T> gradation)
 {
     Gradation  = gradation;
     Keys       = new List <object>();
     Values     = new List <double>();
     RangeCount = range.Count;
     foreach (object g in gradation.Items)
     {
         Keys.Add(g);
         Values.Add(0);
     }
     loadRange(range);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// получить статистический ряд по заданным значениям и заданным градациям
        /// </summary>
        /// <param name="tempr"></param>
        /// <param name="rhumb8Gradations"></param>
        /// <returns></returns>
        public static StatisticalRange <WindDirections8> GetDirectionExpectancy(RawRange tempr, GradationInfo <WindDirections8> rhumb8Gradations)
        {
            List <double> spds = new List <double>(from t in tempr select t.Direction);
            StatisticalRange <WindDirections8> r = new StatisticalRange <WindDirections8>(spds, rhumb8Gradations);

            return(reorganizeCalm(r));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// получить статистический ряд по заданным значениям и заданным градациям
        /// </summary>
        /// <param name="range"></param>
        /// <param name="gradations"></param>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public static StatisticalRange <GradationItem> GetExpectancy(IList <RawItem> range, GradationInfo <GradationItem> gradations, MeteorologyParameters parameter = MeteorologyParameters.Speed)
        {
            List <double> rang;

            switch (parameter)
            {
            case MeteorologyParameters.Speed:
                rang = new List <double>(from t in range select t.Speed);
                break;

            case MeteorologyParameters.Direction:
                rang = new List <double>(from t in range select t.Direction);
                break;

            case MeteorologyParameters.Temperature:
                rang = new List <double>(from t in range select t.Temperature);
                break;

            case MeteorologyParameters.Wetness:
                rang = new List <double>(from t in range select t.Wetness);
                break;

            default: throw new WindEnergyException("Этот параметр не реализован");
            }
            StatisticalRange <GradationItem> r = new StatisticalRange <GradationItem>(rang, gradations);

            return(r);
        }