x <- c(15.13,15.25,15.33,15.36,15.40,15.40,15.41,15.47,15.54,15.55,15.59,15.65,15.75,15.86,15.89,15.94,15.93,15.95,15.99,15.99,16.06,16.08,16.07,16.11,16.15,16.18,16.30,16.42,16.49,16.50,16.58,16.64,16.66,16.81,16.91,16.92,16.95,17.11,17.16,17.16,17.27,17.34,17.39,17.43,17.45,17.50,17.56,17.65,17.62,17.70,17.72,17.71,17.74,17.75,17.78,17.80,17.86,17.88,17.89,17.94,17.98,18.10,18.14,18.19,18.23,18.24,18.27,18.30,18.34,18.36,18.36,18.40,18.43,18.47,18.56,18.58,18.61,18.61,18.69,18.74,18.75,18.81,18.85,18.88) par2 = '12' par1 = 'additive' par2 <- '12' par1 <- 'additive' #'GNU S' R Code compiled by R2WASP v. 1.2.327 () #Author: root #To cite this work: Wessa P., (2013), Classical Decomposition (v1.0.4) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/rwasp_decompose.wasp/ #Source of accompanying publication: Office for Research, Development, and Education # par2 <- as.numeric(par2) x <- ts(x,freq=par2) m <- decompose(x,type=par1) m$figure postscript(file="/var/fisher/rcomp/tmp/1967m1386841818.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) plot(m) dev.off() mylagmax <- length(x)/2 postscript(file="/var/fisher/rcomp/tmp/2rnya1386841818.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) op <- par(mfrow = c(2,2)) acf(as.numeric(x),lag.max = mylagmax,main='Observed') acf(as.numeric(m$trend),na.action=na.pass,lag.max = mylagmax,main='Trend') acf(as.numeric(m$seasonal),na.action=na.pass,lag.max = mylagmax,main='Seasonal') acf(as.numeric(m$random),na.action=na.pass,lag.max = mylagmax,main='Random') par(op) dev.off() postscript(file="/var/fisher/rcomp/tmp/3wbr11386841818.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) op <- par(mfrow = c(2,2)) spectrum(as.numeric(x),main='Observed') spectrum(as.numeric(m$trend[!is.na(m$trend)]),main='Trend') spectrum(as.numeric(m$seasonal[!is.na(m$seasonal)]),main='Seasonal') spectrum(as.numeric(m$random[!is.na(m$random)]),main='Random') par(op) dev.off() postscript(file="/var/fisher/rcomp/tmp/4eedc1386841818.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) op <- par(mfrow = c(2,2)) cpgram(as.numeric(x),main='Observed') cpgram(as.numeric(m$trend[!is.na(m$trend)]),main='Trend') cpgram(as.numeric(m$seasonal[!is.na(m$seasonal)]),main='Seasonal') cpgram(as.numeric(m$random[!is.na(m$random)]),main='Random') par(op) dev.off() #Note: the /var/fisher/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab load(file="/var/fisher/rcomp/createtable") a<-table.start() a<-table.row.start(a) a<-table.element(a,'Classical Decomposition by Moving Averages',6,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'t',header=TRUE) a<-table.element(a,'Observations',header=TRUE) a<-table.element(a,'Fit',header=TRUE) a<-table.element(a,'Trend',header=TRUE) a<-table.element(a,'Seasonal',header=TRUE) a<-table.element(a,'Random',header=TRUE) a<-table.row.end(a) for (i in 1:length(m$trend)) { a<-table.row.start(a) a<-table.element(a,i,header=TRUE) a<-table.element(a,x[i]) if (par1 == 'additive') a<-table.element(a,signif(m$trend[i]+m$seasonal[i],6)) else a<-table.element(a,signif(m$trend[i]*m$seasonal[i],6)) a<-table.element(a,signif(m$trend[i],6)) a<-table.element(a,signif(m$seasonal[i],6)) a<-table.element(a,signif(m$random[i],6)) a<-table.row.end(a) } a<-table.end(a) table.save(a,file="/var/fisher/rcomp/tmp/5jp5x1386841818.tab") try(system("convert tmp/1967m1386841818.ps tmp/1967m1386841818.png",intern=TRUE)) try(system("convert tmp/2rnya1386841818.ps tmp/2rnya1386841818.png",intern=TRUE)) try(system("convert tmp/3wbr11386841818.ps tmp/3wbr11386841818.png",intern=TRUE)) try(system("convert tmp/4eedc1386841818.ps tmp/4eedc1386841818.png",intern=TRUE))