Ejemplo n.º 1
0
        public static bool CheckZn(double[] data, Zakon zn, float alpha)
        {
            double[] ΔLeft, ΔRight;
            int[]    v;
            int      k = StatisticsProcessor.ToIntervals(data, out ΔLeft, out ΔRight, out v);

            double σв   = Math.Sqrt(StatisticsProcessor.Dispersion(data));
            double mean = StatisticsProcessor.Srednee(data);

            double[] p = new double[k];

            for (int i = 0; i < k; i++)
            {
                double x1 = ΔLeft[i];
                double x2 = ΔRight[i];

                switch (zn)
                {
                case Zakon.Ravnom:
                    p[i] = FxRavnom(x2, mean - 1.732 * σв, mean + 1.732 * σв) -
                           FxRavnom(x1, mean - 1.732 * σв, mean + 1.732 * σв);
                    break;

                case Zakon.Exponential:
                    p[i] = FxExponential(x2, 1f / mean) - FxExponential(x1, 1f / mean);
                    break;

                case Zakon.Normal:
                    p[i] = FxNormal((x2 - mean) / σв) - FxNormal((x1 - mean) / σв);
                    break;
                }
            }

            double χSqr = 0;

            for (int i = 0; i < k; i++)
            {
                χSqr += (v[i] - data.Length * p[i]) * (v[i] - data.Length * p[i]) / data.Length / p[i];
            }

            int s = 0;

            switch (zn)
            {
            case Zakon.Ravnom:
                s = 2;
                break;

            case Zakon.Exponential:
                s = 1;
                break;

            case Zakon.Normal:
                s = 2;
                break;
            }

            return(χSqr < χSqrTable(alpha, (uint)(k - s - 1)));
        }
Ejemplo n.º 2
0
        public static double[] EmpVals(double[] data)
        {
            double[] lX, rX;
            int[]    nX;
            StatisticsProcessor.ToIntervals(data, out lX, out rX, out nX);

            double[] res = new double[nX.Length];

            double sum = 0;

            for (int i = 0; i < nX.Length; i++)
            {
                sum   += nX[i];
                res[i] = sum / data.Length;
            }

            return(res);
        }