D
|
Дисперсия
каждой выборки
|
Массив
выборок
|
D0
|
Средняя
дисперсия выборок
|
F
|
Значение
критерия Фишера
|
Fkr
|
Критическое
значение критерия Фишера
|
M1
|
Мат.
ожидание первой выборки
|
N
|
Объем
выборок
|
g
|
Значение
критерия Кохрана
|
K
|
Число
выборок
|
DM
|
Шаг
мат. ожидания
|
SumD
|
Сумма
дисперсий выборок
|
MaxD
|
Dy
|
Общая
выборочная дисперсия
|
DA
|
Дисперсия
влияния фактора
|
SG
|
Генеральная
дисперсия
|
M
|
Массив
мат. ожиданий выборок
|
Mid
|
Среднее
значение выборок
|
3. Текст
программы
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;oed5lab
{partial class Form1 : Form
{Form1()
{();
}Random R = new Random();float
NormRasp(double m, double sg)
{sum = 0;(int i = 0; i < 12;
i++)+= (float)R.NextDouble();(float)(m + sg * (sum - 6));
}InverseNormalCDF(double alpha)
{res = 0, p = 0, t = 0, q = 0;(alpha
< 0.5)= alpha;= 1 - alpha;= Math.Sqrt(-2 * Math.Log(p, Math.E));= t -
((0.010328 * t + 0.802853) * t + 2.515517) / (((0.001308 * t + 0.189269) * t +
1.432788) * t + 1);(alpha > 0.5)= q;= -q;res;
}void button1_Click(object sender,
EventArgs e)
//Введите объем
выборки:N=Convert.ToInt32(textBox1.Text);
//Введите число уровней фактора:K =
Convert.ToInt32(textBox4.Text);
//Введите математическое ожидание на
первом уровне:M1 = Convert.ToDouble(textBox2.Text);
//Введите изменение математического
ожидания:DM = Convert.ToDouble(textBox3.Text);
//Введите генеральное значение
среднеквадратичного отклонения:SG= Convert.ToDouble(textBox5.Text);.Text =
"";[,] Matrix = new double[K, N];(int i = 0; i < K; i++)
{(int j = 0; j < N; j++)
{[i, j] = NormRasp(M1 + i * DM, SG);
// label8.Text +=
Math.Round(Matrix[i, j],3) + "\t";.Text += Math.Round(Matrix[i, j],
3) + "\t";
}
//label8.Text += "\n";.Text
+= "\n";
}[] M = new double[K];(int i = 0; i
< K; i++)
{[i] = 0;(int j = 0; j < N;
j++)[i] += Matrix[i, j];[i] /= (double)N;
}[] D = new double[K];MaxD = 0;SumD
= 0;(int i = 0; i < K; i++)
{[i] = 0;(int j = 0; j < N;
j++)[i] += (Matrix[i, j] - M[i]) * (Matrix[i, j] - M[i]);[i] = D[i] /
(double)(N - 1);(D[i] > MaxD) MaxD = D[i];+= D[i];
}g = MaxD / (SumD -
MaxD);.Text="Значение критерия Кохрана " + Math.Round(g,3) +
"\n";Mid = 0;(int i = 0; i < K; i++)+= M[i];/= (double)K;.Text +=
"Математическое ожидание " + Math.Round(Mid,3) + "\n";Dy =
0;(int i = 0; i < K; i++)(int j = 0; j < N; j++)+= (Matrix[i, j] - Mid) *
(Matrix[i, j] - Mid);/= (double)K * N - 1;.Text += "Общая выборочная
дисперсия " + Math.Round(Dy,3) + "\n";D0 = 0;(int i = 0; i <
K; i++)+= D[i];/= (double)K;.Text += "Средняя дисперсия по уровням "
+ Math.Round(D0,3) + "\n";DA = 0;(int i = 0; i < K; i++)+= (M[i] -
Mid) * (M[i] - Mid);*= (double)N / (K - 1);.Text += "Дисперсия фактора
" + Math.Round(DA,3) + "\n";F = DA / D0;.Text += "Влияние
фактора " + Math.Round(DA,3) +"\n";p =
Convert.ToDouble(comboBox1.Text.ToString());u =
Math.Abs(InverseNormalCDF(p));//квинтиль нормального распределенияuq =
Math.Pow(u, 2);//квадрат квинтиляL = (uq - 3) / 6;H = 2.0 * (K - 2) * (K * (N -
1) - 1) / (K * N - 2);W = u * Math.Sqrt(H + L) / H - (1.0 / (K - 2) - 1.0 / (K
* (N - 1) - 1)) * (L + 5.0 / 6 - 2.0 / 3 / H);Fkr = Math.Exp(W * 2);.Text +=
"Критическое значение " + Math.Round(Fkr,3) + "\n";.Text
+="Влияние фактора ";(F < Fkr) label6.Text +=
"Несущественно\n";label6.Text += "Cущественно\n";
}
}
}
. Пример
выборка распределение дисперсионный
однофакторный
Была разработана программа, генерирующая
значения случайных величин, имеющих нормальный закон распределения. С помощью
ее удалось реализовать и провести однофакторный дисперсионный анализ выборок.