1 ' PROBABILITIES --- PROBS.BAS by Dr Russell Langley
9 GOTO 400' <UNK! {000A}><UNK! {000A}>--- Sub Y=DLOGE(X)
10 IF X>=10THEN X=X/10:KT=KT+1:GOTO 10
11 IF X<0.1THEN X=X*10:KT=KT-1:GOTO 11
12 X2=(X-1)/(X+1):X3=X2:Y=X2:I=3
13 PRINT"LOG "Y;:LOCATE ,1:X1=Y:X3=X3*X2*X2:Y=Y+X3/I:I=I+2:IF Y-X1 THEN 13 ELSE Y=2*Y
14 IF KT>0THEN Y=Y+EL:KT=KT-1:GOTO 14
15 IF KT<0 THEN Y=Y-EL:KT=KT+1:GOTO 15
16 PRINT SPACE$(30);:LOCATE ,POS(0)-30:RETURN' <UNK! {000A}><UNK! {000A}>--- Sub Y=DEXP(X)
20 X2=X:X=ABS(X):X3=1:Y=1:I=0
21 PRINT"EXP "Y;:LOCATE ,1:X1=Y:I=I+1:X3=X3/I*X:Y=Y+X3:IF Y-X1 THEN 21 ELSE PRINT:IF X2<0 THEN Y=1/Y
22 RETURN' <UNK! {000A}><UNK! {000A}>--- Sub Y=DLOGG(XG) (after M. Abramowitz & I. A. Stegun)
30 XX=XG:XT=1
31 IF XX<=13 THEN XT=XT*XX:XX=XX+1:GOTO 31
32 X=XX:GOSUB 10:H1=Y:X=XT:GOSUB 10:H2=Y:Y=(XX-0.5)*H1-XX+0.918939-H2+1/XX*(0.0833333-(1/XX/XX*(0.00277777+(1/XX/XX*(0.000793651-(1/XX*0.000592381)))))):RETURN'<UNK! {000A}>--- Sub Y=DSQRT(X)
40 Y=SQR(X):Y=(Y+X/Y)/2:Y=(Y+X/Y)/2:RETURN' <UNK! {000A}><UNK! {000A}>--- P for given Z (after M. Abramowitz & I. A. Stegun)
50 T=1/(1+0.231642*Z):X=-Z*Z/2:GOSUB 20:P=2*0.398942*Y*T*((((1.33027*T-1.82126)*T+1.78148)*T-0.356564)*T+0.319382):RETURN' <UNK! {000A}><UNK! {000A}>--- P for given F
60 P=1:IF D1*D2*F<=0 THEN 65 ELSE IF F<1 THEN U=D2/2:V=D1/2 ELSE U=D1/2:V=D2/2
401 CLS:HD$=" P R O B A B I L I T I E S ":VER$="(RL,7)":GOSUB 100:PRINT DAT$;TAB(40-LEN(HD$)\2);:COLOR 0,7:PRINT HD$;:COLOR 7,0:PRINT TAB(73)VER$:LOCATE 4,1:K=10:P$=" probabilities."
402 PRINT TAB(K)"1. Z (standard normal deviate)"P$"<UNK! {000A}>"TAB(K)"2. Student's t"P$"<UNK! {000A}>"TAB(K)"3. F (variance ratio)"P$"<UNK! {000A}>"TAB(K)"4. Pearson's r (correlation coefficient)"P$"<UNK! {000A}>"TAB(K)"5. Chi-squared"P$
403 PRINT TAB(K)"6. Binomial"P$"<UNK! {000A}>"TAB(K)"7. Poisson"P$"<UNK! {000A}>"TAB(K)"8. Combining probabilities from independent sources.<UNK! {000A}>"TAB(K)"9. Return to Main Menu.":PRINT
406 DIM Y,I,X3,X1,S,C,T,X2,TS,D6,X,V,VU,B,R,KT,XX,XI,F,XT,U,P,EL,AP,D7,G1,G2,UV,Z$,G3,Z,CH,FS,H1,H2,XG,G5,G4,DF,XS,IN,K,CP,X$,D1,D2,KI,AE,ND,J,E$,NC,S2,S1,N1,N2,ST
410 INPUT"Z value (or null for menu again) ";X$:IF X$="" THEN 400 ELSE Z=ABS(VAL(X$)):IF Z<1E-08 THEN P=1 ELSE GOSUB 50
411 PRINT USING"2-Tail Prob (Z >####.####) = #.#####"+E$;Z;P;P
412 GOSUB 110:IF YN$="Y" THEN LPRINT USING"2-Tail Prob (Z >####.####) = #.#####"+E$;Z;P;P:LPRINT:GOTO 410 ELSE 410
413 '<UNK! {000A}>--- Prob of CHISQ ---
414 INPUT "Chi-squared value (or null for menu again) ";X$:IF X$="" THEN 400 ELSE CHI=VAL(X$):IF CHI<0 THEN BEEP:PRINT"Squares can't be negative!":GOTO 414
415 INPUT"What df ";DF:ND=DF:IF ND<=0 THEN BEEP:PRINT"Degrees of freedom must be positive!":GOTO 415
441 INPUT"How many probabilities (2-40)";K:IF K<2 OR K>40 THEN BEEP:GOTO 441 ELSE KK=K
442 PRINT TAB(6)"Now enter your"K"probability figures (as 1-TAIL DECIMALS, not %),":PRINT TAB(6)"or 1-P for cases with opposite sign from the others (e.g. if -Z).":C=0
443 FOR J=1 TO K
444 PRINT"Prob #";J;:INPUT PRB(J):IF PRB(J)<0 OR PRB(J)>1 THEN BEEP:PRINT"Must be a decimal figure between 0 and 1. Please re-do.":GOTO 444
445 C=C+LOG(PRB(J)):NEXT J
446 C=-2*C:D=2*K:PRINT"COMBINED PROBABILITIES: ";
447 B=1:FOR I=D TO 2 STEP -2:B=B*I:NEXT I:K=C^(INT((D+1)/2))*EXP(-C/2)/B:IF INT(D/2)=D/2 THEN J=1 ELSE J=SQR(2/C/3.14159)
448 L=1:M=1
449 D=D+2:M=M*C/D:IF M>9.8E-08 THEN L=L+M:GOTO 449
450 P=J*K*L:IF P>0.5 THEN P=1-P
451 PRINT USING F$;P1$;P;:PRINT USING" "+F$;P2$;P*2
458 PRINT:PRINT TAB(17)"B I N O M I A L P R O B A B I L I T I E S":PRINT TAB(17)STRING$(43,"~")
459 INPUT "Population Proportion (%) ";X$:IF INSTR(X$,"%") THEN BEEP:PRINT"Please re-do with any % sign.":GOTO 459 ELSE PP=VAL(X$):IF PP<=0 OR PP>=100 THEN BEEP:PRINT"This must be a figure between 0 and 100.":GOTO 459
460 INPUT"Sample Size";S:IF S<2 THEN BEEP:GOTO 460
461 PRINT"In your sample ---"
462 INPUT "What is the SMALLEST number of cases for which you want P ";Y:IF Y<0 OR Y>S THEN BEEP:GOTO 462
463 INPUT "What is the LARGEST number of cases for which you want P ";Z:IF Z<Y OR Z>S THEN BEEP:GOTO 463
464 INPUT "Should the number of cases be shown in Ascending or Descending order (A/D) ";X$:INC=INSTR("DdAa",X$):IF INC=0 THEN BEEP:GOTO 464 ELSE IF INC>2 THEN INC=1 ELSE INC=-1:SWAP Y,Z
465 PRINT:PRINT"# WITH ATTRIBUTE INDIV. PROB. CUM. PROB.":L=1:P=PP/100
466 FOR X=Y TO Z STEP INC:N=VAL(STR$(S)):GOSUB 90:MM=M:EE=E:N=VAL(STR$(X)):GOSUB 90:M=MM/M:E=EE-E:A(X)=100*EXP(LOG(M)+F*E+X*LOG(P)+(S-X)*LOG(1-P))
467 IF (X=0 AND INC=1) THEN C(X)=A(X) ELSE IF INC=1 THEN C(X)=C(X-1)+A(X) ELSE C(X)=C(X+1)+A(X)
479 NEXT X:LPRINT STRING$(48,"="):LPRINT" ":LPRINT" ":GOTO 400
480 '<UNK! {000A}>--- Poisson Probs ---
481 PRINT:PRINT TAB(17)"P O I S S O N P R O B A B I L I T I E S":PRINT TAB(17)STRING$(41,"~")
482 INPUT "Expected number of Occurrences (MU) in your sample";X$:MU=VAL(X$):IF MU<=0 THEN BEEP:GOTO 482 ELSE LM=LOG(MU)
483 INPUT "What is the SMALLEST number of occurrences for which you want P ";Y:IF Y<0 THEN BEEP:GOTO 483
484 INPUT "What is the LARGEST number of occurrences for which you want P ";Z:IF Z<Y THEN BEEP:GOTO 484
485 INPUT "Do you want occurrences shown in Ascending or Descending order (A/D) ";X$:INC=INSTR("DdAa",X$):IF INC=0 THEN BEEP:GOTO 485 ELSE IF INC>2 THEN INC=1 ELSE INC=-1:SWAP Y,Z
486 PRINT:PRINT"# OF OCCURRENCES INDIV. PROB. CUM. PROB.":L=1
487 FOR X=Y TO Z STEP INC:N=VAL(STR$(X)):GOSUB 90:A(X)=100*EXP(X*LM-MU-(LOG(M)+F*E))
488 IF (X=0 AND INC=1) THEN C(X)=A(X) ELSE IF INC=1 THEN C(X)=C(X-1)+A(X) ELSE C(X)=C(X+1)+A(X)