예제 #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            string RESULT = "Результат:\n";
            int    num1   = 0;
            int    num2   = 0;

            try
            {
                num1 = Convert.ToInt32(textBox1.Text);
                num2 = Convert.ToInt32(textBox2.Text);
            }
            catch
            {
                MessageBox.Show("Не введено дані!");
                return;
            }
            var First = _f.ReturnTuple(num1 - 1);
            var Second = _f.ReturnTuple(num2 - 1);
            int N1 = First.Item2, N2 = Second.Item2;

            double[] X1 = new double[N1];
            double[] Y1 = new double[N1];
            double[] X2 = new double[N2];
            double[] Y2 = new double[N2];
            for (int i = 0; i < N1; i++)
            {
                X1[i] = First.Item1[i, 0];
                Y1[i] = First.Item1[i, 1];
            }
            for (int i = 0; i < N2; i++)
            {
                X2[i] = Second.Item1[i, 0];
                Y2[i] = Second.Item1[i, 1];
            }

            double t_stat = this.Bt_stat(X1, Y1, X2, Y2);

            if (Math.Abs(t_stat) <= Quantil.StudentQuantil1(this.StepinViln(X1, Y1, X2, Y2)))
            {
                RESULT += "\n1)За наближеними формулами результат перевірки на збіг коефіцієнта В позитивний.\n  Статистика Т = " + Math.Round(t_stat, 4).ToString() + "\n";
            }
            else
            {
                RESULT += "\n1)За наближеними формулами результат перевірки на збіг коефіцієнта В негативний.\n  Статистика Т = " + Math.Round(t_stat, 4).ToString() + "\n";
            }
            double u_stat = this.Ustatistic(X1, Y1, X2, Y2);

            if (Math.Abs(u_stat) <= Quantil.NormalQuantil())
            {
                RESULT += "\n2)За наближеними формулами результат перевірки на збіг коефіцієнта A позитивний.\n  Статистика U = " + Math.Round(u_stat, 4).ToString() + "\n";
            }
            else
            {
                RESULT += "\n2)За наближеними формулами результат перевірки на збіг коефіцієнта A негативний.\n  Статистика U = " + Math.Round(u_stat, 4).ToString() + "\n";
            }
            label3.Text = RESULT;
        }
예제 #2
0
        static public double QuantilFishera(int N1, int N2)
        {
            double res;
            double norm_kv = Quantil.NormalQuantil();
            double sig     = (1.0 / N1) + (1.0 / N2);
            double delta   = (1.0 / N1) - (1.0 / N2);

            res  = norm_kv * Math.Sqrt(sig / 2.0);
            res -= (1.0 / 6) * delta * (Math.Pow(norm_kv, 2) + 2);
            res += Math.Sqrt(sig / 2.0) * ((sig / 24) * (Math.Pow(norm_kv, 2) + 3 * norm_kv) + (1.0 / 72) * (delta * delta / sig) * (Math.Pow(norm_kv, 3) + 11 * norm_kv));
            res -= (delta * sig / 120) * (Math.Pow(norm_kv, 4) + 9 * Math.Pow(norm_kv, 2) + 8);
            res += Math.Pow(delta, 3) / (sig * 3240) * (3 * Math.Pow(norm_kv, 4) + 7 * Math.Pow(norm_kv, 2) - 16);
            res += Math.Sqrt(sig / 2.0) * ((Math.Pow(sig, 2) / 1920) * (Math.Pow(norm_kv, 5) + 20 * Math.Pow(norm_kv, 3) + 15 * norm_kv) + (Math.Pow(delta, 4) / 2880) * (Math.Pow(norm_kv, 5) + 44 * Math.Pow(norm_kv, 3) + 183 * norm_kv) + (Math.Pow(delta, 4) / (155520 * sig * sig)) * (9 * Math.Pow(norm_kv, 5) - 284 * Math.Pow(norm_kv, 3) - 1513 * norm_kv));
            res  = Math.Exp(2 * res);
            return(res);
        }