home *** CD-ROM | disk | FTP | other *** search
/ Best Objectech Shareware Selections / UNTITLED.iso / boss / educ / math / 023 / probs.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-07-17  |  9.4 KB  |  147 lines

  1. 1  '          PROBABILITIES  ---  PROBS.BAS   by  Dr Russell Langley
  2. 9  GOTO 400' <UNK! {000A}><UNK! {000A}>--- Sub Y=DLOGE(X)
  3. 10  IF X>=10THEN X=X/10:KT=KT+1:GOTO 10
  4. 11  IF X<0.1THEN X=X*10:KT=KT-1:GOTO 11
  5. 12  X2=(X-1)/(X+1):X3=X2:Y=X2:I=3
  6. 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
  7. 14  IF KT>0THEN Y=Y+EL:KT=KT-1:GOTO 14
  8. 15  IF KT<0 THEN Y=Y-EL:KT=KT+1:GOTO 15
  9. 16  PRINT SPACE$(30);:LOCATE ,POS(0)-30:RETURN' <UNK! {000A}><UNK! {000A}>--- Sub Y=DEXP(X)
  10. 20  X2=X:X=ABS(X):X3=1:Y=1:I=0
  11. 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
  12. 22  RETURN' <UNK! {000A}><UNK! {000A}>--- Sub Y=DLOGG(XG)  (after M. Abramowitz & I. A. Stegun)
  13. 30  XX=XG:XT=1
  14. 31  IF XX<=13 THEN XT=XT*XX:XX=XX+1:GOTO 31
  15. 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)
  16. 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)
  17. 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
  18. 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
  19. 61  B=U+V:XG=B:GOSUB 30:G3=Y:XG=U:GOSUB 30:G4=Y:XG=V:GOSUB 30:G5=Y
  20. 62  C=0:S=1:T=1:IF F<1 THEN VU=V*F/(U+V*F):UV=U/(U+V*F) ELSE VU=V/(V+U*F):UV=U*F/(V+U*F)
  21. 63  PRINT"SUM "S;:LOCATE ,1:TS=S:T=T*(B+C)/(V+1+C)*VU:S=S+T:C=C+1:IF T>D6 THEN 63
  22. 64  X=UV:GOSUB 10:G1=Y:X=VU:GOSUB 10:G2=Y:X=U*G1+V*G2+G3-G4-G5:GOSUB 20:P=Y*S/V:IF F<1 THEN P=1-P
  23. 65  RETURN' <UNK! {000A}><UNK! {000A}>--- P for given r
  24. 70  D1=1:D2=DF:F=R*R*DF/(1-R*R):GOSUB 60:RETURN' <UNK! {000A}><UNK! {000A}>--- P for given Chisq
  25. 80  P=1:IF CHI*DF<=0 THEN 84 ELSE U=DF/2:XI=CHI/2:S=0:T=1:R=U:IF XI<13 THEN 81 ELSE IF XI>U THEN 82
  26. 81  TS=S:S=S+T:R=R+1:T=T*XI/R:IF S>TS THEN 81 ELSE X=S:GOSUB 10:G1=Y:X=XI:GOSUB 10:G2=Y:XG=U:GOSUB 30:G3=Y:X=G1-XI+U*G2-G3:GOSUB 20:P=1-Y/U:GOTO 84
  27. 82  S=S+T:R=R-1:TS=R/XI:T=T*TS:IF TS=0 THEN 83 ELSE IF TS>-1 THEN 82
  28. 83  X=S:GOSUB 10:G1=Y:X=XI:GOSUB 10:G2=Y:XG=U:GOSUB 30:G3=Y:X=G1-XI+U*G2-G3:GOSUB 20:P=Y/XI
  29. 84  RETURN' <UNK! {000A}><UNK! {000A}>--- Permutation Sub nPx, allows n!=nPn & nCx=nPx/xPx.
  30. 90  M=N1:E=0:IF X=0 THEN 93
  31. 91  FOR J=X TO 1 STEP -1:IF M>=NT THEN M=M/NT:E=E+T
  32. 92  M=M*N:N=N-N1:NEXT J
  33. 93  RETURN' <UNK! {000A}><UNK! {000A}>--- Date
  34. 100  DAT$=MID$(DATE$,4,2)+" "+MID$("JanFebMarAprMayJunJulAugSepOctNovDec",-2+3*VAL(LEFT$(DATE$,2)),3)+" "+RIGHT$(DATE$,4):RETURN'<UNK! {000A}><UNK! {000A}>--- Printout?
  35. 110  INPUT;"Do you want a printout of this result (Y/N) ";YN$
  36. 111  LOCATE ,1:PRINT SPACE$(60);:LOCATE ,1:IF YN$="" THEN BEEP:GOTO 110
  37. 112  YN$=CHR$(ASC(YN$) AND 95):IF YN$<>"Y" AND YN$<>"N" THEN BEEP:GOTO 110
  38. 113  IF YN$="Y" THEN LINE INPUT;"Press <ENTER> when printer is ON. ";Z$:LOCATE ,1:PRINT SPACE$(60);:LOCATE ,1
  39. 114  RETURN'<UNK! {000A}><UNK! {000A}>--- Start ---
  40. 400  KEY OFF:CLEAR:SCREEN 0,0,0,0:ON ERROR GOTO 503:DEFINT I-K
  41. 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."
  42. 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$
  43. 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
  44. 404  INPUT"Which option (1-9)";JOB:ON JOB GOTO 405,405,405,405,405,456,456,439,503:BEEP:GOTO 404' <UNK! {000A}><UNK! {000A}>--- First 5 Probabilities ---
  45. 405  PRINT:DEFDBL A-Z:DEFINT I-N,Q
  46. 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
  47. 407  D6=9E-17:D7=1E-07:EL=2.30259:E$="  (#.#######^^^^)<UNK! {000A}>"
  48. 408  ON JOB GOTO 410,426,432,420,414   'Z,t,F,r,C
  49. 409  '<UNK! {000A}>--- Prob of Z ---
  50. 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
  51. 411  PRINT USING"2-Tail Prob (Z >####.####) = #.#####"+E$;Z;P;P
  52. 412  GOSUB 110:IF YN$="Y" THEN LPRINT USING"2-Tail Prob (Z >####.####) = #.#####"+E$;Z;P;P:LPRINT:GOTO 410 ELSE 410
  53. 413  '<UNK! {000A}>--- Prob of CHISQ ---
  54. 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
  55. 415  INPUT"What df ";DF:ND=DF:IF ND<=0 THEN BEEP:PRINT"Degrees of freedom must be positive!":GOTO 415
  56. 416  IF CHI<1E-08 THEN P=1 ELSE GOSUB 80
  57. 417  PRINT USING"1-Tail Prob (CHISQ with##### df >####.####) = #.#####"+E$;ND;CHI;P;P
  58. 418  GOSUB 110:IF YN$="Y" THEN LPRINT USING"1-Tail Prob (CHISQ with##### df >####.####) = #.#####"+E$;ND;CHI;P;P:LPRINT:GOTO 414 ELSE 414
  59. 419  '<UNK! {000A}>--- Prob of r ---
  60. 420  INPUT"Pearson's r value (or null for menu again) ";X$:IF X$="" THEN 400 ELSE R=ABS(VAL(X$))
  61. 421  INPUT"What df ";DF:ND=DF:IF ND<=0 THEN BEEP:PRINT"Degrees of freedom must be positive!":GOTO 421
  62. 422  IF R<1E-08 THEN P=1 ELSE IF R>1 THEN P=0 ELSE GOSUB 70
  63. 423  PRINT USING"2-Tail Prob (PEARSON'S r with##### df > #.####) = #.#####"+E$;ND;R;P;P
  64. 424  GOSUB 110:IF YN$="Y" THEN LPRINT USING"2-Tail Prob (PEARSON'S r with##### df > #.####) = #.#####"+E$;ND;R;P;P:LPRINT:GOTO 420 ELSE 420
  65. 425  '<UNK! {000A}>--- Prob of t ---
  66. 426  INPUT "Student's t value (or null for menu again) ";X$:IF X$="" THEN 400 ELSE ST=ABS(VAL(X$))
  67. 427  INPUT "What df ";DF:ND=DF:IF ND<=0 THEN BEEP:PRINT"Degrees of freedom must be positive!":GOTO 427
  68. 428  IF ST<1E-08 THEN P=1 ELSE F=ST*ST:D1=1:D2=DF:GOSUB 60
  69. 429  PRINT USING"2-Tail Prob (STUDENT'S t with##### df >###.####) = #.#####"+E$;ND;ST;P;P
  70. 430  GOSUB 110:IF YN$="Y" THEN LPRINT USING"2-Tail Prob (STUDENT'S t with##### df >####.####) = #.#####"+E$;ND;ST;P;P:LPRINT:GOTO 426 ELSE 426
  71. 431  '<UNK! {000A}>--- Prob of F ---
  72. 432  INPUT "F value (or null for menu again) ";X$:IF X$="" THEN 400 ELSE F=VAL(X$):IF F<0 THEN BEEP:PRINT"Can't be negative!":GOTO 432
  73. 433  INPUT "Top df    ";D1:N1=D1:IF N1<=0 THEN BEEP:PRINT"Must be > 0.":GOTO 433
  74. 434  INPUT "Bottom df ";D2:N2=D2:IF N2<=0 THEN BEEP:PRINT"Must be > 0.":GOTO 434
  75. 435  IF F<1E-08 THEN P=1 ELSE GOSUB 60
  76. 436  PRINT USING"1-Tail Prob (F(####!#####) >####.####) = #.#####"+E$;N1;",";N2;F;P;P
  77. 437  GOSUB 110:IF YN$="Y" THEN LPRINT USING"1=Tail Prob (F(####!#####) >####.####) = #.#####"+E$;N1;",";N2;F;P;P:LPRINT:GOTO 432 ELSE 432
  78. 438  '<UNK! {000A}>--- Combining Probs ---
  79. 439  DEFSNG I-K:DIM PRB(40):PRINT:PRINT TAB(20)"COMBINING  INDEPENDENT  PROBABILITIES":PRINT TAB(20)STRING$(37,"~")
  80. 440  F$="\           \ #.###":P1$="1-Tail Prob =":P2$="2-Tail Prob ="
  81. 441  INPUT"How many probabilities (2-40)";K:IF K<2 OR K>40 THEN BEEP:GOTO 441 ELSE KK=K
  82. 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
  83. 443  FOR J=1 TO K
  84. 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
  85. 445  C=C+LOG(PRB(J)):NEXT J
  86. 446  C=-2*C:D=2*K:PRINT"COMBINED PROBABILITIES:  ";
  87. 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)
  88. 448  L=1:M=1
  89. 449  D=D+2:M=M*C/D:IF M>9.8E-08 THEN L=L+M:GOTO 449
  90. 450  P=J*K*L:IF P>0.5 THEN P=1-P
  91. 451  PRINT USING F$;P1$;P;:PRINT USING"   "+F$;P2$;P*2
  92. 452  GOSUB 110:IF YN$="N" THEN 400
  93. 453  LPRINT"INDEPENDENT PROBABILITIES":FOR J=1 TO KK:LPRINT " # ";USING"##  #.#####";J;PRB(J):NEXT J
  94. 454  LPRINT"COMBINED PROBABILITIES:  ";:LPRINT USING F$;P1$;P;:LPRINT USING"   "+F$;P2$;P*2:LPRINT:LPRINT:GOTO 400
  95. 455  '<UNK! {000A}>--- Binomial Probs ---
  96. 456  DEFDBL M,N:DIM A(100),C(100):F=2.30259:N1=1:NT=1E+10:T=10:T1=24:T2=40
  97. 457  IF JOB=7 GOTO 481
  98. 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,"~")
  99. 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
  100. 460  INPUT"Sample Size";S:IF S<2 THEN BEEP:GOTO 460
  101. 461  PRINT"In your sample ---"
  102. 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
  103. 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
  104. 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
  105. 465  PRINT:PRINT"# WITH ATTRIBUTE     INDIV. PROB.     CUM. PROB.":L=1:P=PP/100
  106. 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))
  107. 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)
  108. 468  PRINT TAB(8);USING"####";X;:PRINT TAB(T1);USING"###.##%";A(X);:PRINT TAB(T2);USING"###.##%";C(X)
  109. 469  L=L+1:IF L=21 THEN PRINT TAB(35)"Press <ENTER> to continue.";:LINE INPUT;Z$:LOCATE ,1:PRINT SPACE$(70);:LOCATE ,1
  110. 470  IF C(X)>99.997 THEN X=Z
  111. 471  NEXT X
  112. 472  GOSUB 110:IF YN$="N" THEN 400
  113. 473  LPRINT CHR$(14);"BINOMIAL PROBABILITIES";CHR$(20)     'Sets wide letters on Epson printers.
  114. 474  LPRINT:LPRINT"Pop Proportion ="STR$(PP)"%"SPACE$(6)"Sample Size ="S
  115. 475  LPRINT:LPRINT"# WITH ATTRIBUTE     INDIV. PROB.     CUM. PROB."
  116. 476  FOR X=Y TO Z STEP INC
  117. 477  LPRINT TAB(8);USING"####";X;:LPRINT TAB(T1);USING"###.##%";A(X);:LPRINT TAB(T2);USING"###.##%";C(X)
  118. 478  IF C(X)>99.997 THEN X=Z
  119. 479  NEXT X:LPRINT STRING$(48,"="):LPRINT" ":LPRINT" ":GOTO 400
  120. 480  '<UNK! {000A}>--- Poisson Probs ---
  121. 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,"~")
  122. 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)
  123. 483  INPUT "What is the SMALLEST number of occurrences for which you want P ";Y:IF Y<0 THEN BEEP:GOTO 483
  124. 484  INPUT "What is the LARGEST  number of occurrences for which you want P ";Z:IF Z<Y THEN BEEP:GOTO 484
  125. 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
  126. 486  PRINT:PRINT"# OF OCCURRENCES     INDIV. PROB.     CUM. PROB.":L=1
  127. 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))
  128. 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)
  129. 489  PRINT TAB(8);USING"####";X;:PRINT TAB(T1);USING"###.##%";A(X);:PRINT TAB(T2);USING"###.##%";C(X)
  130. 490  L=L+1:IF L=21 THEN PRINT TAB(35)"Press <ENTER> to continue.";:LINE INPUT;Z$:LOCATE ,1:PRINT SPACE$(70);:LOCATE ,1
  131. 491  IF C(X)>99.997 THEN X=Z
  132. 492  NEXT X
  133. 493  GOSUB 110:IF YN$="N" THEN 400
  134. 494  LPRINT CHR$(14);"POISSON PROBABILITIES";CHR$(20)      'Sets wide letters on Epson printers.
  135. 495  LPRINT:LPRINT"Expected Number, MU =";MU
  136. 496  LPRINT:LPRINT"# OF OCCURRENCES     INDIV. PROB.     CUM. PROB."
  137. 497  FOR X=Y TO Z STEP INC
  138. 498  LPRINT TAB(8);USING"####";X;:LPRINT TAB(T1);USING"###.##%";A(X);:LPRINT TAB(T2);USING"###.##%";C(X)
  139. 499  IF C(X)>99.997 THEN X=Z
  140. 500  NEXT X:LPRINT STRING$(48,"="):LPRINT" ":LPRINT" ":GOTO 400
  141. 501  '<UNK! {000A}>--- Errors / Exit ---
  142. 502  PRINT:PRINT"In line"ERL"EXP(X) would overflow because ABS(X) > 87.336":LINE INPUT "Press <ENTER> to resume.";Z$:GOTO 400
  143. 503  IF ERR THEN BEEP ELSE RUN "MENU"
  144. 504  IF ERR=6 AND ERL=21 THEN RESUME 502
  145. 505  ON ERROR GOTO 0
  146. 506  END
  147.