10 X$=SYS(CHR$(7)):R$=LEFT(X$,7):L$=RIGHT(X$,8) 11 REM **************************************************************** 12 REM CMODO CMODO CMODO CMODO CMODO CMODO 13 REM **************************************************************** 20 DIM #1,A1(111),A2(111),A3(111) 30 OPEN R$ AS FILE 1 70 S6=0 80 A1(0)=24 150 PRINT L$ 155 PRINT " EVALUATION OF A CHI-SQUARE DISTRIBUTION" 157 PRINT 160 PRINT "THIS MODULE ALLOWS YOU TO EXAMINE THE CHARACTERISTICS OF" 170 PRINT "A CHI-SQUARE DISTRIBUTION." 175 GOTO 270 180 PRINT L$ 185 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 190 PRINT " 1. PERCENTILES" 200 PRINT " 2. HIGHEST DENSITY REGIONS" 210 PRINT " 3. PROBABILITY LESS THAN SOME VALUE" 220 PRINT " 4. PROBABILITY BETWEEN TWO VALUES" 225 PRINT " 5. EXIT MODULE" 230 GOSUB 9000 235 IF O1=5 THEN 1870 240 I=O1 241 PRINT 250 GOTO 560 270 IF S6=1 THEN 180 275 S6=1 280 PRINT 290PRINT"INPUT THE DEGREES OF FREEDOM. (MIN=6 AND MAX=2000)"; 320 GOSUB 9000 325 G=O1 330 IF G<6 THEN 400 335IF G>2000THEN 400 340 PRINT "INPUT THE SCALE PARAMETER."; 350 GOSUB 9000 360 IF O1<=0THEN 380 365 S0=SQR(O1) 370 GOTO 180 380 PRINT "REENTER. SCALE PARAMETER MUST BE GREATER THAN 0." 390 GOTO 340 400PRINT"REENTER. MINUMUM IS 6 AND THE MAXIMUM IS 2000." 410 GOTO 290 420 PRINT L$ 430 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 440 PRINT " 1. FURTHER EVALUATE THIS DISTRIBUTION." 445 PRINT " 2. EVALUATE ANOTHER CHI-SQUARE DISTRIBUTION." 446 PRINT " 3. EXIT MODULE" 460 GOSUB 9000 465 IF O1=3 THEN 1870 470 IF O1=1 THEN 477 471 IF O1=2 THEN 475 472 PRINT "REENTER. INPUT MUST BE 1,2 OR 3." 473 GOTO 460 475 S6=0 476 GOTO 478 477 S6=1 478 PRINT L$ 481 GOTO 270 500PRINT"--------------------------------------------------------" 510 PRINT " CHI-SQUARE DISTRIBUTION." 520 A$="DEGREES OF FREEDOM =#####.## SCALE PARAMETER =#######.##" 521 PRINT USING A$,G,S0*S0 540PRINT"--------------------------------------------------------" 550 RETURN 560 GOSUB 5775 565 REM SELECT OPTION 570 IF I=2 THEN 629 580 IF I=1 THEN 1009 590 IF I=4 THEN 1619 600 IF I=3 THEN 819 610 PRINT 612 PRINT "REENTER. YOU DID NOT SPECIFY 1,2,3,4 OR 5." 620 GOTO 230 629 PRINT L$ 630 REM 640 PRINT " OPTION 2: HIGHEST DENSITY REGIONS" 650 PRINT 655 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 660 PRINT "INPUT P% AS NUMBER BETWEEN 1 AND 100." 670 GOSUB 500 680 PRINT "INPUT P%"; 690 GOSUB 9000 700 IF O1=0 THEN 420 710 J5=O1/100 720 IF O1 <= 1 THEN 795 730 IF O1<100 THEN 740 735 GOTO 795 740 GOSUB 6600 750 J1=J1*S0*S0 760 J2=J2*S0*S0 770A$=" ###.#% HDR = (########.## , ########.##)" 771 PRINT USING A$,J5*100,J1,J2 790 GOTO 680 795 PRINT 800 PRINT "REENTER. INPUT MUST BE 0 OR GREATER THAN 1 AND LESS THAN 100." 805 PRINT 810 GOTO 680 819 PRINT L$ 820 PRINT " OPTION 3: PROBABILITY X IS LESS THAN SOME VALUE" 825 PRINT 830 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 840 PRINT "INPUTTED VALUE MUST BE POSITIVE." 850 GOSUB 500 860 PRINT "INPUT VALUE"; 870 GOSUB 9000 880 IF O1=0 THEN 420 890 X3=O1 900 IF X3>0 THEN 930 910 PRINT "REENTER. VALUE MUST BE GREATER THAN 0." 920GOTO870 930 X=X3/S0/S0 940 GOSUB 5500 975A$=" PROB( X < ########.## ) = #.##" 976 PRINT USING A$,O1,P 995A$=" PROB( X > ########.## ) = #.##" 996 PRINT USING A$,O1,1-P 1000 GOTO 860 1009 PRINT L$ 1010 PRINT " OPTION 1: PERCENTILES" 1020 PRINT 1030 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 1040 PRINT "INPUT PERCENTILES AS NUMBER FROM .5 THRU 99.5." 1060 GOSUB 500 1070 PRINT "INPUT PERCENTILE"; 1080 GOSUB 9000 1090 IF O1=0 THEN 420 1100 P9=O1/100 1105 P9=1-P9 1110 IF O1<.5 THEN 1115 1112 IF O1<=99.5 THEN 1330 1115 PRINT 1116 PRINT "REENTER. INPUT MUST BE 0 OR PERCENTILE FROM .5 THRU 99.5." 1118 PRINT 1130 GOTO 1070 1330 E2=S0*2 1335 E1=0 1340 X3=(E1+E2)/2 1350 X=S0*S0/X3/X3 1360 GOSUB 5500 1370 P=1-P 1372 IF ABS(E1-E2)<.0001THEN 1450 1380 IF ABS(P-P9)<.00001THEN 1450 1390 IF P>P9 THEN 1420 1400 E1=X3 1410 GOTO 1340 1420 E2=X3 1430 GOTO 1340 1450 X3=S0^4/X3/X3 1535 PRINT 1604A$=" ##.## PERCENTILE = ########.##" 1605 PRINT USING A$ ,O1,X3 1610 GOTO 1070 1619 PRINT L$ 1620 PRINT " OPTION 4: PROBABILITY X IS BETWEEN TWO VALUES" 1625 PRINT 1630 PRINT "TO EXIT ROUTINE TYPE '0' WHEN YOU ARE ASKED TO INPUT VALUES." 1640 GOSUB 500 1650 PRINT "INPUT SMALLER VALUE"; 1660 GOSUB 9000 1670 X3=O1 1680 IF X3=0 THEN 1720 1690 IF X3>0 THEN 1720 1695 PRINT 1700 PRINT "REENTER. VALUES MUST BE GREATER THAN 0." 1705 PRINT 1710 GOTO 1650 1720 PRINT "INPUT LARGER VALUE"; 1730 GOSUB 9000 1740 IF O1 <> 0 THEN 1750 1743 IF X3=0 THEN 420 1750 IF X3=0 THEN 1700 1760 X4=O1 1770 IF X3 >= X4 THEN 1960 1780 X=X3/S0/S0 1790 GOSUB 5500 1800 P3=P 1810 X=X4/S0/S0 1820 GOSUB 5500 1830 P4=P 1840A$=" PROB(########.## < X <########.##)= #.##" 1841 PRINT USING A$ ,X3,X4,P4-P3 1860 GOTO 1650 1870 CLOSE 1: CHAIN "RSTRT" 1960 PRINT 1965 PRINT "REENTER. INPUT SMALLER VALUE FIRST." 1970 PRINT 1980 GOTO 1650 5500 REM ******************************************************** 5501 REM CHI-SQUARE CDF ROUTINE-LOWER TAIL 5502 REM INPUT G X 5503 REM OUTPUT P 5504 REM PRIOR GOSUB 5775 5505 REM 5506 REM 5510 IF G>30 THEN 5795 5515 T0=.5*G-1 5520 X=X*.5 5525 T=81.4983 5530 P=5.575E-35*(T+X)^T0 5535 T=69.9622 5540 P=P+4.0883E-30*(T+X)^T0 5545 T=61.0585 5550 P=P+2.45182E-26*(T+X)^T0 5555 T=53.6086 5560 P=P+3.60577E-23*(T+X)^T0 5565 T=47.1531 5570 P=P+2.01052E-20*(T+X)^T0 5575 T=41.4517 5580 P=P+5.35019E-18*(T+X)^T0 5585 T=36.3584 5590 P=P+7.8198E-16*(T+X)^T0 5595 T=31.776 5600 P=P+6.89418E-14*(T+X)^T0 5605 T=27.6359 5610 P=P+3.91774E-12*(T+X)^T0 5615 T=23.8873 5620 P=P+1.50701E-10*(T+X)^T0 5625 T=20.4915 5630 P=P+4.07286E-09*(T+X)^T0 5635 T=17.418 5640 P=P+7.96081E-08*(T+X)^T0 5645 T=14.6427 5650 P=P+1.15132E-06*(T+X)^T0 5655 T=12.1461 5660 P=P+1.25447E-05*(T+X)^T0 5665 T=9.9121 5670 P=P+1.04461E-04*(T+X)^T0 5675 T=7.92754 5680 P=P+6.72163E-04*(T+X)^T0 5685 T=6.18154 5690 P=P+3.36935E-03*(T+X)^T0 5695 T=4.66508 5700 P=P+.013226*(T+X)^T0 5705 T=3.37077 5710 P=P+4.07325E-02*(T+X)^T0 5715 T=2.29256 5720 P=P+9.81663E-02*(T+X)^T0 5725 T=1.4256 5730 P=P+.183323*(T+X)^T0 5735 T=.766097 5740 P=P+.258807*(T+X)^T0 5745 T=.311239 5750 P=P+.258774*(T+X)^T0 5755 T=5.90199E-02 5760 P=P+.142812*(T+X)^T0 5761 IF X<80 THEN 5765 5762 P=1 5763 RETURN 5765 P=1-(T1*P*EXP(-X)) 5770 RETURN 5775 G9=.5*G 5778 IF G>30 THEN 5790 5780 GOSUB 5850 5785 T1=1/EXP(G0) 5790 RETURN 5795 X2=((X/G)^(1/3)-(1-2/9/G))/SQR(2/9/G) 5800 Y3=X2 5805 GOSUB 8000 5810 RETURN 5812 REM 5813 REM END OF CHI-SQUARE CDF ROUTINE 5815 REM ********************************************************* 5850 REM **************************************************** 5852 REM LOG GAMMA ROUTINE 5853 REM INPUT G9 5854 REM OUTPUT G0 5860 G5=G9 5863 IF G9 <= 1.E+30 THEN 5872 5866 G0=1.E+38 5869 RETURN 5872 IF G9>1.E-09 THEN 5881 5875 G0=0 5878 RETURN 5881 IF G9<1.E+10 THEN 5890 5884 G0=G9*(LOG(G9)-1) 5887 RETURN 5890 G6=1 5893 IF 1830 THEN 6630 6625 GOSUB 5775 6630 J8=1 6635 GOSUB 6780 6640 X=J1 6645 GOSUB 5500 6650 J3=P 6655 X=J2 6660 GOSUB 5500 6665 J3=P-J3 6670 IF ABS(J3-J5)>.00001 THEN 6680 6675 RETURN 6680 IF J3>J5 THEN 6695 6685 J8=J8+1 6690 GOTO 6635 6695 J9=J8-1 6700 J0=J8 6705 J8=(J0+J9)/2 6710 GOSUB 6780 6715 X=J1 6720 GOSUB 5500 6725 J3=P 6730 X=J2 6735 GOSUB 5500 6740 J3=P-J3 6744IF ABS(J2-J1)<.0001THEN 6750 6745 IF ABS(J3-J5)>.000001THEN 6755 6750 RETURN 6755 IF J3>J5 THEN 6770 6760 J9=J8 6765 GOTO 6705 6770 J0=J8 6775 GOTO 6705 6780 J=J8*(EXP(2*J8/(G-2))+1)/(EXP(2*J8/(G-2))-1) 6785 J1=J-J8 6790 J2=J+J8 6795 RETURN 6800 REM 6805 REM END OF INVERSE CHI-SQUARE HDR ROUTINE 6810 REM************************************************************ 8000 REM ********************************************************** 8001 REM ROUTINE CALCULATES THE CDF FOR NORMAL DISTRIBUTION 8002 REM INPUT Y3 8003 REM OUTPUT P 8004 REM 8005 Y4=ABS(Y3) 8010 X1=X 8015 X=Y3 8020 T=1/(1+.231642*Y4) 8021 IF X*X/2<80 THEN 8025 8022 D=0 8023 GOTO 8030 8025 D=.398942*EXP(-X*X/2) 8030 C1=1.33027 8035 C2=1.82126 8040 C3=1.78148 8045 C4=.356564 8050 C5=.319382 8055 P=1-D*T*((((C1*T-C2)*T+C3)*T-C4)*T+C5) 8060 IF X >= 0 THEN 8070 8065 P=1-P 8070 X=X1 8075 RETURN 8076 REM 8077 REM END OF NORMAL CDF ROUTINE 8078 REM ********************************************************** 9000 REM--SUBROUTINE THAT DETERMINES IF RESTART HAS BEEN REQUESTED. 9005 INPUT O1 9015 IF O1=-9999 THEN 9025 9020 RETURN 9025 CLOSE 1: CHAIN "RSTRT" 9035 REM*************END ROUTINE 9999 END