Проверка статистической независимости

Проверка независимости чисел на выходе ГСПЧ обычно производится путем измерения корреляции между Проверка статистической независимости - student2.ru и Проверка статистической независимости - student2.ru , где g > 0 – некоторое смещение. В случае, если установлена равномерность распределения, оценка Проверка статистической независимости - student2.ru коэффициента корреляции между Проверка статистической независимости - student2.ru и Проверка статистической независимости - student2.ru может быть получена по формуле

Проверка статистической независимости - student2.ru (8)

Здесь Проверка статистической независимости - student2.ru - оценка м.о. произведения чисел Проверка статистической независимости - student2.ru и Проверка статистической независимости - student2.ru (т.е. среднее значение произведений пар чисел, отстоящих в выборке на g шагов друг от друга):

Проверка статистической независимости - student2.ru (9)

где сумму Sg можно накапливать в процессе генерации выборки. В случае независимости псевдослучайных чисел для любого Проверка статистической независимости - student2.ru должно выполняться условие Проверка статистической независимости - student2.ru при Проверка статистической независимости - student2.ru , которое означает попарную некоррелированность чисел. Следует обратить внимание на то, что некоррелированность является необходимым, но не достаточным условием независимости случайных величин.

Проверка длины периода

Поскольку последовательность чисел на выходе мультипликативного конгруэнтного ГСПЧ периодическая, она не может характеризоваться равномерным распределением и независимостью чисел в строгом смысле , но при большой длине l периода этот недостаток не приводит к ошибкам более существенным, чем, скажем, ограниченная длина разрядной сетки ЭВМ.

Выявление периода последовательности Проверка статистической независимости - student2.ru или, что то же самое, в последовательности Проверка статистической независимости - student2.ru и определение его длины l – непростая задача, поскольку некоторое число первых членов последовательности может и не принадлежать его периодической части.

Определенную информацию о периодичности можно получить, если запомнить Проверка статистической независимости - student2.ru и в процессе генерации выборки последовательно сравнивать с ним числа Проверка статистической независимости - student2.ru , i=2,3,…,n. При первом совпадении Проверка статистической независимости - student2.ru определяется длина периода l = i-1. Если для Проверка статистической независимости - student2.ru совпадения не произошло, то либо Проверка статистической независимости - student2.ru , либо периодическая часть последовательности начинается при i > 1.

Контрольные вопросы

1. Как по выборке случайной величины рассчитываются оценки ее м.о. и дисперсия?

2. Как проверяется равномерность распределения чисел с помощью частотного теста?

3. Как проверяется статистическая независимость чисел на выходе ГСПЧ?

Задания к работе

1. Изучите способы анализа равномерности распределения и независимости чисел на выходе ГСПЧ.

2. Дополните программу из лабораторной работы №1 следующим функционалом:

- тестирование равномерности распределения ГСПЧ частотным методом разбиения на 10 интервалов (построить два графика Проверка статистической независимости - student2.ru , для n=100 и n=10000, где Проверка статистической независимости - student2.ru - частота встречаемости случайной величины на i-интервале);

- проверка равномерности распределения нахождением м.о. и дисперсии по формулам (6) и (7) (для n=100 и n=10000);

- (дополнительно, по усмотрению студента) проверка статистической независимости по формуле (8). Построить график Rg(n), для n от 10 до 1000;

3. По рассчитанным оценкам сделайте вывод о пригодности ГСПЧ. Если ГСПЧ не пригоден, подберите для него более подходящие параметры a,m.

Содержание отчета о работе

1. Цель работы;

2. формулы для расчета статистических оценок, применяемых для анализа качества ГСПЧ;

3. результаты расчета оценок (скриншоты), показывающие в графическом виде зависимость этих оценок от длины n выборки;

4. вывод о пригодности ГСПЧ для его использования в статистическом моделировании.

5. листинг программы

Рекомендации по выполнению лабораторной работы

Для выполнения данной работы следует обратиться к программе, написанной в лабораторной работе №1 и добавить в программу функции, соответствующие данной работе.

1. Откройте проект с программой в C++ Builder 6 (лабораторная работа №1);

2. Добавьте на форму объект PageControl с вкладки Win32:

Проверка статистической независимости - student2.ru

3. Нажмите правой кнопкой мыши на данном объекте и выберите пункт NewPage (для создания двух вкладок – 2 клика);

4. Растяните данный объект по размеру формы приложения, оставив свободное место для него перемещением имеющихся объектов в любое свободное пространство на форме;

Проверка статистической независимости - student2.ru

5. Переместите все существующие объекты на объект PageControl использованием выделения и копированием их у буфер обмена сочетанием клавиш ctrl+x и вставкой в PageControl с помощью ctrl+c. Переименуйте вкладки TabSheet1 и TabSheet2 в «Генерация чисел» и «Проверка генератора» соответственно (для этого кликните по объекту PageControl и слева, в object tree view выберите TabSheet1, переименуйте его в параметре Caption окна Object Inspector на «Генерация чисел»).

Проверка статистической независимости - student2.ru

6. Последующие работы будут добавляться наращиванием функционала данной программы добавлением новых вкладок;

7. Перейдите на вкладку «Проверка генератора» и установите 3 новых объекта Chart с добавлением в каждый из них по одному графику Series. Дайте название каждому из графиков как указано на изображении (двойной клик на объекте Chart, на вкладке Titles)

Проверка статистической независимости - student2.ru

8. Графики будут соответствовать следующим результатам: первые 2 графика для проверки частотным методом. Один график – зависимость частоты встречаемости случайной величины на каждом из интервалов разбиения, от номера интервала для N=100, другой – для N=10000. Третий график будет соответствовать зависимости коэффициента корреляции Rg от N (N следует брать от 10 до 10000).

9. Добавьте на форму кнопку Button, в поле caption дайте ей название («Начать тестирование ГСПЧ»). Добавьте 2 компонента Memo:

Проверка статистической независимости - student2.ru

10. Вам необходимо на кнопку «Начать тестирование ГСПЧ» назначить необходимые действия для заполнения всех трех графиков.

11. Первым, что должна выполнить программа – сгенерировать первые 100 псевдослучайных чисел. Код можете скопировать с кнопки, генерирующей числа из первой лабораторной работы в кнопку «Начать тестирование ГСПЧ», но с изменением одного параметра – генерация фиксированного количества чисел, равному 100.

12. Код необходимо модифицировать так, чтобы сгенерированные числа записывались в массив. Инициализация массива на 100 чисел в С++ выглядит следующим образом:

float A[100];

13. По нажатию кнопки заполнение массива псевдослучайными числами можно реализовать следующим образом:

for (int i=0;i<100;i++)

{

//Здесь вы генерируете случайное число Х с помощью кода из лаб.№1//

A[i]= X; // присваиваем i-му элементу массива значение Х

}

….

14. Проверьте, правильно ли заполнился массив A[i] выводом его содержимого в компонент Memo:

for (int i=0;i<100;i++)

Memo2->Lines->Add(A[i]);

15. Следующий этап – подсчет количества случайных величин в интервалы равной длины, составляющие всю сгенерированную последовательность. Разобьем последовательность на 10 интервалов: 0-0,1; 0,1-0,2; 0,2-0,3; 0,3-0,4; 0,4-0,5; 0,5-0,6; 0,6-0,7; 0,7-0,8; 0.8-0,9; 0,9-1,0. Реализация подсчета числа попавших чисел в интервалы может быть получена путем нахождения целого числа от умножения элемента A[i] (случайная величина) на 10 и прибавлением единицы. Например, если случайное число «0,25» умножить на 10 и отбросить дробную часть, то мы получим число 2, добавив единицу, получим номер интервала, равный 3 (действительно, 0,25 находится в интервале 0,2-0,3). Для проверки правильности подсчета, установите еще один компонент Memo и выводите в него значения номеров интервалов. Проинициализировав новый массив B[10], содержащий информацию о каждом из интервалов, можно реализовать подсчет случайных чисел в каждом из интервалов следующим образом (выделение целой части можно сделать указанием (int) перед выводом числа):

for (int i=0;i<100;i++)

{

Memo2->Lines->Add(A[i]); //выводим случайную величину

buff=A[i]*10+1; // определяем номер интервала, которому она принадлежит

Memo3->Lines->Add((int)buff); //выводим номер этого интервала

B[(int)buff]+=1; //добавляем к счетчику единицу

}

случайная величина номер интервала

Проверка статистической независимости - student2.ru

16. В массиве B[i] у нас теперь подсчитано количество попавших чисел для каждого из интервалов. Выведем на первый график значения из массива B:

for (int i=0;i<10;i++)

Series4->AddXY(i,B[i]/100); // отношение попавших в интервал значений к общему их числу(определение fi)

17. Сделаем копию блока кода для N=100 и поместим его следующим за текущим.

18. В скопированном блоке внесем изменения, которые позволят генерировать 10000 значений и подсчитывать их число в каждом из десяти интервалов (заменим в циклах 100 на 10000).

19. Отобразим на втором графике частоты встречаемости случайных величин на каждом из 10 интервалов:

Проверка статистической независимости - student2.ru

20. Как видим, при переходе к N=10000 частотная составляющая приближается к вероятности попадания на каждый из интервалов, а именно: 1/k=0,1.

21. поместим на форму 4 компонента Edit для вывода значений м.о. и дисперсии для N=100 и N=10000

Проверка статистической независимости - student2.ru

22. Найдем значения м.о. для N=100 и N=10000 по формуле (6). Выводить полученные значения необходимо следующим образом:

Edit9->Text=Mx; // Mx – найденное м.о. для 100 чисел, Edit может быть у вас под другим номером

Edit10->Text=Mx;// найденное м.о. для 10000 чисел, Edit может быть у вас под другим номером

Проверка статистической независимости - student2.ru

23. Сгенерируйте несколько выборок и следите за получаемыми значениями Mx. Для N=10000 они должны быть ближе к 0,5, чем при N=100.

24. В остальные 2 поля выводите значения дисперсии для N=100 и N=10000 по формуле (7).

Проверка статистической независимости - student2.ru

25. Значение дисперсии с ростом N должно стремиться к 0,83333333 (1/12) и быть ближе к нему у выборки с N=10000.

26. (дополнительно, по усмотрению студента) Рассчитайте значение Rg корреляции между парами чисел из выборки (g взять равным единице) при N от 10 до 1000 (генерируем 10 чисел, считаем Rg по формуле (8), выводим это значение на график, потом генерируем 11 чисел, считаем Rg и выводим на график, потом 12, 13 чисел и т.д. до 1000). Полученная кривая должна отражать приближение коэффициента корреляции Rg к нулю с ростом N:

Проверка статистической независимости - student2.ru

27. Подпишите оси на вкладке Axis каждого из графиков как указано на рисунке:

Проверка статистической независимости - student2.ru

Лабораторная работа 3

Наши рекомендации