Эмпирическая плотность распределения
Разработка алгоритма и программы на одном из алгоритмических языков для построения эмпирической плотности распределения случайных величин. Осуществление проверки гипотезы об идентичности двух плотностей распределения, используя критерий Пирсонга.
Рубрика | Экономико-математическое моделирование |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 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