Шаблон ввода входных данных




Эмпирическая плотность распределения


Математическая модель решения

 

Сначала генерируются 2 выборки из N элементов. Затем определяются минимальные и максимальные значения выборки. После этого происходит разбиение выборок на интервалы и определяется значение критерия Х2. Полученное значение сравнивается с критическим значением Хкр. Из результатов сравнения делается вывод о принятии и отвержении гипотезы об идентичности двух плотностей распределения.

Затем определяется математическое ожидание выборки и среднеквадратическое отклонение. По ним вычисляются вероятности попадания числа в каждый из интервалов. Исходя из этих вероятностей вычисляется значение критерия Х2 и сравнивается с критическим значением Хкр. Из результатов сравнения делается вывод о принятии и отвержении гипотезы о принадлежности случайного числа нормальному закону распределения.

 

Таблица имен

N Объем выборок
M Мат. Ожидание
S Генеральное среднеквадратичное отклонение
Y1 Выборка №1
Y2 Выборка №2
k Число интервалов
xmin Минимальное значение выборки
xmax Максимальное значение выборки
dx Диапазон интервала
cnt1 Число элементов в каждом интервале первой выборки
cnt2 Число элементов в каждом интервале второй выборки
xmed Среднее значение каждого интервала
xi1 Значение критерия Х2
xikr Критическое значение Х2
Result1 Результат проверки гипотезы об идентичности двух плотностей распределения
mid Математическое ожидание выборки
sr Выборочное среднеквадратичное отклонение
P Вероятность попадания числа в каждый из интервалов
xi2 Значение критерия Х2
xi2kr Критическое значение Х2
Result2 Результат проверки нулевой гипотезы о принадлежности случайного числа нормальному закону распределения.
SX Масштаб графика по Х
SY Масштаб графика по Y

Текст программы

System;System. Collections. Generic;System. ComponentModel;System. Data;System. Drawing;System. Text;System. Windows. Forms;oed4

{partial class Form1: Form

{Form1 ()

{();

}double Laplas (double X)

{F = 0;dt=Math. Abs (X/1000);(int i = 0; i < 1000; i++)+= Math. Exp (-i * dt * i * dt / 2) * dt;/= Math. Sqrt (2 * Math.PI)*Math. Sign(X);F;

}void button1_Click (object sender, EventArgs e)

{

// получение данныхN = Convert. ToInt32 (textBox1. Text); // объем выборкиM = Convert. ToDouble (textBox2. Text); // мат. ожиданиеS = Convert. ToDouble (textBox3. Text); // среднекв. отклонениеR = new Random(); // генератор случайных чисел<double> Y1 = new List<double>(N); // выборка

// генерация выборки №1(int i = 0; i < N; i++)

{sum = 0; // сумма 12 чисел(int ii = 0; ii < 12; ii++)+= (double) R. NextDouble(); // генерация случайного числа. Add((M + S * (sum - 6))); // помещение числа в массив

}

// генерация выборки №2 - аналогично<double> Y2 = new List<double>(N);(int i = 0; i < N; i++)

{sum = 0;(int ii = 0; ii < 12; ii++)+= (double) R. NextDouble();. Add((M + S * (sum - 6)));

}k = (int) (1 + 3.32 * Math. Log10 (N)); // число интервалов

// поиск пределовxmin = Y1 [0], xmax = Y1 [0];(int i = 0; i < N; i++)

{(Y1 [i] < xmin) xmin = Y1 [i];(Y1 [i] > xmax) xmax = Y1 [i];(Y2 [i] < xmin) xmin = Y2 [i];(Y2 [i] > xmax) xmax = Y2 [i];

}

// анализ выборокdx = (xmax - xmin) / k; // шаг<int> cnt1 = new List<int>(k); // число элементов из 1 выборки в каждом интервале<int> cnt2 = new List<int>(k); // число элементов из 2 выборки в каждом интервале<double> xmed = new List<double>(k); // среднее значениеxi1 = 0; // значение критерия согласия(int i = 0; i < k; i++)

{sum = 0; // сумма значений интервала. Add(0);. Add(0);(int j = 0; j < N; j++) // анализ интервала

{((Y1 [j] > xmin + i * dx) && (Y1 [j] <= xmin + (i + 1) * dx))

{[i]++;+= Y1 [j];

}((Y2 [j] > xmin + i * dx) && (Y2 [j] <= xmin + (i + 1) * dx))

{[i]++;+= Y2 [j];

}

}(cnt1 [i] + cnt2 [i] == 0). Add(0);xmed. Add (sum / (cnt1 [i] + cnt2 [i])); // вычисление суммы(cnt2 [i]!= 0)+= (cnt1 [i] - cnt2 [i]) * (cnt1 [i] - cnt2 [i]) / (double) cnt2 [i]; // вычисление критерия

}

// вычисление критического значения критерияdouble u = 1.645;v = k - 1;xikr = v * (1 - 2 / v / 9 + u * Math. Sqrt (2 / v / 9));Result1= «Нулевая гипотеза об отсутствии статистически значиых различий между выборками»;(xi1<xikr) Result1+= «Принимается»;Result1+= «Отвергается»;

// вычисление мат. ожиданияmid = 0;(int i = 0; i < k; i++)+= xmed[i] * (cnt1 [i] + cnt2 [i]);/= N*2;

// вычисление квадрата отклоненияsr = 0;(int i = 0; i < k; i++)+= (xmed[i] - mid) * (xmed[i] - mid) * (cnt1 [i] + cnt2 [i]);= Math. Sqrt (sr / (N*2 - 1) + (xmax - xmin) * (xmax - xmin) / 12);<double> P = new List<double>(k); // вероятность попадания величины в интервал(int i = 0; i < k; i++)

{a = xmin + dx * i;b = xmin + dx * (i+1);p = Laplas((b - M) / S) - Laplas((a - M) / S);. Add(p);

}xi2 = 0;(int i = 0; i < k - 1; i++)+= Math. Pow((cnt1 [i] + cnt2 [i] - 2 * N * P[i]), 2) / (2 * N * P[i]);v2 = k - 3;xi2kr = v2 * (1 - 2 / v2 / 9 + u * Math. Sqrt (2 / v2 / 9));Result2 = «Гипотеза о нормальном законе распределения»;(xi2 < xi2kr) Result2 += «Принимается»;Result2 += «Отвергается»;

// вывод графикаSX = (float) pictureBox1. Width / k;SY = (float) pictureBox1. Height / N;bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height);gr = Graphics. FromImage(bmp);. Clear (Color. White);

// оси(int i = 1; i < k; i++)

{. DrawLine (Pens. LightGray, i * SX, 0, i * SX, pictureBox1. Height);. DrawString (Convert. ToString (xmin+ i * dx), Font, Brushes. Black,* SX, 0);

}(int i = 1; i < 4; i++)

{. DrawLine (Pens. LightGray, 0, i * SY * N / 4,. Width, i * SY * N / 4);. DrawString (Convert. ToString (N - i * N / 4), Font,. Black, 0, i * SY * N / 4);

}

// график(int i = 0; i < k; i++)

{f = 1 - 1 / Math. Sqrt (2 * Math.PI) / sr * Math. Exp (-Math. Pow((xmin + dx * i - mid), 2) / 2 / sr /sr);f1 = 1 - 1 / Math. Sqrt (2 * Math.PI) / sr * Math. Exp (-Math. Pow((xmin + dx * (i + 1) - mid), 2) / 2 / sr/sr);. DrawLine (Pens. Red, i * SX, (float) f * N * SY, (i + 1) * SX, (float) f1 * N * SY);. DrawLine (Pens. Black, i * SX, (float) (N - cnt1 [i] - cnt2 [i]) * SY,

(i + 1) * SX, (float) (N - cnt1 [i] - cnt2 [i]) * SY);

}(int i = 0; i < k-1; i++). DrawLine (Pens. Green, (i+0.5f) * SX, (float) (1 - P[i]) * N * SY, (i + 1.5f) * SX, (float) (1 - P [i+1]) * N * SY);. Image = bmp;. Show («Критерий согласия:» + xi1. ToString() + «\n» +

«крит. значение» + xikr. ToString() + «\n»++»\n»+

«Математическое ожидание» + mid. ToString() +

«среднеквадратичное отклонение» + sr. ToString() +

«Критерий согласия:» + xi2. ToString() + «\n» +

«крит. значение» + xi2kr. ToString() + «\n»++»\n»);

}

}

}

 

Шаблон ввода входных данных

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: