5 REM ADDFIT--Fits Additive Model to Two Factors 10 CLS: LOCATE 5,20: PRINT " -- Fits Additive Model --" 20 LOCATE 9,20: INPUT " Number of rows";R 30 LOCATE 10,20:INPUT " Number of columns";C 40 DIM X(R,C),S(R),T(C),S1(R),T1(C),S2(R),T2(C),X2(R,C) 50 LOCATE 12,20:PRINT " enter data, by rows" 60 FOR I = 1 TO R 70 PRINT:PRINT "Row"; I 80 FOR J = 1 TO C 90 PRINT "X(";I;",";J;")="; 100 INPUT X(I,J) 110 NEXT J 120 NEXT I 130 FOR I = 1 TO R:FOR J = 1 TO C 140 X2(I,J)=X(I,J) 150 NEXT:NEXT 160 FOR I = 1 TO R: S1(I)=0:NEXT I 170 FOR J = 1 TO C: T1(J)=0:NEXT J 180 GT = 0 190 FOR I = 1 TO R:S1(I)=0 200 FOR J = 1 TO C 210 GT = GT + X2(I,J) 220 S1(I)= S1(I)+X2(I,J) 230 T1(J)=T1(J)+X2(I,J) 240 NEXT J: NEXT I 250 PRINT:PRINT "Estimates of S" :PRINT "(Marginal means)":PRINT 260 FOR I = 1 TO R:S(I)=S1(I)/C:PRINT I,S(I):NEXT 270 PRINT "Press any key to continue" 280 ANSWER$=INKEY$:IF ANSWER$="" THEN 280 290 PRINT:PRINT"Estimates of T":PRINT "(Marginal means)":PRINT 300 FOR J = 1 TO C:T(J)=T1(J)/R:PRINT J,INT(T(J)*1000)/1000: NEXT J 310 B=0-GT/(R*C) 320 PRINT:PRINT"Estimate of B (minus grand mean)=";B:PRINT:PRINT 330 PRINT "Press any key to continue" 340 ANSWER$=INKEY$:IF ANSWER$="" THEN 340 350 PRINT "Fit of Additive model":PRINT 360 SED = 0 370 PRINT" I J X(I,J) pred res":PRINT 380 FOR I = 1 TO R:FOR J = 1 TO C 390 PR=S(I)+T(J)+B 400 ED=X2(I,J)-PR 410 SED = SED +ED^2 420 PRINT I;J;" "; X2(I,J);" ";INT(1000*PR+.5)/1000;" ";INT(1000*ED+.5)/1000 430 NEXT:NEXT 440 PRINT:PRINT"Sum of squared errors":PRINT"ss=";SED 450 PRINT "Press any key to continue" 460 ANSWER$=INKEY$:IF ANSWER$="" THEN 460 470 PRINT:PRINT: PRINT "Print Results?" 480 INPUT "(type yes or no...)"; A$ 485 A$=LEFT$(A$,1) 490 IF A$="Y" OR A$="y" THEN GOSUB 540 500 PRINT: PRINT "More data? (Y/N)" 510 A$=INKEY$:IF A$="" THEN 510 520 IF A$="Y" OR A$="y" THEN RUN 530 END 540 PRINT "Please enter a filename and a title" 545 INPUT"Filename (e.g., ADDOUT.TXT)";F$ 547 OPEN F$ FOR OUTPUT AS #1 550 INPUT "TITLE";B$ 560 PRINT #1,"FIT OF ADDITIVE MODEL":PRINT #1,:PRINT #1, 570 PRINT #1,B$ 580 PRINT #1,:PRINT #1,"Row scale values":PRINT #1, 590 AD = 0! 600 FOR I = 1 TO R:PRINT #1, I,S(I):NEXT I 610 PRINT #1,:PRINT #1, "Column scale values":PRINT #1, 620 FOR J = 1 TO C:PRINT #1, J,T(J):NEXT J 630 PRINT #1,:PRINT #1, "Estimate of B (minus grand mean) =",B 640 PRINT #1,:PRINT #1, "Indices, Data, Predictions, Residuals" 650 FOR I=1 TO R: FOR J = 1 TO C 660 PR=S(I) + T(J) + B 670 ED=X2(I,J)-PR 680 AD=AD+ED*ED 690 PRINT #1, I;J,X2(I,J),INT(1000*PR)/1000,INT(1000*ED)/1000:NEXT:NEXT 700 PRINT #1,:PRINT #1, "Sum of squares = ",AD 705 CLOSE #1 710 RETURN