#panggil data library(Rssa) dat<- read.csv(file.choose(),sep = ",", header=TRUE) data<-as.matrix(dat) n<-length(data) P<-3 # Periode Musiman Data,hasil pengujian insample=data[1:(n-P-9)] n1<-length(insample) outsample=data[(n-P-9+1):n] outsample L=19 # Trial And error K=n1-L+1 #1. DEKOMPOSISI ###EMBEDDING### z=as.matrix(insample) z x=embed(z,L) id=1:L y=rbind(id,x) y w=as.matrix(y) sort=w[,order(-w[1,])] sort THankel=as.matrix(sort[-1,(1:L)]) THankel Hankel=t(THankel) Hankel dim(Hankel) ##SVD## trajectory=Hankel%*%t(Hankel) dim(trajectory) #eigen value e.value=eigen(trajectory)$values e.value #singular value sing.value=sqrt(e.value) sing.value #eigen vector ##untuk penentuan grouping e.vector=eigen(trajectory)$vectors e.vector #principal component princip.comp=matrix(0,nrow=K,ncol=L) V=(t(Hankel)%*%e.vector) V for (i in 1:L) { princip.comp[,i]=V[,i]/sqrt(e.value[i]) } V # plot singular value S=ssa(dat, L=L) S plot(S) #plot eigen vector 1D plot(S,type="vectors", plot.method="matplot", idx=1:L) #1:berapa mau dilihat #plot eigen vector 2D plot(S, type="paired", idx=1:(L-1)) #(1:L-1) #2. REKONSTRUKSI ###GROUPING### r=reconstruct(S,groups=list(trend=c(1,2,3,4),s1=c(13,14),s2=c(5,18,19),s3=c(12,15),s4=c(6,8,9, 10,16,17)),len=12)#ganti groupingnya r plot(wcor(S,groups=list(trend=c(1,2,3,4),s1=c(13,14),s2=c(5,18,19),s3=c(12,15),s4=c(6,8,9,10,1 6,17)),len=12))#ganti groupingnya ###DIAGONAL AVERAGING### komponen=cbind(r$trend,r$s1,r$s2,r$s3,r$s4) #ganti banyak F sebanyak groupingnya komponen diagonal.averaging=rowSums(komponen) diagonal.averaging da=diagonal.averaging # plot data asli dan diagonal averaging library(ggplot2) df1=data.frame(periode=seq(1,132,length=132),penumpang=dat,isin="data asli") df2=data.frame(periode=seq(1,120,length=120),penumpang=da,isin="diagonal averaging") df=rbind(df1,df2) ggplot(df,aes(x=periode,y=penumpang,color=isin))+geom_line() #Linear Recurent Formula (LRF) lrr.coef=lrr(S,groups=list(trend=c(1,2,3,4),s1=c(13,14),s2=c(5,18,19),s3=c(12,15),s4=c(6,8,9,10,16,17)),len=12) #ganti groupingnya lrr.coef=lrr.coef$trend+lrr.coef$s1+lrr.coef$s2+lrr.coef$s3+lrr.coef$s4 lrr.coef ###RECURRENT FORECASTING### forecast=rforecast(S,groups=list(trend=c(1,2,3,4),s1=c(13,14),s2=c(5,18,19),s3=c(12,15),s4=c(6,8,9,10,16,17)),len=10) forecast hasil.forecast=forecast$trend+forecast$s1+forecast$s2+forecast$s3+forecast$s4 hasil.forecast ##AKURASI PERAMALAN residu=outsample-hasil.forecast residu MAD=(sum(abs(residu))/(length(outsample))) MAD MSE=(sum(residu^2)/(length(outsample))) MSE PEI=(residu/outsample)*100 MAPE=(sum(abs(PEI)))/(length(outsample)) MAPE ## Tracking Signal ts=c() for (i in 1:12){ TS =sum(residu[1:i])/(sum(abs(residu[1:i]))/i) ts=c(ts,TS) } ts