10 X$=SYS(CHR$(7)):R$=LEFT(X$,7):L$=RIGHT(X$,8) 20 REM ************************************************************** 30 REM CMODL CMODL CMODL CMODL CMODL CMODL CMODL 40 REM ************************************************************** 50 REM 60 REM NORMAL FIT OF LEAST SQUARE UTILITY 70 REM 80 REM THIS MODULES ATTEMPTS TO FIT A NORMAL OGIVE FUNCTION 90 REM TO THE UTILITIES PASSED FROM CMODK (ASSESSMENT OF UTILITY). 100 REM IF ONLY A VERY POOR FIT IS POSSIBLE THEN THE MODULES PRINTS 110 REM THAT IT IS NOT POSSIBLE TO FIT A NORMAL OGIVE. 120 REM 130 REM IF A NORMAL OGIVE DOES MAKE A REASONABLE FIT THE THE LEAST 140 REM SQUARES, NORMAL OGIVE AND CORRECTED NORMAL FITS ARE PRINTED 150 REM 160 REM ***************************************************************** 170 DIM X(84),Y(84),Z(84),P(9),U(9),Q(9) 180 DIM #1,A1(111),A2(111),A3(111) 190 OPEN R$ AS FILE 1 200 DIM M(9) 240A1(0)=20 242 A1(1)=1 243 A1(2)=8 250FOR I=1 TO 84:Y(I)=A2(I-1):NEXT I 252FOR I=1 TO 9:P(I)=A2(I+83):NEXT I 254FOR I=1 TO 9:U(I)=A2(I+92):NEXT I 260 E8=.005 270 N0=7 280 N1=N0+1 290 N2=N0+2 300 N3=N0-1 310 GOTO 1010 320 REM--***** normal approximation--***** 330 F9=0 340 REM initial guesses 350 U0=0 360 FOR I=2 TO 9 370 U0=U0+(U(I)-U(I-1))*((P(I)+P(I-1))/2) 380 NEXT I 390 U1=0 400 FOR I=2 TO 9 410 U1=U1+(U(I)-U(I-1))*((P(I)+P(I-1))/2)^2 420 NEXT I 430 U1=SQR(U1-U0*U0) 440 U8=U1 450 U9=U0 460 REM--u0 is mu u1 is sigma 470 FOR I=1 TO 9 480 X=((P(I)-U0)/U1) 490 Y3=X 500 GOSUB 8000 510 W(I)=P 520 NEXT I 530 F9=F9+1 540 FOR I=1 TO 9 550 Q0=(P(I)-U0)/U1 560 Q(I)=.398942*EXP(-.5*Q0*Q0) 570 NEXT I 580 S0=0 590 G3=0 600 G2=0 610 FOR J=2 TO N1 620 J0=J-1 630 J1=J+1 640 FOR I=1 TO J0 650 FOR K=J1 TO N2 660 S0=S0+1 670 X(S0)=-1 680 Z(S0)=-1 690 IF Y(S0)<0 THEN 780 700 X(S0)=(Q(J)-Q(K))/(W(K)-W(J))-(Q(I)-Q(J))/(W(J)-W(I)) 710 X(S0)=X(S0)/U1 720 Z(S0)=((P(J)-U0)*Q(J)-(P(K)-U0)*Q(K))/(W(K)-W(J)) 730 Z(S0)=Z(S0)-((P(I)-U0)*Q(I)-(P(J)-U0)*Q(J))/(W(J)-W(I)) 740 G0=(LOG(Y(S0)/(1-Y(S0)))-LOG((W(J)-W(I))/(W(K)-W(J)))) 750 Z(S0)=Z(S0)/U1/U1 760 G2=G2+G0*X(S0) 770 G3=G3+G0*Z(S0) 780 NEXT K 790 NEXT I 800 NEXT J 810 REM--g2 is gmu g3 is gsigma 820 A1=0 830 A2=0 840 A4=0 850 FOR I=1 TO 84 860 IF Y(I)<0 THEN 900 870 A1=A1+X(I)*X(I) 880 A2=A2+X(I)*Z(I) 890 A4=A4+Z(I)*Z(I) 900 NEXT I 910 A3=A2 920 X2=(G2/A1-G3/A3)/(A2/A1-A4/A3) 930 X1=G2/A1-A2/A1*X2 940 U0=U0-X1 950 U1=U1-X2 960 IF U0>50 THEN 1350 970 IF U1>50 THEN 1350 980 IF ABS(X1)>E8 THEN 470 990 IF ABS(X2)>E8 THEN 470 1000 GOTO 1070 1010 PRINT L$ 1020 PRINT 1030 PRINT " UTILITIES" 1040 PRINT "-------------------------------------------------------------" 1050 PRINT " OUTCOME LEAST SQUARES CORRECTED NORMAL NORMAL" 1060 GOTO 320 1070 REM 1080 Y3=(P(1)-U0)/U1 1090 GOSUB 8000 1100 U7=P 1110 Y3=(P(9)-U0)/U1 1120 GOSUB 8000 1130 U6=P 1140 FOR I=1 TO N2 1150 Y3=(P(I)-U0)/U1 1160 GOSUB 8000 1170 A$="####.## #.## #.## #.##" 1171 PRINT USING A$ ,P(I),U(I),(P-U7)/(U6-U7),P 1180 NEXT I 1190 PRINT "--------------------------------------------------------------" 1200PRINT"THIS COMPLETES THE FITTING OF A NORMAL DISTRIBUTION." 1210 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 1220 PRINT " 1. FIND THE EXPECTED UTILITY USING LEAST SQUARES FIT" 1230 PRINT " 2. FIND THE EXPECTED UTILITY USING NORMAL FIT (ASSUMES" 1240 PRINT " THE DISTRIBUTION IS ALSO NORMAL)" 1250 PRINT " 3. EXIT MODULE" 1260 GOSUB 9000 1270 IF O1=3 THEN 1300 1280 IF O1=1 THEN 1310 1290 IF O1=2 THEN 1330 1300 CLOSE 1: CHAIN "RSTRT" 1310 FOR I=1 TO 9:A2(I-1)=P(I):NEXT I 1315 FOR I=1 TO 9:A2(I+8)=U(I):NEXT I 1320 CLOSE 1: CHAIN "CMODP" 1330 A3(0)=U0:A3(1)=U1 1335 FOR I=1 TO 9:A2(I-1)=P(I):NEXT I 1337 FOR I=1 TO 9:A2(I+8)=U(I):NEXT I 1340 CLOSE 1: CHAIN "CMODS" 1350 PRINT "***********************************************************" 1360 PRINT "YOUR LEAST SQUARES UTILITIES CAN NOT BE FITTED BY THIS " 1370 PRINT "NORMAL ROUTINE." 1380 PRINT "***********************************************************" 1390 PRINT 1400 PRINT "TYPE THE NUMBER OF THE OPTION YOU WANT." 1410 PRINT " 1. FIND EXPECTED UTILITY USING THE LSQ UTILITIES" 1420 PRINT " 2. EXIT MODULE" 1430 GOSUB 9000 1440 IF O1=2 THEN 1300 1450 IF O1=1 THEN 1310 1460 PRINT "REENTER. INPUT MUST BE 1 OR 2." 1470 GOTO 1430 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