home *** CD-ROM | disk | FTP | other *** search
-
-
- PROGRAM USEWLREG;{$e+,i+}
-
- {THIS PROGRAM WAS WRITTEN TO USE AND TEST THE PROCEDURES PLOT AND WLREG}
- {THREE ARRAYS,X,Y AND WEIGHTS ARE FILLED FROM THE CONSOLE,A WEIGHTED }
- {LINEAR REGRESSION PERFORMED,AND THEN Y AND E(Y) ARE PLOTTED ON THE }
- {CONSOLE SCREEN AS FUNCTIONS OF X. }
-
- LABEL 30; {END OF PROGRAM,USED TO ABORT.}
-
- CONST LAST = 100;
-
- TYPE DATA = ARRAY[1..LAST] OF REAL;
-
- VAR
- I,N:INTEGER;
- TIME,AMPLITUDE,WEIGHTS,Y_CALC,VAR_Y:DATA;
- REG_COEFF,Y_INTCPT,COEFF_DET,CRL8N:REAL;
- VAR_TTL,VAR_INTCPT,VAR_RC,COVARIANCE,T:REAL;
- ZERO,TOOBIG,TOOSMALL,STOP:BOOLEAN;
- ANSWER:CHAR;
-
- {$IPLOT.PAS }
- {$IWLREG.PAS }
-
- PROCEDURE STATS_OUT;
- BEGIN
- WRITE(' REGRESSION COEFFICIENT ...............= ');
- WRITELN(REG_COEFF:9:4);
- WRITE(' VARIANCE OF REGRESSION COEFFICIENT ...= ');
- WRITELN(VAR_RC:9:4);
- WRITE(' Y INTERCEPT ..........................= ');
- WRITELN(Y_INTCPT:9:4);
- WRITE(' VARIANCE OF Y INTERCEPT ..............= ');
- WRITELN(VAR_INTCPT:9:4);
- WRITE(' COVARIANCE OF REGRESSION PARAMETERS ..= ');
- WRITELN(COVARIANCE:9:4);
- WRITE(' COEFFICIENT OF DETERMINATION .........= ');
- WRITELN(COEFF_DET:9:4);
- WRITE(' CORRELATION COEFFICIENT ..............= ');
- WRITELN(CRL8N:9:4);
- WRITELN(' t = ',T:7:4,' for ',n-2:3,'degrees of freedom');
- END;{STATS_OUT}
-
- BEGIN
- REPEAT
- WRITELN('YOU MAY ENTER UP TO 100 SETS OF DATA POINTS.');
- WRITELN('AMPLITUDE & EXPECTED AMPLITUDE WILL BE PLOTTED AGAINST TIME');
- WRITELN('HOW MANY DATA SETS DO YOU WISH TO ENTER?');
- WRITELN('ENTERING 0 WILL TERMINATE PROGRAM.');
- N:=0;
- REPEAT
- READ(I);
- ZERO:=I=0;
- TOOBIG:=I>100;
- TOOSMALL:=I<1;
- IF ZERO THEN GOTO 30;
- IF TOOBIG OR TOOSMALL THEN WRITELN('PLEASE TRY AGAIN.')
- ELSE N:=I
- UNTIL N <> 0;
- WRITE('PLEASE ENTER FIRST DATA SET:');
- WRITELN('AMPLITUDE FIRST,TIME NEXT,THEN WEIGHT.');
- I:=0;
- REPEAT
- I:=I+1;
- READLN(AMPLITUDE[I],TIME[I],WEIGHTS[I]);
- IF I<N THEN WRITELN('NEXT DATA SET:')
- ELSE WRITELN('THANK YOU.')
- UNTIL I=N;
-
- {USE WLREG TO PERFORM A WEIGHTED LINEAR REGRESSION }
-
- WLREG(N,TIME,AMPLITUDE,WEIGHTS);
-
- {NEXT CALCULATE THE EXPECTED VALUES OF Y AT X FROM REGRESSION RESULTS}
-
- FOR I:=1 TO N DO
- Y_CALC[I]:=Y_INTCPT+REG_COEFF*TIME[I];
-
- {AND PLOT AMPLITUDE AND EXPECTED Y AS FUNCTIONS OF TIME. }
-
- PLOT(N,TIME,AMPLITUDE,Y_CALC);
-
- WRITELN('DO YOU WANT THE REGRESSION DATA?(Y/N)');
- READLN(ANSWER);
- IF ANSWER='Y' THEN STATS_OUT ;
- WRITELN('DO YOU WANT TO TRY AGAIN?(Y/N)');
- READLN(ANSWER);
- UNTIL ANSWER<>'Y';
- 30:
- END.
-