10X$=SYS(CHR$(7)):R$=LEFT(X$,7):L$=RIGHT(X$,8) 11 REM *************************************************************** 12 REM 13 REM INVERSE CHI-SQUARE DISTRIBUTION 14 REM 15 REM *************************************************************** 20 DIM #1,A1(111),A2(111),A3(111) 30 OPEN R$ AS FILE 1 70 G=A3(0):S0=A3(1) 80 S6=0 90 A1(0)=23 130 REM ************************************************************ 140 PRINT L$ 150 PRINT "THIS MODULE ALLOWS YOU TO EXAMINE THE CHARACTERISTICS OF" 160 PRINT "AN INVERSE CHI-SQUARE DISTRIBUTION." 170 GOTO 330 180 PRINT L$ 190 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 200 PRINT " 1. PERCENTILES" 210 PRINT " 2. HIGHEST DENSITY REGIONS" 220 PRINT " 3. PROBABILITY ABOVE AND BELOW SOME VALUE" 230 PRINT " 4. PROBABILITY BETWEEN TWO VALUES" 240 PRINT " 5. EXIT MODULE" 250 GOSUB 9000 260 IF O1=5 THEN 2220 270 I=O1 280 GOTO 940 290 REM 300 REM S6=1 IF THE PARAMETERS OF THE DISTRIBUTION ARE ALREADY IN 310 REM S6=0 IF THE PARAMETERS ARE TO BE ENTERED 320 REM 330 IF S6=1 THEN 180 340 S6=1 350 REM ***************************************************************** 360 REM 370 REM BEGINNING OF ROUTINE TO INPUT DISTRIBUTION PARAMETERS 380 REM 390 PRINT 400PRINT"INPUT DEGREES OF FREEDOM. MUST BE GREATER THAN 6."; 410 GOSUB 9000 420 G=O1 430 IF G<=6 THEN 520 440 PRINT 450 PRINT "INPUT THE SCALE PARAMETER."; 460 GOSUB 9000 470 IF O1 <= 0 THEN 500 480 S0=SQR(O1) 490 GOTO 180 500 PRINT "REENTER. SCALE PARAMETER MUST BE POSITIVE." 510 GOTO 450 520PRINT"REENTER. DEGREES OF FREEDOM MUST BE GREATER THAN 6." 530 GOTO 410 540 REM 550 REM END OF ROUTINE TO INPUT THE DISTRIBUTION PARAMETERS 560 REM 570 REM************************************************************** 580 REM 590 REM BEGINNINING OF ROUTINE THAT DETERMINES WHAT YOU WANT TO DO 600 REM AFTER YOU HAVE FINISHED A ROUTINE 610 REM 620 PRINT L$ 630 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 640 PRINT " 1. FURTHER EVALUATE THIS DISTRIBUTION." 650 PRINT " 2. EVALUATE ANOTHER INVERSE CHI-SQUARE DISTRIBUTION" 660 PRINT " 3. EXIT MODULE" 670 GOSUB 9000 680 IF O1=3 THEN 2220 690 IF O1=1 THEN 750 700 IF O1=2 THEN 730 710 PRINT "REENTER. INPUT MUST BE 1,2 OR 3." 720 GOTO 670 730 S6=0 740 GOTO 760 750 S6=1 760 PRINT L$ 780 GOTO 330 790 REM 800 REM END OF ROUTINE TO DETERMINE WHERE YOU ARE GOING 810 REM 820 REM**************************************************************** 830 PRINT L$ 840PRINT"******************************************************" 850 PRINT " INVERSE CHI-SQUARE DISTRIBUTION." 860A$="DEGREES OF FREEDOM = ########.## SCALE PARAMETER = ########.##" 861 PRINT USING A$,G,S0*S0 880PRINT"******************************************************" 890 RETURN 900 REM *************************************************************** 910 REM 920 REM ROUTINE TO SELECT OPTION 930 REM 940 GOSUB 5775 950 REM 960 IF I=3 THEN 1320 970 IF I=1 THEN 1550 980 IF I=4 THEN 1910 990 IF I=2 THEN 1070 1000 PRINT 1010 PRINT "REENTER. YOU DID NOT SPECIFY 1,2,3,4 OR 5." 1020 GOTO 250 1030 REM 1040 REM END OF ROUTINE TO SELECT OPTION 1050 REM 1060 REM ********************************************************** 1070 PRINT L$ 1080 REM 1090 PRINT " OPTION 2: HIGHEST DENSITY REGIONS" 1100 PRINT 1110 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 1120 PRINT "INPUT P% AS NUMBER FROM 1 THROUGH 99." 1130 GOSUB 840 1140 PRINT "INPUT P%"; 1150 GOSUB 9000 1160 IF O1=0 THEN 620 1170 J5=O1/100 1180 IF O1<1 THEN 1260 1190 IF O1>99 THEN 1260 1200 GOSUB 7300 1210 J1=J1*S0*S0 1220 J2=J2*S0*S0 1230A$=" ###.#% HDR =(########.##,########.##)" 1231 PRINT USING A$ ,J5*100,J1,J2 1250 GOTO 1140 1260 PRINT 1270 PRINT "REENTER. INPUT MUST BE 0 OR P% FROM 1 THRU 99." 1280 PRINT 1290 GOTO 1140 1300 REM 1310 REM *********************************************************** 1320 PRINT L$ 1330 PRINT " OPTION 3: PROBABILITY ABOVE AND BELOW SOME VALUE" 1340 PRINT 1350 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 1360 PRINT "INPUTTED VALUE MUST BE POSITIVE." 1370 GOSUB 840 1380 PRINT "INPUT VALUE"; 1390 GOSUB 9000 1400 IF O1=0 THEN 620 1410 X3=O1 1420 IF X3>0 THEN 1450 1430 PRINT "REENTER. VALUE MUST BE GREATER THAN 0." 1440 GOTO 1410 1450 X=S0*S0/X3 1460 GOSUB 5500 1470 X=O1 1490A$=" PROB( X >########.##)= #.##" 1491 PRINT USING A$ ,O1,P 1510A$=" PROB( X <########.##)= #.##" 1511 PRINT USING A$ ,O1,1-P 1520 GOTO 1380 1530 REM 1540 REM ******************************************************** 1550 PRINT L$ 1560 PRINT " OPTION 1: PERCENTILES" 1570 PRINT 1580 PRINT "TO EXIT ROUTINE TYPE '0' WHEN ASKED FOR INPUT." 1590 PRINT "INPUT PERCENTILE AS NUMBER FROM .5 THROUGH 99.5." 1600 GOSUB 840 1610 PRINT "INPUT PERCENTILE"; 1620 GOSUB 9000 1630 IF O1=0 THEN 620 1640 P9=O1/100 1650 IF O1<.5 THEN 1670 1660 IF O1 <= 99.5 THEN 1720 1670 PRINT 1680 PRINT "REENTER. INPUT MUST BE O OR PERCENTILE" 1690PRINT"FROM .5 THRU 99.5." 1700 PRINT 1710 GOTO 1610 1720 E2=2*S0 1730 E1=0 1740 X3=(E1+E2)/2 1750 X=S0*S0/X3/X3 1760 GOSUB 5500 1770 P=1-P 1780 IF ABS(P-P9)<.0001 THEN 1840 1790 IF P>P9 THEN 1820 1800 E1=X3 1810 GOTO 1740 1820 E2=X3 1830 GOTO 1740 1840 X3=X3^2 1850 PRINT 1870A$=" ##.## PERCENTILE = ########.##" 1871 PRINT USING A$ ,O1,X3 1880 GOTO 1610 1890 REM 1900 REM ****************************************************************** 1910 PRINT L$ 1920 PRINT " OPTION 4: PROBABILITY X IS BETWEEN TWO VALUES" 1930 PRINT 1940 PRINT "TO EXIT ROUTINE TYPE '0' WHEN YOU ARE ASKED TO INPUT VALUES." 1950 GOSUB 840 1960 PRINT "INPUT SMALLER VALUE"; 1970 GOSUB 9000 1980 X3=O1 1990 IF X3=0 THEN 2050 2000 IF X3>0 THEN 2050 2010 PRINT 2020 PRINT "THE POINTS MUST BE GREATER THAN 0. PLEASE RESPECIFY." 2030 PRINT 2040 GOTO 1960 2050 PRINT "INPUT LARGER VALUE"; 2060 GOSUB 9000 2070 IF O1 <> 0 THEN 2080 2072 IF X3=0 THEN 620 2080 IF X3=0 THEN 2020 2090 X4=O1 2100 IF X3 >= X4 THEN 2240 2110 X=S0*S0/X3 2120 GOSUB 5500 2130 P4=P 2140 X=S0*S0/X4 2150 GOSUB 5500 2160 P3=P 2170A$=" PROB(########.##< X <########.##)= #.##" 2171 PRINT USING A$ ,X3,X4,P4-P3 2190 GOTO 1960 2200 REM 2210 REM *************************************************************** 2220 CLOSE 1: CHAIN "RSTRT" 2230 REM ************************************************************* 2240 PRINT 2250 PRINT "REENTER. INPUT SMALLER VALUE FIRST." 2260 PRINT 2270 GOTO 1960 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 7325 7315 GOSUB 5775 7325 J8=1 7335 GOSUB 7625 7345 X=1/J2 7355 GOSUB 5500 7365 J3=P 7375 X=1/J1 7385 GOSUB 5500 7395 J3=P-J3 7405 IF ABS(J3-J5)>.00001 THEN 7425 7415 RETURN 7425 IF J3>J5 THEN 7455 7435 J8=J8+1 7445 GOTO 7335 7455 J9=J8-1 7465 J0=J8 7475 J8=(J0+J9)/2 7485 GOSUB 7625 7495 X=1/J2 7505 GOSUB 5500 7515 J3=P 7525 X=1/J1 7535 GOSUB 5500 7545 J3=P-J3 7555 IF ABS(J3-J5)>.00001 THEN 7575 7565 RETURN 7575 IF J3>J5 THEN 7605 7585 J9=J8 7595 GOTO 7475 7605 J0=J8 7615 GOTO 7475 7625 J=J8*(EXP(2*J8/(G+2))+1)/(EXP(2*J8/(G+2))-1) 7635 J1=1/(J+J8) 7645 J2=1/(J-J8) 7655 RETURN 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