Программа 117. Участок числовой оси разбит на равные отрезки.
Разбиение задается тройкой чисел (m, x0, s) и формулой xl=x0+ls. Значение x принадлежит классу l, если xl≤x<xl+1. Алгоритм подсчитывает число попаданий nj элементов выборки {xi}, i=1...n, в соответствующие классы l=0...m, а по прерывании ввода вычисляет частоты pl=nl/n.
10 VAC:INPUT "n",A,"x0",B,"s",C
20 INPUT D:D=(D-B)/C:IF D<0;D=0
30 E=E+1:IF D>A;D=A
40 F(D)=F(D)+1:GOTO 20
50 FOR D=0 TO A:PRINT D;F(D)/E:NEXT D:GOTO 20
Размер: 109, F(n)
Пример: n=2; x0=1; s=2.
Выборка: 3; 4; 3,2; 2,5; 1,5.
Завершение ввода: [AC] RUN 50[EXE].
Ответ: p0=0,4; p1=0,6; p2=0.
Программа 118. При исследовании выборки {xi} сперва вычисляют начальные моменты
ak=1/n е(i)xik;
где k - порядок момента, n - объем выборки; затем из начальных моментов выражают необходимые статистические характеристики, например:
выборочное среднее m=a1;
смещенное СКО ss=Ц(a2-a12);
несмещенное СКО s= ssЦ(n/(n-1));
асимметрию As=(a3-3a1a2+2a13)/ss3;
эксцесс Ex=(a4-4a3a1+6a2a12-3a14)/
ss4-3.
10 VAC
20 INPUT A:C=1:FOR B=0 TO 4:D(B)=D(B)+C:C=C*A:NEXT B:GOTO 20
30 A=E/D:B=SQR (F/D-A*A):PRINT "m";A,"s";B/SQR (1-1/D)
40 PRINT "As";(G-3*F*A+2*A*A*E)/D/B-3
50 PRINT "Ex";(H-4*G*A+6*F*A*A-3*A-3*E)/D/B-4-3:GOTO
20
Размер: 166, H
Пример: 1; 2; 3; 4; 5; [AC] RUN 30[EXE].
Ответ: m=3; s=1,58...; As=0; Ex=-1,3.
Программа 119. Коэффициент корреляции
r=(еxy-еxеy/n)/Ц{(еx2-(еx)2/n)(еy2-(еy)2/n)}
служит для оценивания по выборке {xi, yi} степени зависимости случайных величин X и Y.
10 VAC
20 INPUT "x",A,"y",B:C=C+1:D=D+A:E=E+B:F=F+A*A:G=G+B*B:H=H+A*B
30 GOTO 20
40 PRINT (H-D*E/C)/SQR ((F-D*D/C)*(G-E*E/C)):GOTO 20
Размер: 107, H
Пример:
x |
1 |
1 |
3 |
3 |
5 |
5 |
y |
2 |
4 |
1 |
5 |
2 |
4 |
Завершение ввода данных: [AC] RUN 40[EXE].
Ответ: r=0.
Тест позволяет принять или отвергнуть гипотезу о принадлежности выборки к эталонной популяции.
Программа 120. Критерий согласия c2. Гипотеза: выборка {xi} принадлежит к генеральной совокупности с заданным распределением F(x).
Процедура оценивания базируется на вычислении интеграла c2-распределения. Расчетная формула при числе степеней свободы m≦30:
Fm(t)=(t/2)m/2/G(m/2+1)/et/2(1+е(k)tk/Х(l)(m+2l)), k=0...г, l=1...k.
При m>30 ряд не сходится (существует другая формула). Гипотеза о принадлежности выборки к заданному распределению отвергается, если
1-Fm(t)<a;
где a - заданный уровень значимости;
t - рассогласование.
Для вычисления t необходимо так разбить выборку на классы
l=1...k, чтобы выполнялись условия:
npl≥5, l=2...k-1 и np l≥1, l=1...k;
где n - объем выборки;
pl-вероятность попадания в l-й класс, вычисленная по
гипотетическому распределению.
Тогда рассогласование
t=-n+е(l)nl2/n/pl, l=1...k
где nl - число элементов выборки, попавших в l-й класс.
Число степеней свободы c2-распределения
m=k-1-r;
где r - число параметров гипотетического распределения, значения которых были определены по той же выборке.
Если интеграл гипотетического распределения оказывается трудновычислимым, разбиение на классы можно делать "на глаз" с последующим вычислением pl и соответствующим расслоением выборки.
В случае простых распределений можно составить быстрый алгоритм, который проведет разбиение на классы из условия равенства всех pl, что и реализовано в представленной программе.
В качестве примера взято экспоненциальное распределение
F(x)=1-e-x/T.
Предполагается, что значение T=10 вычислено по той же выборке.
Разбиение проводится по правилу pl=1/k, где k=Int(n/5). Квантили экспоненциального распределения, соответствующие значениям вероятности (l-1)/k, l=1...k, находятся по формуле:
xl=-T ln (1-(l-1)/k).
Так как один параметр распределения вычислен по той же выборке, определяем степень свободы как m=k-2.
10 VAC:INPUT "n",A:B=INT (A/5):IF
B>30;B=30
20 FOR C=0 TO B-1:F(C+C)=-LN (1-C/B)*10:NEXT C:FOR C=1 TO A
30 INPUT D:FOR E=B+B TO 2 STEP -2:IF D<D(E);NEXT E:STOP
40 E(E)=E(E)+1:NEXT C:D=B/A:A=-A:FOR C=1 TO B:A=A+E(C+C)-2*D
50 NEXT C:B=(B-2)/2:C=p-FRAC
B:FOR D=1-FRAC B TO B
60 C=C*D:NEXT D:C=(A/2)-B/C/EXP
(A/2):D=0:B=B+B
70 D=D+C:B=B+2:C=C*A/B:IF D+C¦D THEN 70
80 PRINT D
Размер: 261, E(2*B)
Пример: n=15; выборка {11; 12; 8; 7; 1; 2; 19; 6; 11; 14; 1; 2; 12; 33; 11}.
Ответ: 1-F1(2,8)=0,90573569
(при a=0,9 гипотеза будет принята, при a=0,95
- отклонена).
Программа 121. Критерий Стьюдента. Гипотеза: две генеральные совокупности, распределенные нормально с равными дисперсиями, обладают равными матожиданиями. Гипотеза отклоняется, если 1-In(t)<a;
где a - уровень значимости;
In(t) - интеграл по отрезку [-t,t] от
распределения Стьюдента.
Рассогласование t определяется по формуле:
t=|1/pе(l)xi-1/qе(j)yj|Ц{pq(p+q-2)/(p+q)/(е(l)xi2-е(j)yj2)}; i=1...p, j=1...q
где p, q - объемы выборок;
xi, yi - выборочные значения.
Расчетные формулы для In(t):
n=p+q-2;
q=arctg(t/Цn);
при четных n:
In(t)=sin q (1+1/2cos2 q+3/8cos4 q+ ... +1/2 3/4 5/6 ... (n-3)/(n-2)cosn-2 q);
при нечетных n:
In(t)=2/p{ q+sin q (cos q+2/3cos3 q+ ... +2/3 4/5 6/7 ... (n-3)/(n-2)cosn-2 q)};
10 VAC:MODE 5:FOR A=1 TO 2:INPUT
"p",A(A):FOR H=1 TO A(A)
20 PRINT H;:INPUT I:C(A)=C(A)+I:E(A)=E(A)+I*I:NEXT H:NEXT A
30 A=ATN (ABS (D/B-E/C)*SQR (B*C/(B+C)/(F+G-D*D/B-E*E/C)))
40 B=B+C-2:C=COS A:D=2*FRAC (B/2):E=C-D*SGN
(B-1):F=0
50 F=F+E:D=D+2:IF D<B;E=E*C*C*(D-1)/D:GOTO 50
60 F=F*SIN A:IF FRAC (B/2)¦0;F=(F+A)*2/p
70 PRINT 1-F
Размер: 244, I
Пример: p=3; xi: 0; 1; 2; q=4; yi: 2; 3; 4; 5.
Ответ: 1-I5(2,766)=0,03953282.
Программа 122. Критерий Фишера. Гипотеза: две генеральные совокупности, распределенные нормально, обладают равными дисперсиями. Гипотеза отклоняется, если
F(t,v,w)<a/2;
где a - уровень значимости;
F(t,v,w) - интеграл от распределения Фишера.
F(t,v,w)=т0tG((v+w)/2)/G(v/2)/G(w/2)(v/w)v/2tv/2-1/(1+tv/w)(v+w)/2dt;
где t=S12/S22 - рассогласование;
S12≤S22 - выборочные дисперсии;
v=n1-1, w=n2-1 - степени свободы;
n1, n2 - объемы выборок.
Вычисление интеграла в программе производится методом Гаусса 3-го порядка с разбиением отрезка [0; t] на пять интервалов, что обеспечивает в худшем случае (при t=1) три верных знака.
10 FOR A=1 TO 2:F=0:H=0:INPUT "n",J:FOR
G=1 TO J:PRINT G;
20 INPUT I:H=H+I*I:F=F+I:NEXT G:A(A)=J-1:C(A)=(H-F*F/J)/A(A)
30 PRINT A;C(A):NEXT A
40 A=D/E:IF A>1;A=1/A:D=B:B=C:C=D
50 D=(B+C)/2:E=B/C:G=FRAC D:F=p-G:FOR
G=1-G TO D-1:F=F*G
60 NEXT G:FOR H=0 TO 1:B(H)=B(H)/2:G=-FRAC B(H):F=F*p-G
70 G=G+1:IF G<B(H);F=F/G:GOTO 70
80 NEXT H:C=F*E-B:F=0:G=SQR .15:H=8:I=5:J=A/5
90 FOR K=J/2 TO A STEP J:FOR L=-1 TO 1:M=K+SGN L*F(ABS L)*J
100F=F+H(ABS L)*M-(B-1)/(1+E*M)-D:NEXTL:NEXT
K:PRINT F*C*J/18
Размер: 363, M
Пример: n1=3; xi: 1; 2; 3 (S12=1);
n2=4; yi: 1; 3; 5; 7 (S22=0,666...).
Ответ: F(0,15; 2; 3)=0,133215831 (точны 7 знаков).