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


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


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


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

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


Таблица имен

NОбъем выборокMМат. ОжиданиеSГенеральное среднеквадратичное отклонениеY1Выборка №1Y2Выборка №2kЧисло интерваловxminМинимальное значение выборкиxmaxМаксимальное значение выборкиdxДиапазон интервалаcnt1Число элементов в каждом интервале первой выборкиcnt2Число элементов в каждом интервале второй выборкиxmedСреднее значение каждого интервалаxi1Значение критерия Х2xikrКритическое значение Х2Result1Результат проверки гипотезы об идентичности двух плотностей распределенияmidМатематическое ожидание выборкиsrВыборочное среднеквадратичное отклонениеPВероятность попадания числа в каждый из интерваловxi2Значение критерия Х2xi2krКритическое значение Х2Result2Результат проверки нулевой гипотезы о принадлежности случайного числа нормальному закону распределения.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»);

}

}

}


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



4. Результаты работы программы

алгоритм программа плотность пирсонг



Выводы


Был разработан алгоритм и написана программа на языке С#, генерирующая значения случайных величин, имеющих нормальный закон распределения. С помощью ее удалось проверить гипотезу об идентичности двух плотностей распределения, используя критерий -Пирсона, а также проверить гипотезу о принадлежности случайного числа нормальному распределению.


Теги: Эмпирическая плотность распределения  Практическое задание  Менеджмент
Просмотров: 16499
Найти в Wikkipedia статьи с фразой: Эмпирическая плотность распределения
Назад