9000 REM *****EXSMOO*****BUSINESS PROGRAM 9002 REM EXSMOO**********VERSION #1 (7/31/69)*****EXPONENTIAL SMOOTHING 9004 REM THIS PROGRAM USES EXPONENTIAL SMOOTHING TO FORCAST DATA WHICH IS 9006 REM THOUGHT TO HAVE A TREND AND/OR SEASONAL EFFECT. 9008 REM 9010 PRINT "* EXPONENTIAL SMOOTHING *" 9011 PRINT 9012 PRINT "DO YOU NEED A PROBLEM DESCRIPTION? ('Y' OR 'N') "; 9014 INPUT Z$ 9016 IF Z$="N" THEN 9050 9018 PRINT " THE ACTUAL AMOUNT UNDER CONSIDERATION DURING THE MONTH T IS REFERRED" 9020 PRINT " TO AS S(T). THE EXPECTED, FORCASTED AMOUNT IS REFERRED TO AS ST(T)." 9022 PRINT " MATHEMATICALLY: S(T) = C(1) + C(2)*T + C(3)*FNC(T) + ERROR TERM," 9024 PRINT " WHERE T IS , AGAIN, THE GAIVEN MONTH, C(1) IS A CONSTANT COMPUTED" 9026 PRINT " FROM PREVIOUS MONTHLY AVERAGES, C(2) IS COMPUTED FROM TREND EFFECTS," 9028 PRINT " AND C(3) FROM SEASONAL EFFECTS. THERE IS AN ALLOWABLE ERROR ALSO." 9030 PRINT " HERE, WE ARE INTEREST IN ST(T) WHERE ST(T) = THE FORCASTED VALUE" 9032 PRINT " ST(T) = ST(T-1) + ALPHA*( S(T) - ST(T-1) ), WHERE ALPHA IS A" 9034 PRINT " 'SMOOTHING CONSTANT' RANGING BETWEEN 0.1 AND 0.2 ." 9036 PRINT 9038 PRINT " YOU WILL BE ASKED TO INPUT THE FOLLOWING DATA: N1, THE NUMBER OF" 9040 PRINT " MONTHS, (OR PERIODS), FOR WHICH DATA WILL BE ENTERED; N2, THE NUMBER" 9042 PRINT " OF PERIODS TO BE USED FOR THE INITIALIZATION OF THE FORCASTTNG METHODS," 9044 PRINT " AND N3, THE NUMBER OF MONTHS OR PERIODS IN THE PERIODICITY OF THE" 9046 PRINT " SEASONAL EFFECT. THE SMOOTHING CONSTANT ALPHA IS REQUIRED FOR" 9048 PRINT " THE DIFFERENT EFFECTS AS WELL." 9050 PRINT 9052 PRINT "FOR HOW MANY PERIODS WILL YOU ENTER DATA"; 9054 INPUT N1 9056 PRINT 9058 PRINT "HOW MANY OF THESE PERIODS ARE TO BE USED TO INITIALIZE THE FORCASTING" 9060 PRINT "METHODS"; 9062 INPUT N2 9064 PRINT 9066 PRINT "WHAT IS THE PERIODICITY OF THE SEASONAL EFFECT; E.G. 12 FOR YEARLY." 9068 PRINT "NOTE: THIS VALUE MUST BE LESS THAN YOUR ANSWER TO THE PREVIOUS QUESTION." 9070 INPUT N3 9072 PRINT 9074 PRINT " WHAT IS YOUR ALPHA FOR SMOOTHING FORCASTS"; 9076 INPUT A1 9078 PRINT 9080 PRINT "WHAT IS THE ALPHA FOR SMOOTHING THE SEASONAL EFFECT"; 9082 INPUT A2 9084 PRINT 9086 PRINT "WHAT IS THE ALPHA FOR THE TREND EFFECT"; 9088 INPUT A3 9090 PRINT 9092 PRINT "DO YOU WISH TO ENTER YOUR DATA FROM THE TELETYPE, OR INTERNALLY WITH" 9094 PRINT "DATA-STATEMENTS? ('T' FOR TELETYPE, OTHERWISE 'D')"; 9096 INPUT A$ 9098 IF A$="T" THEN 9114 9100 PRINT 9102 PRINT "HAS THE DATA ALREADY BEEN ENTERED? ('Y' OR 'N')"; 9104 INPUT A$ 9106 PRINT 9108 IF A$="Y" THEN 9150 9110 PRINT "THEN DO SO NOW STARTING IN LINE 9900, AND RESTART PROGRAM." 9112 STOP 9114 A=0 9116 DIM S(86),E(86),F(86),G(86),T(86),R(86),C(86) 9118 PRINT 9120 FOR I=1 TO N1 9122 IF A>0 THEN 9132 9124 A=1 9126 PRINT "WHAT IS THE VALUE FOR THE FIRST PERIOD"; 9128 INPUT S(I) 9130 GOTO 9146 9132 IF A>1 THEN 9142 9134 A=2 9136 PRINT "SECOND PERIOD"; 9138 INPUT S(I) 9140 GOTO 9146 9142 PRINT "NEXT"; 9144 INPUT S(I) 9146 NEXT I 9148 GOTO 9156 9150 FOR I=1 TO N1 9152 READ S(I) 9154 NEXT I 9156 PRINT 9158 I$=I$+"*" FOR I0%=1% TO 70%:PRINT I$ 9160 PRINT 9162 PRINT "PERIOD","SALES","EXPONENTIAL","EXPONENTIAL","EXPONENTIAL" 9164 PRINT " "," ","SMOOTHING","SMOOTHING","SMOOTHING" 9166 PRINT " "," ","WITH TREND","WITH","WITH" 9168 PRINT " "," ","AND SEASONALS","TREND","SEASONALS" 9170 PRINT 9172 FOR K=1 TO N2/N3 9174 S1=0 9176 FOR I=1 TO N3 9178 S1=S1+S(I) 9180 NEXT I 9182 A(K)=S1/N3 9184 NEXT K 9186 T1=(A(N2/N3)-A(1))/(N2-N3) 9188 B1=0 9190 B2=1 9192 FOR I=1 TO N2 9194 B1=B1+1 9196 R(I)=S(I)/(A(B2)-(((N3+1)/2)-B1)*T1) 9198 IF B1>= N3 THEN 9202 9200 GOTO 9206 9202 B1=0 9204 B2=B2+1 9206 NEXT I 9208 FOR I=1 TO N3 9210 S1=0 9212 FOR K=0 TO N2/N3-1 9214 S1=S1+R(I+K*N3) 9216 NEXT K 9218 R(I)=S1/(N2/N3) 9220 NEXT I 9222 S1=0 9224 FOR I=1 TO N3 9226 S1=S1+R(I) 9228 NEXT I 9230 FOR I=1 TO N3 9232 R(I)=R(I)*(N3/S1) 9234 NEXT I 9236 S(N1+2)=A(1) 9238 C(N1+2)=A(1) 9240 T(N1+2)=T1 9242 FOR I=1 TO N1 9244 IF I>N3 THEN 9250 9246 N4=0 9248 GOTO 9252 9250 N4=N3 9252 Z=I-1 9254 IF Z>0 THEN 9258 9256 Z=N1+2 9258 C(I)=A1*(S(I)/R(I-N4))+(1-A1)*(C(Z)+T(Z)) 9260 R(I)=A2*(S(I)/C(I))+(1-A2)*R(I-N4) 9262 T(I)=A3*(C(I)-C(Z))+(1-A3)*T(Z) 9264 E(I+1)=(C(I)+T(I))*R(I-N4+1) 9266 NEXT I 9268 FOR I=1 TO N1 9270 Z=I-1 9272 IF Z>0 THEN 9276 9274 Z=N1+2 9276 C(I)=A1*S(I)+(1-A1)*(C(Z)+T(Z)) 9278 T(I)=A3*(S(I)-S(Z))+(1-A3)*T(Z) 9280 F(I+1)=C(I)+T(I) 9282 NEXT I 9284 S1=0 9286 FOR I=1 TO N3 9288 S1=S1+S(I) 9290 NEXT I 9292 FOR I=1 TO N3 9294 R(I)=(N3*S(I))/S1 9296 NEXT I 9298 FOR I=1 TO N1 9300 IF I>N3 THEN 9306 9302 N4=0 9304 GOTO 9308 9306 N4=N3 9308 Z=I-1 9310 IF Z>0 THEN 9314 9312 Z=N1+2 9314 C(I)=A1*(S(I)/R(I-N4))+(1-A1)*C(Z) 9316 R(I)=A2*(S(I)/C(I))+(1-A2)*R(I-N4) 9318 G(I+1)=C(I)*R(I-N4+1) 9320 NEXT I 9322 S1=0 9324 S2=0 9326 S3=0 9328 S4=0 9330 S5=0 9332 S6=0 9334 S7=0 9336 FOR I=N2 +1 TO N1 9338 S1=S1+ABS(S(I)-E(I)) 9340 S2=S2+ABS(S(I)-F(I)) 9342 S3=S3+ABS(S(I)-G(I)) 9344 S7=S7+(S(I)-S(I-1))^2 9346 S4=S4+((E(I)-S(I-1))-(S(I)-S(I-1)))^2 9348 S5=S5+((F(I)-S(I-1))-(S(I)-S(I-1)))^2 9350 S6=S6+((G(I)-S(I-1))-(S(I)-S(I-1)))^2 9352 NEXT I 9354 S1=S1/(N1-N2) 9356 S2=S2/(N1-N2) 9358 S3=S3/(N1-N2) 9360 S4=S4/S7 9362 S5=S5/S7 9364 S6=S6/S7 9366 FOR I=N2+1 TO N1 9368 PRINT I,S(I),E(I),F(I),G(I) 9370 NEXT I 9372 PRINT 9374 PRINT "-----" 9376 PRINT 9378 PRINT "MEAN ABSOLUTE DEVIATION:" 9380 PRINT " "," ",S1,S2,S3 9382 PRINT 9384 PRINT "THEIL'S 'U' SQUARED:" 9386 PRINT " "," ",S4,S5,S6 9388 PRINT 9390 PRINT I$ 9392 PRINT 9394 GOTO 9999 9999 END