Ejemplo n.º 1
0
        public static double[] CheckOutstanding(double[] data, out double[] clearData, float alpha)
        {
            List <double> dataList  = new List <double>(data);
            List <double> trashList = new List <double>();
            bool          changes;

            do
            {
                changes = false;
                data    = dataList.ToArray();
                double mean = StatisticsProcessor.Srednee(data);
                double S    = Math.Sqrt(StatisticsProcessor.Dispersion(data));

                double Xmax  = StatisticsProcessor.FindMax(data);
                double TnMax = (Xmax - mean) / S;
                if (TnMax > TTable(alpha, (uint)(data.Length)))
                {
                    changes = true;
                    dataList.Remove(Xmax);
                    trashList.Add(Xmax);
                }

                double Xmin  = StatisticsProcessor.FindMin(data);
                double TnMin = (mean - Xmin) / S;
                if (TnMin > TTable(alpha, (uint)(data.Length)))
                {
                    changes = true;
                    dataList.Remove(Xmin);
                    trashList.Add(Xmin);
                }
            }while (changes);

            clearData = dataList.ToArray();
            return(trashList.Count > 0 ? trashList.ToArray() : null);
        }
Ejemplo n.º 2
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)));
        }