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; }
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); }