Эмпирическая плотность распределения
![Лабораторная работа: Эмпирическая плотность распределения](https://bakalavr-info.ru/work/1924676/cover.png)
Результат проверки нулевой гипотезы о принадлежности случайного числа нормальному закону распределения. String Result1= «Нулевая гипотеза об отсутствии статистически значиых различий между выборками»; Результат проверки гипотезы об идентичности двух плотностей распределения. Double f1 = 1 — 1 / Math. Sqrt (2 * Math. PI) / sr * Math. Exp (-Math. Pow ((xmin + dx * (i + 1) — mid), 2) / 2 / sr/sr… Читать ещё >
Эмпирическая плотность распределения (реферат, курсовая, диплом, контрольная)
Эмпирическая плотность распределения
1. Математическая модель решения
Сначала генерируются 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 | |
2. Текст программы
using System;
using System. Collections. Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Text;
using System. Windows. Forms;
namespace oed4
{
public partial class Form1: Form
{
public Form1 ()
{
InitializeComponent ();
}
private double Laplas (double X)
{
double F = 0;
double dt=Math. Abs (X/1000);
for (int i = 0; i < 1000; i++)
F += Math. Exp (-i * dt * i * dt / 2) * dt;
F /= Math. Sqrt (2 * Math. PI)*Math. Sign (X);
return F;
}
private void button1_Click (object sender, EventArgs e)
{
// получение данных
int N = Convert. ToInt32 (textBox1. Text); // объем выборки
double M = Convert. ToDouble (textBox2. Text); // мат. ожидание
double S = Convert. ToDouble (textBox3. Text); // среднекв. отклонение
Random R = new Random (); // генератор случайных чисел
List Y1 = new List (N); // выборка
// генерация выборки № 1
for (int i = 0; i < N; i++)
{
double sum = 0; // сумма 12 чисел
for (int ii = 0; ii < 12; ii++)
sum += (double) R. NextDouble (); // генерация случайного числа
Y1. Add ((M + S * (sum — 6))); // помещение числа в массив
}
// генерация выборки № 2 — аналогично
List Y2 = new List (N);
for (int i = 0; i < N; i++)
{
double sum = 0;
for (int ii = 0; ii < 12; ii++)
sum += (double) R. NextDouble ();
Y2. Add ((M + S * (sum — 6)));
}
int k = (int) (1 + 3.32 * Math. Log10 (N)); // число интервалов
// поиск пределов
double xmin = Y1 [0], xmax = Y1 [0];
for (int i = 0; i < N; i++)
{
if (Y1 [i] < xmin) xmin = Y1 [i];
if (Y1 [i] > xmax) xmax = Y1 [i];
if (Y2 [i] < xmin) xmin = Y2 [i];
if (Y2 [i] > xmax) xmax = Y2 [i];
}
// анализ выборок
double dx = (xmax — xmin) / k; // шаг
List cnt1 = new List (k); // число элементов из 1 выборки в каждом интервале
List cnt2 = new List (k); // число элементов из 2 выборки в каждом интервале
List xmed = new List (k); // среднее значение
double xi1 = 0; // значение критерия согласия
for (int i = 0; i < k; i++)
{
double sum = 0; // сумма значений интервала
cnt1. Add (0);
cnt2. Add (0);
for (int j = 0; j < N; j++) // анализ интервала
{
if ((Y1 [j] > xmin + i * dx) && (Y1 [j] <= xmin + (i + 1) * dx))
{
cnt1 [i]++;
sum += Y1 [j];
}
if ((Y2 [j] > xmin + i * dx) && (Y2 [j] <= xmin + (i + 1) * dx))
{
cnt2 [i]++;
sum += Y2 [j];
}
}
if (cnt1 [i] + cnt2 [i] == 0)
xmed. Add (0);
else xmed. Add (sum / (cnt1 [i] + cnt2 [i])); // вычисление суммы
if (cnt2 [i]≠ 0)
xi1 += (cnt1 [i] - cnt2 [i]) * (cnt1 [i] - cnt2 [i]) / (double) cnt2 [i]; // вычисление критерия
}
// вычисление критического значения критерия
const double u = 1.645;
double v = k — 1;
double xikr = v * (1 — 2 / v / 9 + u * Math. Sqrt (2 / v / 9));
string Result1= «Нулевая гипотеза об отсутствии статистически значиых различий между выборками»;
if (xi1
else Result1+= «Отвергается»;
// вычисление мат. ожидания
double mid = 0;
for (int i = 0; i < k; i++)
mid += xmed[i] * (cnt1 [i] + cnt2 [i]);
mid /= N*2;
// вычисление квадрата отклонения
double sr = 0;
for (int i = 0; i < k; i++)
sr += (xmed[i] - mid) * (xmed[i] - mid) * (cnt1 [i] + cnt2 [i]);
sr = Math. Sqrt (sr / (N*2 — 1) + (xmax — xmin) * (xmax — xmin) / 12);
List P = new List (k); // вероятность попадания величины в интервал
for (int i = 0; i < k; i++)
{
double a = xmin + dx * i;
double b = xmin + dx * (i+1);
double p = Laplas ((b — M) / S) — Laplas ((a — M) / S);
P. Add (p);
}
double xi2 = 0;
for (int i = 0; i < k — 1; i++)
xi2 += Math. Pow ((cnt1 [i] + cnt2 [i] - 2 * N * P[i]), 2) / (2 * N * P[i]);
double v2 = k — 3;
double xi2kr = v2 * (1 — 2 / v2 / 9 + u * Math. Sqrt (2 / v2 / 9));
string Result2 = «Гипотеза о нормальном законе распределения»;
if (xi2 < xi2kr) Result2 += «Принимается»;
else Result2 += «Отвергается»;
// вывод графика
float SX = (float) pictureBox1. Width / k;
float SY = (float) pictureBox1. Height / N;
Bitmap bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height);
Graphics gr = Graphics. FromImage (bmp);
gr. Clear (Color. White);
// оси
for (int i = 1; i < k; i++)
{
gr. DrawLine (Pens. LightGray, i * SX, 0, i * SX, pictureBox1. Height);
gr. DrawString (Convert. ToString (xmin+ i * dx), Font, Brushes. Black,
i * SX, 0);
}
for (int i = 1; i < 4; i++)
{
gr. DrawLine (Pens. LightGray, 0, i * SY * N / 4,
pictureBox1. Width, i * SY * N / 4);
gr. DrawString (Convert. ToString (N — i * N / 4), Font,
Brushes. Black, 0, i * SY * N / 4);
}
// график
for (int i = 0; i < k; i++)
{
double f = 1 — 1 / Math. Sqrt (2 * Math. PI) / sr * Math. Exp (-Math. Pow ((xmin + dx * i — mid), 2) / 2 / sr /sr);
double f1 = 1 — 1 / Math. Sqrt (2 * Math. PI) / sr * Math. Exp (-Math. Pow ((xmin + dx * (i + 1) — mid), 2) / 2 / sr/sr);
gr. DrawLine (Pens. Red, i * SX, (float) f * N * SY, (i + 1) * SX, (float) f1 * N * SY);
gr. DrawLine (Pens. Black, i * SX, (float) (N — cnt1 [i] - cnt2 [i]) * SY,
(i + 1) * SX, (float) (N — cnt1 [i] - cnt2 [i]) * SY);
}
for (int i = 0; i < k-1; i++)
gr. DrawLine (Pens. Green, (i+0.5f) * SX, (float) (1 — P[i]) * N * SY, (i + 1.5f) * SX, (float) (1 — P [i+1]) * N * SY);
pictureBox1. Image = bmp;
MessageBox. Show («Критерий согласия:» + xi1. ToString () + «n» +
«крит. значение» + xikr. ToString () + «n"+
Result1+"n"+
«Математическое ожидание» + mid. ToString () +
«среднеквадратичное отклонение» + sr. ToString () +
«Критерий согласия:» + xi2. ToString () + «n» +
«крит. значение» + xi2kr. ToString () + «n"+
Result2+"n");
}
}
}
3. Шаблон ввода входных данных
4. Результаты работы программы
алгоритм программа плотность пирсонг
Выводы
Был разработан алгоритм и написана программа на языке С#, генерирующая значения случайных величин, имеющих нормальный закон распределения. С помощью ее удалось проверить гипотезу об идентичности двух плотностей распределения, используя критерийПирсона, а также проверить гипотезу о принадлежности случайного числа нормальному распределению.