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
9017  PRINT 
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 GIVEN 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 INTERESTED 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 FORCASTING 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  LET 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  LET 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  LET 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  PRINT "***********************************************************************"
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  LET S1=0
9176  FOR I=1 TO N3
9178  LET S1=S1+S[I]
9180  NEXT I
9182  LET A[K]=S1/N3
9184  NEXT K
9186  LET T1=(A[N2/N3]-A[1])/(N2-N3)
9188  LET B1=0
9190  LET B2=1
9192  FOR I=1 TO N2
9194  LET B1=B1+1
9196  LET R[I]=S[I]/(A[B2]-(((N3+1)/2)-B1)*T1)
9198  IF B1 >= N3 THEN 9202
9200  GOTO 9206
9202  LET B1=0
9204  LET B2=B2+1
9206  NEXT I
9208  FOR I=1 TO N3
9210  LET S1=0
9212  FOR K=0 TO N2/N3-1
9214  LET S1=S1+R[I+K*N3]
9216  NEXT K
9218  LET R[I]=S1/(N2/N3)
9220  NEXT I
9222  LET S1=0
9224  FOR I=1 TO N3
9226  LET S1=S1+R[I]
9228  NEXT I
9230  FOR I=1 TO N3
9232  LET R[I]=R[I]*(N3/S1)
9234  NEXT I
9236  LET S[N1+2]=A[1]
9238  LET C[N1+2]=A[1]
9240  LET T[N1+2]=T1
9242  FOR I=1 TO N1
9244  IF I>N3 THEN 9250
9246  LET N4=0
9248  GOTO 9252
9250  LET N4=N3
9252  LET Z=I-1
9254  IF Z>0 THEN 9258
9256  LET Z=N1+2
9258  LET C[I]=A1*(S[I]/R[I-N4])+(1-A1)*(C[Z]+T[Z])
9260  LET R[I]=A2*(S[I]/C[I])+(1-A2)*R[I-N4]
9262  LET T[I]=A3*(C[I]-C[Z])+(1-A3)*T[Z]
9264  LET E[I+1]=(C[I]+T[I])*R[I-N4+1]
9266  NEXT I
9268  FOR I=1 TO N1
9270  LET Z=I-1
9272  IF Z>0 THEN 9276
9274  LET Z=N1+2
9276  LET C[I]=A1*S[I]+(1-A1)*(C[Z]+T[Z])
9278  LET T[I]=A3*(S[I]-S[Z])+(1-A3)*T[Z]
9280  LET F[I+1]=C[I]+T[I]
9282  NEXT I
9284  LET S1=0
9286  FOR I=1 TO N3
9288  LET S1=S1+S[I]
9290  NEXT I
9292  FOR I=1 TO N3
9294  LET R[I]=(N3*S[I])/S1
9296  NEXT I
9298  FOR I=1 TO N1
9300  IF I>N3 THEN 9306
9302  LET N4=0
9304  GOTO 9308
9306  LET N4=N3
9308  LET Z=I-1
9310  IF Z>0 THEN 9314
9312  LET Z=N1+2
9314  LET C[I]=A1*(S[I]/R[I-N4])+(1-A1)*C[Z]
9316  LET R[I]=A2*(S[I]/C[I])+(1-A2)*R[I-N4]
9318  LET G[I+1]=C[I]*R[I-N4+1]
9320  NEXT I
9322  LET S1=0
9324  LET S2=0
9326  LET S3=0
9328  LET S4=0
9330  LET S5=0
9332  LET S6=0
9334  LET S7=0
9336  FOR I=N2+1 TO N1
9338  LET S1=S1+ABS(S[I]-E[I])
9340  LET S2=S2+ABS(S[I]-F[I])
9342  LET S3=S3+ABS(S[I]-G[I])
9344  LET S7=S7+(S[I]-S[I-1])^2
9346  LET S4=S4+((E[I]-S[I-1])-(S[I]-S[I-1]))^2
9348  LET S5=S5+((F[I]-S[I-1])-(S[I]-S[I-1]))^2
9350  LET S6=S6+((G[I]-S[I-1])-(S[I]-S[I-1]))^2
9352  NEXT I
9354  LET S1=S1/(N1-N2)
9356  LET S2=S2/(N1-N2)
9358  LET S3=S3/(N1-N2)
9360  LET S4=S4/S7
9362  LET S5=S5/S7
9364  LET 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 "**********************************************************************"
9392  PRINT 
9394  STOP 
9999  END 
