10 REM REGRESSIONE LINEARE ONLINE CON RESIDUI - MOTORE FULL 20 REM DATA: PUNTI, X INIZIALE, PASSO X, AMPIEZZA DISTURBO 30 DATA 41,-2,0.1,0.05 40 LET NPOINTS=0:LET XSTART=0:LET XSTEP=0:LET NOISE=0 50 READ NPOINTS,XSTART,XSTEP,NOISE 60 IF NPOINTS<3 OR NPOINTS>500 THEN GOTO 460 70 IF NPOINTS<>INT(NPOINTS) OR XSTEP=0 THEN GOTO 460 80 IF NOISE<0 THEN GOTO 460 90 LET XVAL=0:LET YVAL=0:LET MEANX=0:LET MEANY=0 100 LET DELTAX=0:LET DELTAY=0:LET XXSUM=0:LET XYSUM=0 110 LET YYSUM=0:LET SLOPE=0:LET OFFSET=0:LET PREDICT=0 120 LET RESID=0:LET SSE=0:LET RZERO=0:LET RX=0:LET RSQUARED=0 130 LET SIGMA=0:LET SERROR=0:LET COUNT=0 140 REM AGGIORNAMENTO STABILE DI MEDIE, VARIANZA E COVARIANZA 150 FOR I=0 TO NPOINTS-1 160 GOSUB 430 170 COUNT=COUNT+1 180 DELTAX=XVAL-MEANX:DELTAY=YVAL-MEANY 190 MEANX=MEANX+DELTAX/COUNT:MEANY=MEANY+DELTAY/COUNT 200 XXSUM=XXSUM+DELTAX*(XVAL-MEANX) 210 XYSUM=XYSUM+DELTAX*(YVAL-MEANY) 220 YYSUM=YYSUM+DELTAY*(YVAL-MEANY) 230 NEXT I 240 IF XXSUM<=0 OR YYSUM<=0 THEN GOTO 460 250 SLOPE=XYSUM/XXSUM:OFFSET=MEANY-SLOPE*MEANX 260 REM SECONDA PASSATA: RESIDUI E CONDIZIONI DI ORTOGONALITA 270 FOR I=0 TO NPOINTS-1 280 GOSUB 430 290 PREDICT=SLOPE*XVAL+OFFSET:RESID=YVAL-PREDICT 300 SSE=SSE+RESID*RESID:RZERO=RZERO+RESID:RX=RX+RESID*(XVAL-MEANX) 310 PRINT "FIT;",I,";",XVAL,";",YVAL,";",PREDICT,";",RESID,CRLF 320 NEXT I 330 RSQUARED=1-SSE/YYSUM 340 SIGMA=SQR(SSE/(NPOINTS-2)):SERROR=SIGMA/SQR(XXSUM) 350 PRINT "MODEL;",SLOPE,";",OFFSET,";",RSQUARED,CRLF 360 PRINT "STATS;",SSE,";",SIGMA,";",SERROR,CRLF 370 PRINT "ORTHO;",RZERO,";",RX,CRLF 380 IF ABS(RZERO)>0.000001 OR ABS(RX)>0.000001 THEN GOTO 470 390 IF RSQUARED<0 OR RSQUARED>1.00000001 THEN GOTO 470 400 IF COUNT<>NPOINTS THEN GOTO 470 410 PRINT "REGRESSIONE TEST OK",CRLF 420 END 430 XVAL=XSTART+I*XSTEP 440 YVAL=2.5*XVAL-0.75+NOISE*SIN(1.7*I) 450 RETURN 460 PRINT "ERRORE PARAMETRI REGRESSIONE",CRLF:END 470 PRINT "ERRORE AUTOVERIFICA REGRESSIONE",CRLF:END