R version 2.9.0 (2009-04-17) Copyright (C) 2009 The R Foundation for Statistical Computing ISBN 3-900051-07-0 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(428800 + ,424800 + ,403400 + ,398400 + ,393500 + ,380500 + ,398300 + ,387300 + ,370400 + ,372800 + ,444600 + ,449900 + ,458100 + ,424800 + ,420600 + ,400100 + ,393000 + ,387100 + ,377500 + ,400400 + ,391400 + ,363600 + ,431000 + ,441700 + ,448500 + ,415600 + ,408000 + ,416600 + ,409300 + ,387600 + ,394500 + ,407600 + ,378500 + ,359600 + ,435700 + ,433800 + ,427700 + ,413300 + ,379500 + ,379300 + ,353700 + ,378200 + ,380600 + ,394000 + ,374000 + ,375000 + ,437600 + ,443900 + ,488800 + ,463900 + ,440000 + ,453800 + ,451600 + ,453400 + ,461400 + ,509100 + ,540600 + ,555100 + ,677400 + ,694600 + ,750100 + ,733900 + ,709300 + ,720500 + ,693200 + ,687200 + ,686800 + ,720900 + ,653100 + ,624700 + ,690000 + ,717800 + ,736500 + ,699900 + ,675600 + ,635600 + ,632500 + ,594900 + ,604000 + ,620800 + ,578400 + ,571200 + ,627400 + ,657700 + ,674100 + ,672800 + ,615300 + ,609100 + ,607600 + ,566900 + ,572700 + ,589200 + ,534800 + ,543100 + ,591100 + ,624800 + ,665300 + ,642600 + ,608700 + ,594500 + ,563800 + ,596100 + ,597600 + ,633100 + ,591000 + ,584200 + ,655800 + ,670700 + ,699700 + ,712900 + ,652000 + ,635100 + ,603100 + ,610100 + ,602000 + ,597600 + ,585400 + ,567100 + ,620600 + ,646200 + ,644800 + ,645200 + ,644800 + ,593000 + ,569100 + ,518800 + ,538700 + ,554600 + ,507900 + ,488400 + ,563300 + ,592400 + ,598100 + ,546300 + ,516100 + ,518500 + ,477400 + ,483400 + ,469400 + ,501300 + ,457400 + ,446700 + ,501900 + ,550400 + ,593700 + ,548900 + ,534200 + ,550500 + ,541800 + ,569300 + ,587400 + ,627700 + ,607000 + ,629500 + ,704600 + ,767700 + ,812200 + ,824600 + ,856300 + ,812200 + ,764100 + ,801700 + ,806000 + ,867200 + ,801600 + ,817500 + ,920900 + ,959700 + ,997700 + ,949100 + ,910900 + ,920400 + ,914200 + ,926300 + ,906400 + ,926100 + ,902500 + ,895300 + ,979900 + ,1009700 + ,1043800 + ,979800 + ,921600 + ,923500 + ,914500 + ,891700 + ,916000 + ,931700 + ,902400 + ,893700 + ,941500 + ,980100 + ,1006900 + ,949200 + ,883200 + ,849900 + ,839200 + ,803900 + ,797900 + ,830800 + ,753300 + ,764100 + ,807600 + ,853700 + ,886200 + ,815700 + ,743000 + ,753600 + ,724800 + ,709600 + ,721900) > par3 = 'additive' > par2 = 'Triple' > par1 = '12' > #'GNU S' R Code compiled by R2WASP v. 1.0.44 () > #Author: Prof. Dr. P. Wessa > #To cite this work: AUTHOR(S), (YEAR), YOUR SOFTWARE TITLE (vNUMBER) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/rwasp_YOURPAGE.wasp/ > #Source of accompanying publication: Office for Research, Development, and Education > #Technical description: Write here your technical program description (don't use hard returns!) > 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=0, beta=0) > if (par2 == 'Double') fit <- HoltWinters(x, gamma=0) > if (par2 == 'Triple') fit <- HoltWinters(x, seasonal=par3) > fit Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = x, seasonal = par3) Smoothing parameters: alpha: 0.7221018 beta : 0.1660564 gamma: 0.5262852 Coefficients: [,1] a 748238.7542 b -6493.6035 s1 377.5733 s2 -42900.1098 s3 -40494.1839 s4 24651.7215 s5 61473.5308 s6 81153.7691 s7 28468.6458 s8 -9580.4377 s9 -12194.5803 s10 -33026.5105 s11 -38330.8616 s12 -27760.7853 > myresid <- x - fit$fitted[,'xhat'] > postscript(file="/var/www/html/rcomp/tmp/1r1j81243942865.ps",horizontal=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/www/html/rcomp/tmp/2t9wl1243942865.ps",horizontal=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/www/html/rcomp/tmp/30wsm1243942865.ps",horizontal=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/www/html/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/www/html/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/www/html/rcomp/tmp/4342q1243942865.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/www/html/rcomp/tmp/58qxb1243942865.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/www/html/rcomp/tmp/6yrro1243942865.tab") > > system("convert tmp/1r1j81243942865.ps tmp/1r1j81243942865.png") > system("convert tmp/2t9wl1243942865.ps tmp/2t9wl1243942865.png") > system("convert tmp/30wsm1243942865.ps tmp/30wsm1243942865.png") > > > proc.time() user system elapsed 1.342 0.587 1.923