1 REM **** HP BASIC PROGRAM LIBRARY *******************************
2 REM
3 REM REGRES: STEP-WISE REGRESSION
4 REM
5 REM 36738 REV A 10/73
6 REM
7 REM **** CONTRIBUTED PROGRAM ************************************
10 REM REGRES--REALIZA ANALISIS DE REGRESIONES A PASOS
20 DIM Z(10,10),A(10),L(10),B(10),P(10),X(50,10)
30 PRINT "REGRESION A PASOS"
40 PRINT
50 PRINT "RESPONDA LAS PREGUNTAS CON N PARA NO, Y PARA SI, O E PARA EXPLICAR."
60 RESTORE
70 READ N,M
80 LET P4=N*M
90 IF P4>1000 THEN 2420
100 IF P4 <= 0 THEN 2420
110 IF N>100 THEN 2420
120 IF M>10 THEN 2420
130 FOR J=1 TO N
140 FOR K=1 TO M
150 READ X(J,K)
160 NEXT K
170 NEXT J
180 FOR J=1 TO M
190 LET L(J)=1
200 LET A(J)=0
210 LET B(J)=0
220 LET P(J)=0
230 NEXT J
240 FOR K=1 TO M
250 FOR J=1 TO N
260 LET A(K)=A(K)+X(J,K)
270 NEXT J
280 LET A(K)=A(K)/N
290 NEXT K
300 LET P1=0
310 LET P2=0
320 FOR J=1 TO M
330 FOR K=1 TO M
340 LET S1=0
350 LET S2=0
360 LET S3=0
370 FOR J1=1 TO N
380 LET P1=X(J1,J)-X(1,J)
390 LET P2=X(J1,K)-X(1,K)
400 LET S1=S1+P1*P2
410 LET S2=S2+P1
420 LET S3=S3+P2
430 NEXT J1
440 LET Z(J,K)=S1-S2*S3/N
450 IF J <> K THEN 470
460 IF Z(J,K) <= 0 THEN 2450
470 NEXT K
480 NEXT J
490 LET N4=0
500 PRINT
510 PRINT "INGRESE EL NUMERO DE COLUMNAS ( 1 -"; M; ") CORRESPONDIENTE A LA "
520 PRINT "VARIABLE DEPENDIENTE(Y).";
530 INPUT N1
540 IF N1>M THEN 580
550 IF N1<1 THEN 580
560 IF INT(N1)<N1 THEN 580
570 GOTO 600
580 PRINT "SU DATO NO CONTIENE LA VARIABLE ";N1;". TIPEE NUEVAMENTE POR FAVOR."
590 GOTO 530
600 PRINT
610 PRINT "DESEA OMITIR UNA VARIABLE(XK) DEL";
620 PRINT " ANALISIS";
630 INPUT D$
640 IF D$="N" OR D$="n" THEN 1020
650 IF D$="Y" OR D$="y" THEN 710
660 PRINT
670 PRINT "SI NO DESEA INGRESAR CIERTAS VARIABLES"
680 PRINT "EN LA REGRESION, PUEDE DETENERLAS DE INGRESARLAS"
690 PRINT "EN EL PRESENTE ANALISIS."
700 GOTO 600
710 PRINT "CUANDO SE PIDA, INGRESE LA COLUMNA CORRESPONDIENTE A"
720 PRINT "LA VARIABLE A OMITIR. TIPEE 0 PARA TERMINAR LA SOLICITUD."
730 PRINT
740 LET P1=0
750 PRINT "VARIABLE, POR FAVOR";
760 INPUT D1
770 IF D1=0 THEN 910
780 IF D1=N1 THEN 890
790 IF D1>M THEN 870
800 IF D1<0 THEN 870
810 IF INT(D1)<D1 THEN 870
820 IF L(D1)<0 THEN 750
830 LET P1=P1+1
840 LET N4=N4+1
850 LET L(D1)=-1
860 GOTO 750
870 PRINT "IMPOSIBLE--LA VARIABLE NO EXISTE. INTENTE DE NUEVO."
880 GOTO 750
890 PRINT "OH! ESTA INTENTANDO OMITIR Y. INTENTE DE NUEVO."
900 GOTO 750
910 IF P1=0 THEN 970
920 IF P1 >= M-1 THEN 940
930 GOTO 1020
940 FOR J=1 TO M
950 LET L(J)=1
960 NEXT J
970 PRINT
980 PRINT "HA PREGUNTADO OMITIR TODAS O NINGUNA DE ";
990 PRINT "LAS VARIABLES. REPITO-"
1000 LET N4=0
1010 GOTO 610
1020 LET M1=M-N4
1030 LET Z1=Z(N1,N1)
1040 PRINT
1050 PRINT
1060 LET V1=1
1070 LET Q2=0
1080 LET R3=0
1090 LET N3=M1-1
1100 FOR S1=1 TO N3
1110 PRINT
1120 PRINT
1130 PRINT "STEP "S1
1140 LET Q1=0
1150 FOR J=1 TO M
1160 IF J=N1 THEN 1220
1170 IF L(J) <= 0 THEN 1220
1180 LET R5=Z(J,N1)^2/Z(J,J)
1190 IF Q1 >= R5 THEN 1220
1200 LET Q1=R5
1210 LET N5=J
1220 NEXT J
1230 PRINT
1240 PRINT "LA VARIABLE SELECCIONADA ES ... X"N5
1250 LET L(N5)=0
1260 PRINT "SUMA DE RAICES REDUCIDAS EN ESTE PASO....";Q1
1270 LET R5=Q1/Z1
1280 PRINT "PROPORCION DE VARIACION DE Y REDUCIDA....";R5
1290 LET Q2=Q2+Q1
1300 LET R3=R3+R5
1310 LET J=N-S1-1
1320 LET R4=(Z1-Q2)/J
1330 LET T1=Q1/R4
1340 IF T1 <= 10000 THEN 1360
1350 LET T1=10000
1360 PRINT "PARCIAL F (D.F. =)";J;"...............";T1
1370 IF S1=1 THEN 1510
1380 LET V1=S1-1
1390 PRINT
1400 PRINT "DESEA INGRESAR ESTA VARIABLE NE LA REGRESION";
1410 INPUT D$
1420 IF D$="N" OR D$="n" THEN 2200
1430 IF D$="Y" OR D$="y" THEN 1510
1440 PRINT
1450 PRINT "EN UN PASO DADO; LA VARIABLE QUE REDUCE LA MAYOR"
1460 PRINT "CANTIDAD DE SIMA DE RAICES ES ELEGIDA. SI LA REDUCCION "
1470 PRINT "INDICADA POR ENVIMA DE LA LINEA 3 ES SIGNIFICANTE, INGRESE ESTA"
1480 PRINT "VARIABLE EN LA REGRESION; CASO CONTRARIO, LA SELECCION DE "
1490 PRINT "VARIABLES FINALIZARA."
1500 GOTO 1390
1510 LET M1=S1
1520 LET V1=S1
1530 LET P(S1)=N5
1540 PRINT
1550 PRINT "SUMA ACUMULATIVA DE SUMA DE RAICES REDUCIDA......";Q2
1560 PRINT "PROPORCION ACUMULATIVA REDUCIDA..........";R3;"(OF"Z1")"
1570 LET R5=SQR(R3)
1580 PRINT
1590 PRINT "COHEFICIENTE DE CORRELACION MULTIPLE.......";R5
1600 LET R5=S1
1610 LET R5=(Q2/R5)/R4
1620 IF R5 <= 10000 THEN 1640
1630 LET R5=10000
1640 PRINT "F PARA ANALISIS DE VAR. (D.F. ="S1;",";J;")";R5
1650 LET S5=SQR(R4)
1660 PRINT "ESTIMADO DE ERROR ESTANDAR ESTIMADO.............";S5
1670 LET R4=Z(N5,N5)
1680 FOR J=1 TO M
1690 IF L(J)>0 THEN 1730
1700 IF L(J)<0 THEN 1760
1710 IF J=N5 THEN 1750
1720 LET Z(J,J)=Z(J,J)+Z(N5,J)*Z(N5,J)/R4
1730 LET Z(N5,J)=Z(N5,J)/R4
1740 GOTO 1760
1750 LET Z(N5,N5)=1/R4
1760 NEXT J
1770 LET B(S1)=Z(N5,N1)
1780 IF S1=1 THEN 1900
1790 LET J2=S1-1
1800 FOR J=1 TO J2
1810 LET J3=S1-J
1820 LET J4=P(J3)
1830 LET B(J3)=Z(J4,N1)
1840 FOR K=1 TO J
1850 LET K1=S1-K+1
1860 LET K2=P(K1)
1870 LET B(J3)=B(J3)-Z(J4,K2)*B(K1)
1880 NEXT K
1890 NEXT J
1900 PRINT
1910 PRINT "VARIABLE","COHEF. REG.","COHEF-ERR. STD.",TAB(50);"COMPUTADO T"
1920 LET B1=A(N1)
1930 FOR J=1 TO S1
1940 LET K3=P(J)
1950 LET Q1=S5*SQR(Z(K3,K3))
1960 LET T1=B(J)/Q1
1970 LET B1=B1-B(J)*A(K3)
1980 PRINT K3,B(J),Q1,TAB(50);T1
1990 NEXT J
2000 PRINT
2010 PRINT "INTERCEPT(A) "B1
2020 FOR J=1 TO M
2030 IF L(J) <= 0 THEN 2100
2040 FOR K=1 TO M
2050 IF L(K)<0 THEN 2080
2060 IF K=N5 THEN 2080
2070 LET Z(J,K)=Z(J,K)-Z(J,N5)*Z(N5,K)
2080 NEXT K
2090 LET Z(J,N5)=Z(J,N5)/(-R4)
2100 NEXT J
2110 NEXT S1
2120 GOTO 2200
2130 PRINT
2140 PRINT "DESEA COMPUTAR MAS REGRESIONES";
2150 INPUT D$
2160 IF D$="N" OR D$="n" THEN 2490
2170 IF D$="Y" OR D$="y" THEN 60
2180 GOTO 2130
2190 GOTO 60
2200 PRINT
2210 PRINT "DESEA IMPRIMIR LA TABLA DE RESIDUALES";
2220 INPUT D$
2230 IF D$="N" OR D$="n" THEN 2130
2240 IF D$="Y" OR D$="y" THEN 2290
2250 PRINT
2260 PRINT "SI DESEA IMPRIMIR Y OBSERVADA, Y ESTIMADA, RESIDUAL, Y"
2270 PRINT "VALOR ESTANDARIZADO DE RESIDUAL PARA CADA CASO, PRESIONE Y PARA YES."
2280 GOTO 2200
2290 PRINT
2300 PRINT "OBS. NO.","Y OBSERVADA","Y ESTIMADA","RESIDUAL","RESID. STD."
2310 FOR J=1 TO N
2320 LET E1=B1
2330 FOR K=1 TO V1
2340 LET K1=P(K)
2350 LET E1=E1+B(K)*X(J,K1)
2360 NEXT K
2370 LET R6=X(J,N1)-E1
2380 LET S6=R6/S5
2390 PRINT J,X(J,N1),E1,R6,S6
2400 NEXT J
2410 GOTO 2130
2420 PRINT
2430 PRINT "SUS VALORES DE M y/O N SON INACEPTABLES. REVISELAS."
2440 STOP
2450 PRINT "UN VALOR DE CERO PARA UN ELEMENTO DE LA DIAGONAL DE LA"
2460 PRINT "MATRIZ DE PRODUCTO CRUZADO HA SIDO COMPUTADA. REVISE DATOS."
2470 PRINT "ESTO ES CAUSADO "'2"POR UNA VARIABLE CON UN VALOR CONSTANTE"
2480 PRINT "PARA TODAS OBSERVACIONES."
2490 STOP
5000 DATA 15,4
5001 DATA 32,48,54,15
5002 DATA 36,33,19,16
5003 DATA 3,28,30,14
5004 DATA 12,33,64,22
5005 DATA 36,34,60,24
5006 DATA 24,36,53,19
5007 DATA 19,42,29,13
5008 DATA 20,33,55,15
5009 DATA 27,36,62,23
5010 DATA 15,22,33,12
5011 DATA 45,46,68,25
5012 DATA 9,28,42,17
5013 DATA 11,32,45,18
5014 DATA 33,34,39,19
5015 DATA 21,45,39,18
9999 END