Бакалавр
Дипломные и курсовые на заказ

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

Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы

Результат проверки нулевой гипотезы о принадлежности случайного числа нормальному закону распределения. 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. Результаты работы программы

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

Выводы

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

Показать весь текст
Заполнить форму текущей работой