/* Holt's Method where parameter alpha and beta are automatically chosen. */ /* (Forecast Smoothing) Criteria: MAPE */ new; cls; let data[12,1]= 23 25 36 31 26 28 48 36 31 42 53 43 ; t=seqa(1,1,rows(data)); library pgraph; graphset; _pltype=6; _plegctl=1; _plegstr="actual\000predicted"; title("Holt's Method"); prec=0.1; xy(t,data~holtMAPE(data,prec)); proc holtMAPE(x,prec); local n,L,T,m,e,i,j,k,alpha,beta,alphastar,betastar,count,MAPE,MAPE_1; n=rows(x); MAPE_1=1e+8; count=1; k=1; do while k<=(1/prec); j=1; do while j<=(1/prec); alpha=prec*(k-1); beta=prec*(j-1); L=zeros(n,1); T=zeros(n,1); m=zeros(n,1); L[1]=x[1]; T[1]=0; i=2; do while i<=n; L[i]=alpha*x[i]+(1-alpha)*(L[i-1]+T[i-1]); T[i]=beta*(L[i]-L[i-1])+(1-beta)*T[i-1]; m[i]=L[i-1]+T[i-1]; i=i+1; endo; m[1]=miss(m[1],0); e=x[2:n]-m[2:n]; MAPE=sumc(abs(e)./x[2:n]*100)/rows(e); if MAPE