R version 3.0.2 (2013-09-25) -- "Frisbee Sailing" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > x <- c(221.102 + ,220.892 + ,225.537 + ,219.334 + ,216.126 + ,224.573 + ,213.991 + ,221.865 + ,215.382 + ,213.962 + ,217.009 + ,318.110 + ,219.662 + ,212.650 + ,209.307 + ,210.541 + ,210.609 + ,208.910 + ,207.541 + ,207.699 + ,205.005 + ,205.747 + ,203.644 + ,229.937 + ,214.446 + ,210.194 + ,206.535 + ,216.524 + ,198.243 + ,208.274 + ,207.493 + ,215.525 + ,207.562 + ,213.355 + ,209.048 + ,220.497 + ,214.563 + ,211.571 + ,216.385 + ,211.496 + ,209.683 + ,206.304 + ,213.925 + ,204.829 + ,205.729 + ,200.296 + ,207.960 + ,207.729 + ,208.327 + ,207.794 + ,213.700 + ,213.136 + ,210.354 + ,202.205 + ,220.425 + ,210.038 + ,205.201 + ,197.441 + ,200.021 + ,203.165 + ,201.699 + ,201.003 + ,232.308 + ,211.412 + ,209.661 + ,213.587 + ,193.611 + ,192.543 + ,196.040 + ,191.407 + ,189.726 + ,191.272 + ,187.924 + ,198.213 + ,199.352 + ,199.289 + ,195.475 + ,198.045 + ,197.615 + ,189.015 + ,189.668 + ,189.120 + ,194.168 + ,192.304 + ,185.913 + ,197.599 + ,186.085 + ,190.566 + ,187.054 + ,193.222 + ,189.856 + ,190.608 + ,190.588 + ,186.773 + ,183.510 + ,180.106 + ,180.150 + ,178.412 + ,182.353 + ,203.805 + ,186.054 + ,184.290 + ,187.483 + ,187.111 + ,189.561 + ,184.439 + ,182.985 + ,183.828 + ,184.036 + ,183.214 + ,183.464 + ,173.718 + ,180.210 + ,171.252 + ,172.705 + ,174.006 + ,172.043 + ,169.445 + ,169.449 + ,177.073 + ,170.799 + ,171.648 + ,172.220 + ,165.795 + ,167.466 + ,165.528 + ,162.851 + ,165.864 + ,162.094 + ,162.385 + ,164.293 + ,165.983 + ,159.680 + ,161.739 + ,159.302 + ,167.795 + ,164.242 + ,159.743 + ,160.887 + ,163.844 + ,161.172 + ,159.330 + ,155.570 + ,156.749 + ,155.012 + ,163.419 + ,153.630 + ,154.535 + ,151.543 + ,152.955 + ,150.166 + ,151.416 + ,150.332 + ,152.196 + ,153.422 + ,147.435) > par3 = 'multiplicative' > par2 = 'Triple' > par1 = '12' > par3 <- 'multiplicative' > par2 <- 'Triple' > par1 <- '12' > #'GNU S' R Code compiled by R2WASP v. 1.2.327 () > #Author: root > #To cite this work: Wessa P., (2013), Exponential Smoothing (v1.0.5) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/rwasp_exponentialsmoothing.wasp/ > #Source of accompanying publication: > # > par1 <- as.numeric(par1) > if (par2 == 'Single') K <- 1 > if (par2 == 'Double') K <- 2 > if (par2 == 'Triple') K <- par1 > nx <- length(x) > nxmK <- nx - K > x <- ts(x, frequency = par1) > if (par2 == 'Single') fit <- HoltWinters(x, gamma=F, beta=F) > if (par2 == 'Double') fit <- HoltWinters(x, gamma=F) > if (par2 == 'Triple') fit <- HoltWinters(x, seasonal=par3) > fit Holt-Winters exponential smoothing with trend and multiplicative seasonal component. Call: HoltWinters(x = x, seasonal = par3) Smoothing parameters: alpha: 0.160528 beta : 0.02018023 gamma: 0.98245 Coefficients: [,1] a 146.0328280 b -0.5958819 s1 1.0120399 s2 1.0640098 s3 1.0079419 s4 1.0260758 s5 1.0156934 s6 1.0272045 s7 1.0149512 s8 1.0303519 s9 1.0270571 s10 1.0395900 s11 1.0437126 s12 1.0097752 > myresid <- x - fit$fitted[,'xhat'] > postscript(file="/var/wessaorg/rcomp/tmp/134rf1387054098.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > op <- par(mfrow=c(2,1)) > plot(fit,ylab='Observed (black) / Fitted (red)',main='Interpolation Fit of Exponential Smoothing') > plot(myresid,ylab='Residuals',main='Interpolation Prediction Errors') > par(op) > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/2w6bx1387054098.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > p <- predict(fit, par1, prediction.interval=TRUE) > np <- length(p[,1]) > plot(fit,p,ylab='Observed (black) / Fitted (red)',main='Extrapolation Fit of Exponential Smoothing') > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/3k3rf1387054098.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > op <- par(mfrow = c(2,2)) > acf(as.numeric(myresid),lag.max = nx/2,main='Residual ACF') > spectrum(myresid,main='Residals Periodogram') > cpgram(myresid,main='Residal Cumulative Periodogram') > qqnorm(myresid,main='Residual Normal QQ Plot') > qqline(myresid) > par(op) > dev.off() null device 1 > > #Note: the /var/wessaorg/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/wessaorg/rcomp/createtable") > > a<-table.start() > a<-table.row.start(a) > a<-table.element(a,'Estimated Parameters of Exponential Smoothing',2,TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'Parameter',header=TRUE) > a<-table.element(a,'Value',header=TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'alpha',header=TRUE) > a<-table.element(a,fit$alpha) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'beta',header=TRUE) > a<-table.element(a,fit$beta) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'gamma',header=TRUE) > a<-table.element(a,fit$gamma) > a<-table.row.end(a) > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/409bq1387054098.tab") > a<-table.start() > a<-table.row.start(a) > a<-table.element(a,'Interpolation Forecasts of Exponential Smoothing',4,TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'t',header=TRUE) > a<-table.element(a,'Observed',header=TRUE) > a<-table.element(a,'Fitted',header=TRUE) > a<-table.element(a,'Residuals',header=TRUE) > a<-table.row.end(a) > for (i in 1:nxmK) { + a<-table.row.start(a) + a<-table.element(a,i+K,header=TRUE) + a<-table.element(a,x[i+K]) + a<-table.element(a,fit$fitted[i,'xhat']) + a<-table.element(a,myresid[i]) + a<-table.row.end(a) + } > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/5p5fb1387054098.tab") > a<-table.start() > a<-table.row.start(a) > a<-table.element(a,'Extrapolation Forecasts of Exponential Smoothing',4,TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'t',header=TRUE) > a<-table.element(a,'Forecast',header=TRUE) > a<-table.element(a,'95% Lower Bound',header=TRUE) > a<-table.element(a,'95% Upper Bound',header=TRUE) > a<-table.row.end(a) > for (i in 1:np) { + a<-table.row.start(a) + a<-table.element(a,nx+i,header=TRUE) + a<-table.element(a,p[i,'fit']) + a<-table.element(a,p[i,'lwr']) + a<-table.element(a,p[i,'upr']) + a<-table.row.end(a) + } > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/63kh71387054098.tab") > > try(system("convert tmp/134rf1387054098.ps tmp/134rf1387054098.png",intern=TRUE)) character(0) > try(system("convert tmp/2w6bx1387054098.ps tmp/2w6bx1387054098.png",intern=TRUE)) character(0) > try(system("convert tmp/3k3rf1387054098.ps tmp/3k3rf1387054098.png",intern=TRUE)) character(0) > > > proc.time() user system elapsed 2.942 0.532 3.458