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

Разработка алгоритма и программы на одном из алгоритмических языков для построения эмпирической плотности распределения случайных величин. Осуществление проверки гипотезы об идентичности двух плотностей распределения, используя критерий Пирсонга.

Рубрика Экономико-математическое моделирование
Вид лабораторная работа
Язык русский
Дата добавления 19.02.2014
Размер файла 227,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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<double> Y1 = new List<double>(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<double> Y2 = new List<double>(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<int> cnt1 = new List<int>(k); // число элементов из 1 выборки в каждом интервале

List<int> cnt2 = new List<int>(k); // число элементов из 2 выборки в каждом интервале

List<double> xmed = new List<double>(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<xikr) Result1+= «Принимается»;

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<double> P = new List<double>(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. Результаты работы программы

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

Выводы

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

Размещено на Allbest.ru


Подобные документы

  • Построение гистограммы и эмпирической функции распределения. Нахождение доверительного интервала для оценки математического распределения. Проверка статистической гипотезы о равенстве средних значений, дисперсий, их величине, о виде закона распределения.

    курсовая работа [1,7 M], добавлен 29.11.2014

  • Формулы вычисления критерия Пирсона, среднего квадратического отклонения и значений функций Лапласа. Определение свойств распределения хи-квадрата. Критерий согласия Колмогорова-Смирнова. Построение графика распределения частот в заданном массиве.

    контрольная работа [172,2 K], добавлен 27.02.2011

  • Обоснование, схема и описание бизнес-процесса организации. Идентификация законов распределения случайных величин. Разработка и описание моделирующего алгоритма для реализации программы имитационной модели. Разработка компьютерной программы моделирования.

    курсовая работа [265,3 K], добавлен 28.07.2013

  • Элементарные понятия о случайных событиях, величинах и функциях. Числовые характеристики случайных величин. Виды асимметрии распределений. Статистическая оценка распределения случайных величин. Решение задач структурно-параметрической идентификации.

    курсовая работа [756,0 K], добавлен 06.03.2012

  • Особенности метода проверки гипотезы о законе распределения по критерию согласия хи-квадрат Пирсона. Свойства базовой псевдослучайной последовательности. Методы оценки закона распределения и вероятностных характеристик случайной последовательности.

    лабораторная работа [234,7 K], добавлен 28.02.2010

  • Использование статистических характеристик для анализа ряда распределения. Частотные характеристики ряда распределения. Показатели дифференциации, абсолютные характеристики вариации. Расчет дисперсии способом моментов. Теоретические кривые распределения.

    курсовая работа [151,4 K], добавлен 11.09.2010

  • Расчет уравнения линейной регрессии. Построение на экран графика и доверительной области уравнения. Разработка программы, генерирующей значения случайных величин, имеющих нормальный закон распределения для определения параметров уравнения регрессии.

    лабораторная работа [18,4 K], добавлен 19.02.2014

  • Закон распределения генеральной совокупности. Вычисление вероятности при помощи распределения Гаусса. Срок действия декларации о соответствии и сертификата соответствия. Применение математической статистики при измерениях и испытаниях продукции.

    презентация [128,7 K], добавлен 30.07.2013

  • Разработка алгоритма на одном из алгоритмических языков для сглаживания экспериментальных данных с помощью маски простого скользящего среднего и маски взвешенного скользящего среднего. Масштабные коэффициенты для вывода графика. Результаты программы.

    лабораторная работа [268,7 K], добавлен 19.02.2014

  • Анализ распределений для выявления закономерности изменения частот в зависимости от значений варьирующего признака и анализ различных характеристик изучаемого распределения. Характеристика центральной тенденции распределения и оценка вариации признака.

    лабораторная работа [606,7 K], добавлен 13.05.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.