Несмотря на относительную простоту, статистические расчеты требуют значительных затрат времени, повышенного внимания и, связанного с этим риска ошибок. Кроме того, в большинстве случаев практики после расчетов выборочных значений и выдвижения гипотез почти всегда приходится обращаться к статистическим таблицам, т.е. к данным классических распределений.
Большую часть этих трудностей можно преодолеть – путем использования специальных статистических программ (или целого набора – пакета прикладных программ).
На сегодня программное обеспечение статистических расчетов выполнено, как правило, на уровне глобальных задач прикладной статистики, системного анализа и т.п. Надежных, простых в употреблении компьютерных программ практически нет – считается, что писать и распространять такие программы не престижно! С другой стороны, потребители таких программ – профессиональные статистики не испытывают затруднений в самостоятельном написании удобных (для себя) программ и даже пакетов. То, что есть – не хорошо и не плохо, просто это традиция и нарушать ее нет желания ни у фирм, производящих программы, ни у потенциальных пользователей.
Поэтому имеет смысл затратить некоторое время на анализ определенных трудностей, которые наверняка будут проявляться при программировании типовых статистических расчетов.
Оказывается, что здесь программиста поджидают "подводные камни", тупики и прочие неприятности, связанные не только с реальными возможностями компьютера, но и с самими формулами статистики, особенностями этой науки.
8.3.13.3.1 Вычисление моментов выборочных распределений
Пусть у нас имеется массив выборочных значений случайной величины и соответствующие частости (числа наблюдений) этих значений, то есть матрица из двух столбцов и m строк.
Обозначим такой массив W и рассмотрим вопрос о вводе исходных данных. Конечно же, мы быстро сообразим, что ввод надо организовать для пар значений Xi, ni – только в этом варианте можно снизить вероятность ошибок.
Вопрос об общем количестве наблюдений можно не ставить в начале диалога – освободить пользователя от необходимости вычислять N = n1 + n2 + … + nm. Организовать сигнал конца ввода не представляет проблем – скажем, ввести отрицательное число наблюдений на очередном шаге.
Как организовать подготовку данных для расчета выборочных моментов – например, выборочного среднего Mx и выборочной дисперсии Dx?
Среди многих вариантов наилучшим будет, пожалуй, следующий.
Приготовить три контрольных величины M1, M2 и NN, предварительно присвоив им нулевые значения до начала ввода, что на языке Pascal будет выглядеть так –
Var NN, I, X, Y: Integer;
W: Array [1…2,1…m] of Integer;
M1, M2, D, S, V: Real;
M1:=0; M2:=0; NN:=0; I:= 0;
Теперь можно организовать суммирование поступающих с клавиатуры (или прямо из уже готового массива, записанного где–то на диске) выборочных данных Xi и ni.
Пусть у нас такой массив уже есть, тогда с каждой очередной парой чисел следует поступить так
Repeat
I:=I + 1; X:=W[I,1]; Y:=W[I,2];
NN:=NN+Y;
M1:=(M1+X·Y); M2:=M2+Sqr(X) ·Y
Until I < m;
Операцию надо повторять до тех пор, пока мы не достигнем конца массива (при вводе с клавиатуры – пока не будет введено отрицательное значение очередного ni).
Если ввод окончен, то далее выборочные среднее, дисперсия и коэффициент вариации
N:=NN; M1:=M1/N;
D:=M2/N – Sqr(M1); S:=Sqrt(D); If M1#0 Then V:=S/M1;
8.3.23.3.2 Проблема переполнения
В предыдущем примере программирования процедуры вычисления моментов была не отмечена опасность "переполнения" – суммы M1 и M2 могут выйти за "разрядную сетку" компьютера.
Если такая угроза очевидна, то простейший выход из положения – вычислить предварительно общее число наблюдений N и потом выполнять описанный выше алгоритм суммирования с использованием не частостей, а частот.
Более надежным, однако, является другой подход к этой проблеме. Достаточно на каждом шаге суммирования преобразовывать "старые" значения сумм M1 и M2 в "новые".
Var N, NN, I, X, Y: Integer;
W: Array [1… 2,1… m] of Integer;
А, B, M1, M2, D, S, V: Real;
M1:=0; M2:=0; N:=0; I :=0;
Repeat
I:=I + 1;
X:=W[I,1]; NN:=N+W[I,2]:
A:=N/NN; B:=W[I,2]/NN;
M1:=M1·A+X·B;
M2:=M2·A+Sqr(X) ·B; N:=NN
Until I< m;
D:=M2 – Sqr(M1); V:= Sqrt(D);
If M1#0 Then V:=S/M1;
Более остро стоит проблема переполнения при вычислении факториалов, входящих в формулы вероятностей многих классических законов дискретных случайных величин.
Продемонстрируем метод решения подобной проблемы при вычислении биномиальных коэффициентов.
Если нам необходимо найти k–й коэффициент бинома n–й степени, то вполне надежным будет следующий алгоритм.
A:=N; B:=K; C:=1;
Repeat
C:=C·A/B; A:=A-1; B:=B-1
Until B>0;
Полезно также знать, что при достаточно больших N вычисление факториала можно производить по формуле Стирлинга , однако приведенный алгоритм намного проще алгоритма использования этой формулы.
8.3.33.3.3 Моделирование законов распределения
Практика прикладной статистики невозможна без использования данных о классических, стандартных законах распределения. Чтобы избежать непосредственного использования статистических таблиц при выполнения расчетов – особенно в части проверки гипотез, можно поступить двояко.
· Ввести содержание таблиц в память компьютера (непосредственно в рабочую программу или в виде отдельного файла – приложения к этой программе). Но этого мало. Надо научить компьютер "водить пальцем по таблице", т.е. запрограммировать иногда не совсем элементарный алгоритм пользования таблицей. Работа эта хоть и занудная, но зато не требующая никаких знаний, кроме умения программировать решение корректно поставленных задач – описания пользования таблицами составлены четко и алгоритмично.
· Можно поступить более рационально. Поскольку речь идет о классических распределениях дискретных или непрерывных случайных величин, то в нашем распоряжении всегда имеются формулы вычисления вероятности (или интеграла вероятности). Бытует мнение, что программирование расчетов по формулам является чуть ли не самым низким уровнем искусства программирования. На самом же деле это не совсем так, а при программировании законов распределения вероятностей – совсем не так!
Без понимания природы процесса, который порождает данную случайную величину, без знания основ теории вероятностей и математической статистики нечего и пытаться строить такие программы. Но если всё это есть, то можно строить компьютерные программы с такими возможностями статистического анализа, о которых не могли и мечтать отцы–основатели прикладной статистики. Покажем это на нескольких простых примерах.
Нам уже известно, что выдвижение в качестве нулевой гипотезы о некотором стандартном законе распределения связано только с одним обстоятельством – мы можем предсказывать итоги наблюдения в условиях её справедливости. Но это предсказание невозможно без использования конкретных значений параметра (или нескольких параметров) закона. Во всех "до–компьютерных" руководствах по прикладной статистике рано или поздно приходится читать – "а теперь возьмем таблицу … и найдем для наших условий …". Хочется проверить ту же гипотезу при другом значении параметра? Нет проблем! Повтори все расчеты при этом новом значении и снова работай с таблицей.
Иными словами, в "до–компьютерную" эпоху вопрос – а что вообще можно получить из данного наблюдения (или серии наблюдений), какова максимальная информация о случайной величине заключена в этих наблюдениях, – не ставился.
Причина этого очевидна – сложность и большие затраты времени на расчеты. Но дело еще и в том, что неопределенность статистических выводов приводила к тупиковой ситуации, когда затраты на проведение сложных, требующих особого внимания и безупречной логики расчетов, могли оказаться куда больше возможного экономического выигрыша при внедрении результатов.
Поэтому сегодня, отдав должное изобретательности творцов прикладной статистики, следует ориентировать практику статистических расчетов исключительно на применение компьютерных программ.
Это могут быть, условно говоря, "параметрические" программы, ориентированные на тот или иной тип распределения. Их назначение – найти по данным имеющихся наблюдений статистическую значимость гипотез о параметрах таких распределений или, наоборот, по заданным пользователем параметрам рассчитать вероятности всех (!) заданных им ситуаций.
Вполне реально создание и использование "непараметрических" программ – способных анализировать входные данные наблюдений и проверять гипотезы о принадлежности случайной величины к любому из "известных этой программе" закону распределения.
Наконец, использование компьютерной техники современного уровня позволяет решать за вполне приемлемое время и небольшую цену еще один вид задач – статистического моделирования. Сущность этого термина раскрывается в специальной области кибернетики – системном анализе, но кратко может быть раскрыта следующим образом.
Пусть некоторая случайная величина Z является, по нашим представлениям, функцией двух других случайных величин – X и Y. При этом оказывается, что X зависит от двух также случайных величин A и B, а Y зависит от трех случайных событий C, D и E.
Так вот, в этом "простом" случае мы знаем или предполагаем, что знаем вероятности всех событий и законы распределения всех случайных величин, кроме "выходной" величины Z.
Для простоты будем считать функциональные зависимости также известными (например, – вытекающими из некоторых законов природы):
Z = X – ; X = A + ;
A = 1, 2 , … 16 и распределена по биномиальному закону с параметром p= 0.42;
B – распределена по нормальному закону с m=12 и s =2;
Y = 42, если произошло событие C, а события D и E не произошли;
Y = 177, если произошли события D и E, независимо от того, произошло ли C;
Y = –15 во всех остальных случаях.
Ясно, что попытка строить для этого примера–шутки логическую схему, по которой можно было бы вычислять возможные значения Z и соответствующие этим значениям вероятности, обречена на провал – слишком сложными и не поддающимися аналитическому описанию окажутся наши выкладки.
Однако же, при наличии знаний хотя бы основных положений прикладной статистики и умении программировать, вполне оправданно потратить некоторое время на создание программы и ее обкатку, проверку по правилам статистики.
Далее можно будет "проигрывать" все возможные ситуации и буквально через секунды получать "распределение случайной величины Z" в любом виде (кроме, разумеется, формульного).
Итак, надо уметь программировать операции, дающие случайную величину с заранее оговоренным законом распределения. Большинство языков программирования высокого уровня имеют встроенные подпрограммы (процедуры или функции в языке Pascal), обеспечивающие генерацию случайной величины R, равномерно распределенной в диапазоне 0…1. Будем полагать, что в нашем распоряжении имеется такой "датчик случайных чисел".
Покажем, как превратить такую величину R в дискретную с биномиальным законом распределения. Пусть нам нужна случайная величина K, с целочисленными значениями от 0 до N при значении заданном значении параметра p. Один из вариантов алгоритма такой генерации мог бы выглядеть так.
Var X, P: Real;
I, K, N: Integer;
K:=0;
For I:=1 to N Do
Begin
X:= R;
If X>(1– p)
Then K:=K+1
End;
После очередного цикла генерации мы получаем случайную величину K, распределенную по биномиальному закону настолько надежно, насколько удачной является функция генерации числа R. Во избежание сомнений стоит потратить время на обкатку такого алгоритма – повторив цикл 100 или 1000 раз и проверив надежность генерации по данным "наблюдений" с помощью теоретических значений математического ожидания N·p и дисперсии N·p·(1–p).
Несколько более сложно генерировать непрерывные случайные величины, в частности для популярных распределений – нормального, "хи–квадрат", Стьюдента и т.п.
Дело здесь в том, что непрерывная случайная величина имеет бесконечное число допустимых значений, даже если интервал этих значений ограничен.
Но, вместе с тем, для конкретного закона распределения непрерывной случайной величины известна плотность вероятности – предел, к которому стремится вероятность попадания такой величины в заданный интервал при сужении интервала до нуля.
Покажем эти трудности и пути их преодоления на примере нормального распределения. Пусть нам требуется генерировать нормированную случайную величину Z с нормальным законом распределения.
Для такой величины m =0, s=1, а попадание ее значений в диапазон более 3 или менее –3 практически невероятно (около 0.0027).
Разобьем диапазон –3…+3 на 2N+1 интервалов, шириной 2d каждый. При достаточно малом d= 3 / N, вероятность попадания Z в любой из них вычисляется легко:
P(–d <Z <+d) @ 2d·j (0) = 2P0;
P( d <Z < 3d) @ 2d·j (2d) = P1< P0;
P(3d <Z < 5d) @ 2d·j (4d) = P2< P1;
P(5d <Z < 7d) @ 2d·j (6d) = P3< P2;
……………………………………………
P(2·d– d <Z < 2k·d+ d) @ 2d·j (2k·d) = PK;
………………………………………………………
P(2N·d– d<Z < 2N·d+ d) @ 2d·j (2N·d) = PN;
Поскольку 2·P0+2·P1+2·P2+ …+2·PN @1, то можно предложить следующий алгоритм генерации нормированной случайной величины Z .
Вся шкала допустимых значений генерации равномерно распределенной случайной величины X (0…1) разбивается на интервалы с шириной, соответствующей значениям PK, в порядке убывания.
Если при очередной генерации равномерно распределенной случайной величины X ее значение попадает в интервалы –
0.5 – P0<X<0.5 + P0, то считается сгенерированным Z=0;
0.5 + P0<X<0.5 + P0+P1, то считается сгенерированным Z=2d;
0.5+P0+P1<X<0.5+P0+P1+P2, то считается сгенерированным Z=4d;
и так далее вплоть до последнего правого интервала –
0.999 <X<1, когда считается сгенерированным Z = 2N·d+d =3+d.
Точно также генерируются отрицательные значения Z – в соответствии с ситуациями генерации X<0.5 .
Описанный выше алгоритм, разумеется, не является единственным. Его рассмотрение преследовало только оду цель – дать представление о самой возможности решать задачи программирования "источников" случайных величин с заранее заданным законом распределения.
9.4.Литература
Название
Автор
Год
1. 1. Прикладная Статистика
Айвазян С.А. и др.
1983
2. 2. Стохастические модели социальных процессов
Бартоломью Д.
1987
3. 3. Прикладная комбинаторная математика
Беккенбах Э.(ред.)
1968*
4. 4. Математическая статистика вып.1,2
Бикел П., Доксам М.
1987
5. 5. Таблицы математической статистики
Большев Л.Н., Смирнов Н.В.
1965*
6. 6. Комбинаторика
Виленкин Н.Я.
1969*
7. 7. Многомерное шкалирование
Дейвисон М.
1988
8. 8. Методы анализа данных
Дидэ Э. и др.
1987
9. 9. Теория распределений
Кэндалл М., Стьюарт А.
1966
10.10.Статистические выводы и связи
Кэндалл М., Стьюарт А.
1973*
11.11.Теоретическая статистика
Кокс Д., Хинкли Д.
1978*
12.12.Математические методы статистики
Крамер Г.
1975*
13.13.Ранговые корреляции
Кэндалл М.
1975*
14.14.Математические методы в социальных науках
Лазарсфельд П., Генри Н.
1973*
15.15.Проверка статистических гипотез
Леман Э.
1985
16.16.Метод наименьших квадратов
Линник Ю.В.
1962
17.17.Справочник по прикладной статистике т.1
Ллойд Э., Ледерман У.
1989*
18.18.Справочник по прикладной статистике т.2
Ллойд Э., Ледерман У.
1990*
19.19.Наука об управлении. Байесовский подход
Моррис У.
1971*
20.20.Вероятность
Мостеллер Ф.
1969*
21.21.Вычисл. алгоритмы в прикладной статистике
Мэйндоналд Дж.
1988*
22.22.Стат.оценивание и проверка гипотез на ЭВМ
Петрович М.Л., Давидович М.И.
1989*
23.23.Математическое открытие
Пойа Д.
1970*
24.24.Теория вероятностей
Прохоров Ю.В., Розанов Ю.А.
1973*
25.25.Прикладная теория статистических решений
Райфа Г., Шлейфер Р.
1987
26.26.Введение в комбинаторный анализ
Риордан Дж.
1963*
27.27.Справочник по непараметрической статистике
Рунион Р.
1982*
28.28.Сборник задач по теории вероятностей…
Свешников А.А.
1965*
29.29.Непараметрические методы статистики
Тюрин Ю.Н.
1978
30.30.Статист. модели в инженерных задачах
Хан Г., Шапиро С.
1969*
31.31.Статист. выводы, основанные на рангах
Хеттманспергер Т.
1987
32.32.Непараметрические методы статистики
Холлендер М., Вулф Д.
1983
33.33.Элементарная теория статистических решений
Чернов Г., Мозес Л.
1962*
34.34.Теория вероятностей, мат. статистика…
Шторм Р.
1970*
©От автора $
Конспект содержит расширенное содержание лекций и семинаров по курсу "Математическая статистика" для специальностей "Финансы и кредит" (набора 1995 г.) и соответствует сокращенной программе (18 часов лекций, 18 часов семинаров). Онтодидактическое назначение курса – создание логико–математической базы для изучения курса "Основы теории систем и системного анализа", а также для курса "Экономическая статистика", от которого и была, по сути дела, отделена примерно третья часть под данный курс. Назначение его, кроме отмеченного выше, – обеспечить запас фундаментальных знаний, необходимый для восприятия еще двух дисциплин цикла информационных технологий – "Компьютерная техника и программирование" (в части курсового проекта) и "Основы теории информационных систем".
Проф. Корнилов Г.И.
март 1997 г. Оглавление
1. Введение в курс.....................................................................................................................................................
1.1 Основные определения....................................................................................................................................
1.2 Вероятности случайных событий................................................................................................................
2. Распределения вероятностей случайных величин...........................................................................................
2.1 Шкалирование случайных величин.................................................................................................................
2.2 Законы распределений дискретных случайных величин..............................................................................
2.3 Односторонние и двухсторонние значения вероятностей........................................................................
2.4 Моменты распределений дискретных случайных величин........................................................................
2.5 Распределения непрерывных случайных величин..........................................................................................
2.5.1 Нормальное распределение.....................................................................................................................
2.5.2 Распределения выборочных значений параметров нормального распределения...............................
3. Взаимосвязи случайных величин........................................................................................................................
3.1 Парная корреляция...........................................................................................................................................
3.2 Множественная корреляция...........................................................................................................................
4. Проверка статистических гипотез.......................................................................................................................
4.1 Понятие статистической гипотезы...........................................................................................................
4.2 Критерии статистических гипотез............................................................................................................
4.3 Ошибки при проверке статистических гипотез........................................................................................
5. Выборочные распределения на шкалах Int и Rel...............................................................................................
5.1 Оценка наблюдений при неизвестном законе распределения......................................................................
5.2 Оценка наблюдений при известном законе распределения..........................................................................
5.2.1 Оценка параметров нормального распределения.................................................................................
5.2.2 Оценка параметров дискретных распределений.................................................................................
6. Выборочные распределения на шкале Nom.......................................................................................................
6.1 Случай двухзначной случайной величины, N<50..........................................................................................
6.2 Случай двухзначной случайной величины, N>50..........................................................................................
6.3 Случай многозначной случайной величины..................................................................................................
7. Выборочные распределения на шкале Ord.........................................................................................................
8. Материал семинарских занятий...........................................................................................................................
8.1 Введение в комбинаторику.............................................................................................................................
8.2 Методы вычисления моментов распределений............................................................................................
8.3 Алгоритмы простейших статистических расчетов.................................................................................
8.3.1 Вычисление моментов выборочных распределений...........................................................................
8.3.2 Проблема переполнения..........................................................................................................................
8.3.3 Моделирование законов распределения................................................................................................
9. Литература.............................................................................................................................................................