Ejemplo n.º 1
0
        private static Point[] CalculateProbabilityFunctionValues(double[] FValues, double[] breakPoints, double intervalLength)
        {
            var probabilityFunctionValues = new Point[breakPoints.Length - 1];

            for (var i = 0; i < breakPoints.Length - 1; i++)
            {
                var funcValue = (FValues[i + 1] - FValues[i]) / intervalLength;
                probabilityFunctionValues[i] = new Point(breakPoints[i], funcValue);
            }

            return(probabilityFunctionValues);
        }
Ejemplo n.º 2
0
        public static (Point[], Point[]) CalculateExpectedAndActualPDFValues(Distribution distribution, double[] variableValues)
        {
            //var numberOfIntervals = (int)Math.Ceiling(1 + 3.322 * Math.Log10(variableValues.Count()));
            var numberOfIntervals = 10;
            var numberOfPoints    = numberOfIntervals;

            var min            = variableValues.Min();
            var max            = variableValues.Max();
            var intervalLength = (max - min) / numberOfIntervals;

            min = min + intervalLength;
            max = max - intervalLength;

            //var count1 = variableValues.Where(v => v < min + intervalLength).ToList();

            var breakPoints = new double[numberOfPoints];

            for (var i = 0; i < numberOfPoints; i++)
            {
                breakPoints[i] = min + i * intervalLength;
            }

            // считаем кол-во попаданий в интервалы
            var counts  = new int[numberOfPoints];
            var FValues = new double[numberOfPoints];

            for (var i = 0; i < breakPoints.Length; i++)
            {
                var currentValue = breakPoints[i];

                var count = variableValues.Where(v => v <= currentValue).Count();
                counts[i]  = count;
                FValues[i] = (double)count / variableValues.Length;
            }

            var pdfValuesActual = new Point[numberOfPoints - 1];

            for (int i = 0; i < pdfValuesActual.Length; i++)
            {
                var variableValue = breakPoints[i];
                pdfValuesActual[i] = new Point(variableValue, distribution.GetPdfValueAtPoint(variableValue));
            }

            var pdfValuesExpected = CalculateProbabilityFunctionValues(FValues, breakPoints, intervalLength);

            return(pdfValuesExpected, pdfValuesActual);
        }