Расчетная вероятность: 0.688

N,числоопытов   p*,частота  
1000 0.675
2000 0.678
3000 0.676
4000 0.680
5000 0.681
6000 0.682
7000 0.684
8000 0.683
9000 0.683
10000 0.684
11000 0.685
12000 0.685
13000 0.685
14000 0.686
15000 0.687
16000 0.687
17000 0.687
18000 0.688

 

Проверка в ручную:

Первый способ:

 

Вывод: при большом числе опытов частота события приближается (точнее - сходится по вероятности) к вероятности этого события. Следовательно, можно сделать вывод, что теорема Бернулли верна.

Задание 2,3. Моделирование дискретной случайной величины, имеющей закон распределения Пуассона. Подтверждение гипотезы о том, что полученная случайная величина имеет данный закон распределения с помощью критерия Колмогорова.

 

Закон Пуассона

Рассмотрим случайную величину X, которая может принимать целые, неотрицательные значения:0,1,2,...,m,...

Говорят, что эта СВ X распределена по закону Пуассона, если вероятность того, что она примет определенное значение т, выражается формулой:

 

(m=0,1,2...), а - некоторая положительная величина называемая параметром закона Пуассона. Ряд распределения СВ X, распределенный по закону Пуассона, имеет вид:

 

0 1 2 m
(a/1!) 2/2!) (am/m!)

 

Это распределение зависит от одного параметра а, на рисунке 1 показан вид распределения Пуассона при различных а.

 

Математическое ожидание данного распределения случайной величины равно параметру закона Пуассона а: ; Дисперсия также равна этому параметру: Dx=a. Таким образом дисперсия случайной величины, распределенной по закону Пуассона равна ее математическому ожиданию и равна параметру а.

Это свойство применяется на практике для решения вопроса, правдоподобна ли гипотеза о том, что случайная величина X, распределена по закону Пуассона, для этого определяют из опыта статистические характеристики: математическое ожидание и дисперсию. Если их значения близки, то гипотеза является правдоподобной.

Дискетной называется случайная величина возможные значения которой есть отдельные изолированные числа(т.е. между двумя возможными соседними значениями нет возможных значений), которые эта величина принимает с определенными вероятностями. Другими словами, возможные значения дискретной случайной величины можно перенумеровать. Число возможных значений дискретной случайной величины может быть конечным или бесконечным (в последнем случае множество всех возможных значений называют счетным).

Законом распределения называют перечень ее возможных значений и соответствующих им вероятностей. Текст программы:

Program Puasson_Kolmagor;

Uses CRT, Graph;

Const a = 2.0; d = 8; n = 500; k = d+1; Lkr = 1.2;

Top = 68; Left = 45; Width = 550; Height = 340; Ny = 14;

Type Real = Extended;

Var GrDriver, GrMode, X1, Y1, X2, Y2: Integer;

i, j, w: Word; SumS, SumA, Ran, Dk, Kol: Real;

Xmin, Xmax, Ry, Mx, Dx, Rx, Sx, Ex, Sk, h: Real;

HZoom, VZoom, Lx, Ly: Real; Txt: String[20];

S, AL, AY, Y: Array[0..d] Of Real;

X: Array[1..n] Of Byte;

Procedure Bue; Far;

Begin

AssignCrt(Output); Rewrite(Output); CloseGraph;

Window(1, 1, 80, 25); ClrScr;

WriteLn ('Programed by Yuri Melnikov RD-2');

WriteLn ('All rights reserved. (c) 2004.');

WriteLn ('Thanks for attention.');

End;

Procedure Pause;

Var TextAtt, i: Byte;

Begin

Delay(1000); While KeyPressed Do ReadKey;

TextAtt:= TextAttr; TextColor(7);

GoToXY(1, 25); For i:= 1 To 5 Do WriteLn;

Write(' Press any key to continue or <ESC> to exit...');

Repeat Until KeyPressed; If ReadKey = #27 Then Halt;

TextAttr:= TextAtt; GoToXY(1, 1); ClearDevice;

End;

Function Pwr(x, p: Real): Real; {Возведение в степень}

Begin

If x > 0 Then Pwr:= exp(p*ln(x))

         Else Pwr:= 0;

End;

Function Fact(x: Word): Real;

{Справка для Егоровой Т.П. Считает до 1000!}

Var i: Word; F: Real;

Begin

F:= 1;

If x > 0 Then For i:= 1 To x Do F:= F * i;

Fact:= F;

End;

Function f(m: Word): Real;

Begin

If m >= 0 Then f:= Pwr(a, m)*exp(-a) / Fact(m)

Else f:= 0;

End;

Begin

Assign(Output, ''); Rewrite(Output); Randomize; ExitProc:= @Bue;

DetectGraph(GrDriver, GrMode); InitGraph(GrDriver, GrMode, 'BGI');

SumS:= 0;

For i:= 0 To d Do Begin

     S[i]:= f(i); SumS:= SumS + S[i];

End;

For i:= 0 To d Do Begin al[i]:= 0;

     For j:= 0 To i Do al[i]:= al[i] + S[j] / SumS;

End;

For w:= 1 To n Do Begin

     Ran:= Random;

     For i:= 0 To d Do Begin

          If al[i] > Ran Then Begin

              x[w]:= i; Break;

          End;

     End;

End; WriteLn; Write(' Смоделирована ');

WriteLn('последовательность случайных чисел (з. Пуассона):');

WriteLn; Mx:= 0;

For i:= 1 To n Do Begin

     Write(X[i]:2, ' ');

     Mx:= Mx + X[i] / n;

End; Pause; Dx:= 0; Sk:= 0;

Xmin:= X[1]; Xmax:= Xmin;

For i:= 1 To n Do Begin

     Dx:= Dx + Sqr(x[i]-Mx) / (n - 1);

     If Xmin > X[i] Then Xmin:= X[i];

     If Xmax < X[i] Then Xmax:= X[i];

End;

Sx:= Sqrt(Dx); WriteLn;

Rx:= d; h:= Rx / k; Ex:= -3;

For i:= 1 To n Do Begin

     Sk:= Sk + Sqr(x[i]-Mx)*(x[i]-Mx)/(Dx*Sx*k);

     Ex:= Ex + Sqr(x[i]-Mx)*Sqr(x[i]-Mx)/(k*Sqr(Dx));

End;

WriteLn(' Диапазон значений: ', Xmin:0:3, ' - ', Xmax:0:3);

WriteLn(' Мат. ожидание: ', Mx:0:3);

WriteLn(' Дисперсия: ', Dx:0:3);

WriteLn(' Ср. кв. отклонение: ', Sx:0:3);

WriteLn(' Коэффициент скошенности: ', Sk:0:3);

WriteLn(' Эксцесс: ', Ex:0:3); Pause;

For i:= 1 To n Do Begin

     j:= Trunc((x[i]-Xmin) / h); If j > d Then j:= d;

     y[j]:= y[j] + 1/n;

End; Dk:= 0;

For i:= 0 To d Do Begin ay[i]:= 0; al[i]:= 0;

     For j:= 0 To i Do Begin

          ay[i]:= ay[i] + y[j];

          al[i]:= al[i] + f(j);

     End;

     If Dk < Abs(ay[i]-al[i]) Then Dk:= Abs(ay[i]-al[i]);

End; Ry:= 0;

For i:= 0 To d Do Begin

     If Ry < y[i] Then Ry:= y[i];

End;

HZoom:= Width / Rx; VZoom:= Height / Ry;

WriteLn; WriteLn(' Гистограмма смоделированной СВ:');

Lx:= Rx / k; Ly:= Ry / Ny; SetTextStyle(0,1,0);

SetViewPort(Left, Top, Left + Width, Top + Height, False);

For i:= 0 To k Do Begin

     X1:= Round(Lx*i*HZoom);

     SetColor(7); Line(X1, 0, X1, Height + 5);

     Str((Lx*i+Xmin):0:2, Txt);

     OutTextXY(X1+4, Height+10, Txt);

     SetColor(DarkGray); Line(X1, 0, X1, Height);

End; SetTextStyle(0, 0,0);

For i:= 0 To Ny Do Begin

     Y1:= Round(Height-Ly*i*VZoom);

     SetColor(7); Line(-5, Y1, Width, Y1); Str(Ly*i:0:2, Txt);

     OutTextXY(-40, Y1-4, Txt);

     SetColor(DarkGray); Line(0, Y1, Width, Y1);

     Y1:= Round(Height-Ly*(i-0.5)*VZoom);

     If i > 0 Then Line(0, Y1, Width, Y1);

End;

SetColor(White); SetFillStyle(8, 7);

For i:= 1 To k Do Begin

X1:= Round((i-1)*Lx*HZoom-Lx*HZoom*0.05);

X2:= Round(i*Lx*HZoom-Lx*HZoom*0.95);

Y1:= Round(Height - y[i-1]*VZoom); Y2:= Height;

Bar3D(X1, Y1, X2, Y2, 0, False);

End;

MoveTo(0, Round(Height-f(0)*VZoom));

For i:= 1 To d Do

     LineTo(Round(i*HZoom), Round(Height-f(i)*VZoom));

Line(0, -30, 0, Height+5); Line(0, -28, 2, -15); Line(0, -28, -2, -15);

Line(-5, Height, Width + 30, Height);

OutTextXY(-36,-30,'f(x)');

OutTextXY(Width+20, Height+5,'x');

Line(Width + 28, Height, Width + 15, Height-2);

Line(Width + 28, Height, Width + 15, Height+2);

Pause; WriteLn;

Kol:= Dk * Sqrt(n);

WriteLn(' Критерий Колмогорова:'); WriteLn;

WriteLn(' F(x)     F~(x) '); WriteLn;

For i:= 0 To d Do WriteLn(al[i]:10:2, ay[i]:14:2);

WriteLn; WriteLn(' Максимум модуля разности: ', Dk:0:2);

WriteLn(' Значение лямбда: ', Kol:2:2);

WriteLn(' Лямбда критическое (а=0.1): ', Lkr:2:2);

Write(' Так как ', Kol:0:2, ' ');

If Kol < Lkr Then Begin

WriteLn('< ', Lkr:0:2, ' то расхождения можно считать случайными.');

WriteLn(' Нет оснований отвергнуть гипотезу о распределении');

Write(' данной совокупности по закону Пуассона.');

End;

If Kol > Lkr Then Begin

WriteLn('> ', Lkr:0:2, ' то расхождения следует считать неслучайными.');

WriteLn(' Нет оснований принять гипотезу о распределении');

Write(' данной совокупности по закону Пуассона.');

End;

Pause;

End.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: