Home
»
date
»
2009
»
Dec
»
04
»
ARIMA backward selection
*The author of this computation has been verified*
R Software Module:
/rwasp_arimabackwardselection.wasp
(opens new window with default values)
Title produced by software: ARIMA Backward Selection
Date of computation: Fri, 04 Dec 2009 13:37:44 -0700
Cite this page as follows:
Statistical Computations at FreeStatistics.org
, Office for Research Development and Education, URL
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u.htm/
, Retrieved Sun, 19 May 2013 21:35:20 +0000
Original text written by user:
IsPrivate?
No (this computation is public)
User-defined keywords:
System-generated keywords (parent):
t1259333643wfudtum7qa0jfpl (pk = 60855)
Estimated Impact
33
Dataseries X:
»
Textfile
« »
CSV
« »
Stem and Leaf
« »
Histogram
« »
Kernel Density
« »
Harrell-Davis Quantiles
« »
Central Tendency
« »
Variability
«
3.58 3.52 3.45 3.36 3.27 3.21 3.19 3.16 3.12 3.06 3.01 2.98 2.97 3.02 3.07 3.18 3.29 3.43 3.61 3.74 3.87 3.88 4.09 4.19 4.2 4.29 4.37 4.47 4.61 4.65 4.69 4.82 4.86 4.87 5.01 5.03 5.13 5.18 5.21 5.26 5.25 5.2 5.16 5.19 5.39 5.58 5.76 5.89 5.98 6.02 5.62 4.87 4.24 4.02 3.74 3.45 3.34 3.21 3.12 3.04
Output produced by software:
Summary of computational transaction
Raw Input
view raw input (R code)
Raw Output
view raw output of R engine
Computing time
3 seconds
R Server
'Gwilym Jenkins' @ 72.249.127.135
ARIMA Parameter Estimation and Backward Selection
Iteration
ar1
ar2
ar3
ma1
sma1
Estimates ( 1 )
-0.6464
-0.1711
-0.1428
0.8115
0.2032
(p-val)
(0.0564 )
(0.284 )
(0.4306 )
(0.008 )
(0.2965 )
Estimates ( 2 )
-0.3473
-0.1899
0
0.5189
0.1882
(p-val)
(0.5354 )
(0.3254 )
(NA )
(0.3748 )
(0.3389 )
Estimates ( 3 )
0
-0.2525
0
0.1513
0.1815
(p-val)
(NA )
(0.0499 )
(NA )
(0.2716 )
(0.3339 )
Estimates ( 4 )
0
-0.2392
0
0.1491
0
(p-val)
(NA )
(0.0628 )
(NA )
(0.2744 )
(NA )
Estimates ( 5 )
0
-0.2377
0
0
0
(p-val)
(NA )
(0.0624 )
(NA )
(NA )
(NA )
Estimates ( 6 )
0
0
0
0
0
(p-val)
(NA )
(NA )
(NA )
(NA )
(NA )
Estimates ( 7 )
NA
NA
NA
NA
NA
(p-val)
(NA )
(NA )
(NA )
(NA )
(NA )
Estimates ( 8 )
NA
NA
NA
NA
NA
(p-val)
(NA )
(NA )
(NA )
(NA )
(NA )
Estimates ( 9 )
NA
NA
NA
NA
NA
(p-val)
(NA )
(NA )
(NA )
(NA )
(NA )
Estimated ARIMA Residuals
Value
-0.00433432745842366
-0.0078022746375229
-0.0155958892761792
-0.00210155395533625
0.0200246268411112
0.0319417062277054
-0.00236306807490871
-0.000449478057334751
-0.0180403553291617
0.00605306567346098
0.0122417361188405
0.0180186302552325
0.0522170453242534
0.00376646695464222
0.0595855184416263
-0.000320969939950899
0.0350155025089389
0.0311532674173538
-0.0345166635274485
0.00706658500199398
-0.104043703908541
0.156653359358668
-0.108983415191107
-0.0330226642850051
0.041731880593785
-0.0246198518301912
0.0301964440525206
0.0288573752412327
-0.0737670606752703
0.00728063275033186
0.0508449192813738
-0.0693670358147278
-0.0066025612311611
0.0832270966040723
-0.0975638918668179
0.0848859384550354
-0.0601954062840582
-0.000750939474644774
0.00613020976153678
-0.0493948073884827
-0.0268959780554115
-0.00327591559677831
0.0461924471904958
0.131280568642659
0.00456339927789973
0.0227346729145257
-0.0400324881323044
-0.0322230963912196
-0.0467485181183092
-0.33916986433427
-0.279056208513923
0.00577710730672632
0.251244116617962
-0.0280989738179782
0.065384446374774
0.130583178425998
-0.0185861216195598
0.0654955008020783
0.00397021723111957
Charts produced by software:
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/12ofv1259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/12ofv1259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/2x54i1259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/2x54i1259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/3oqp21259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/3oqp21259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/4ds4u1259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/4ds4u1259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/5a5ok1259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/5a5ok1259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/6zq071259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/6zq071259959061.ps (
opens in new window
)
Click here to open pdf file.
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/73buf1259959061.png (
opens in new window
)
http://www.freestatistics.org/blog/date/2009/Dec/04/t12599591706kqlum1mn1bg62u/73buf1259959061.ps (
opens in new window
)
Click here to open pdf file.
Parameters (Session):
par1 = TRUE ; par2 = 0.9 ; par3 = 2 ; par4 = 0 ; par5 = 12 ; par6 = 3 ; par7 = 1 ; par8 = 0 ; par9 = 1 ;
Parameters (R input):
par1 = TRUE ; par2 = 0.9 ; par3 = 2 ; par4 = 0 ; par5 = 12 ; par6 = 3 ; par7 = 1 ; par8 = 0 ; par9 = 1 ;
R code (references can be found in the
software module
):
library(lattice) if (par1 == 'TRUE') par1 <- TRUE if (par1 == 'FALSE') par1 <- FALSE par2 <- as.numeric(par2) #Box-Cox lambda transformation parameter par3 <- as.numeric(par3) #degree of non-seasonal differencing par4 <- as.numeric(par4) #degree of seasonal differencing par5 <- as.numeric(par5) #seasonal period par6 <- as.numeric(par6) #degree (p) of the non-seasonal AR(p) polynomial par7 <- as.numeric(par7) #degree (q) of the non-seasonal MA(q) polynomial par8 <- as.numeric(par8) #degree (P) of the seasonal AR(P) polynomial par9 <- as.numeric(par9) #degree (Q) of the seasonal MA(Q) polynomial armaGR <- function(arima.out, names, n){ try1 <- arima.out$coef try2 <- sqrt(diag(arima.out$var.coef)) try.data.frame <- data.frame(matrix(NA,ncol=4,nrow=length(names))) dimnames(try.data.frame) <- list(names,c('coef','std','tstat','pv')) try.data.frame[,1] <- try1 for(i in 1:length(try2)) try.data.frame[which(rownames(try.data.frame)==names(try2)[i]),2] <- try2[i] try.data.frame[,3] <- try.data.frame[,1] / try.data.frame[,2] try.data.frame[,4] <- round((1-pt(abs(try.data.frame[,3]),df=n-(length(try2)+1)))*2,5) vector <- rep(NA,length(names)) vector[is.na(try.data.frame[,4])] <- 0 maxi <- which.max(try.data.frame[,4]) continue <- max(try.data.frame[,4],na.rm=TRUE) > .05 vector[maxi] <- 0 list(summary=try.data.frame,next.vector=vector,continue=continue) } arimaSelect <- function(series, order=c(13,0,0), seasonal=list(order=c(2,0,0),period=12), include.mean=F){ nrc <- order[1]+order[3]+seasonal$order[1]+seasonal$order[3] coeff <- matrix(NA, nrow=nrc*2, ncol=nrc) pval <- matrix(NA, nrow=nrc*2, ncol=nrc) mylist <- rep(list(NULL), nrc) names <- NULL if(order[1] > 0) names <- paste('ar',1:order[1],sep='') if(order[3] > 0) names <- c( names , paste('ma',1:order[3],sep='') ) if(seasonal$order[1] > 0) names <- c(names, paste('sar',1:seasonal$order[1],sep='')) if(seasonal$order[3] > 0) names <- c(names, paste('sma',1:seasonal$order[3],sep='')) arima.out <- arima(series, order=order, seasonal=seasonal, include.mean=include.mean, method='ML') mylist[[1]] <- arima.out last.arma <- armaGR(arima.out, names, length(series)) mystop <- FALSE i <- 1 coeff[i,] <- last.arma[[1]][,1] pval [i,] <- last.arma[[1]][,4] i <- 2 aic <- arima.out$aic while(!mystop){ mylist[[i]] <- arima.out arima.out <- arima(series, order=order, seasonal=seasonal, include.mean=include.mean, method='ML', fixed=last.arma$next.vector) aic <- c(aic, arima.out$aic) last.arma <- armaGR(arima.out, names, length(series)) mystop <- !last.arma$continue coeff[i,] <- last.arma[[1]][,1] pval [i,] <- last.arma[[1]][,4] i <- i+1 } list(coeff, pval, mylist, aic=aic) } arimaSelectplot <- function(arimaSelect.out,noms,choix){ noms <- names(arimaSelect.out[[3]][[1]]$coef) coeff <- arimaSelect.out[[1]] k <- min(which(is.na(coeff[,1])))-1 coeff <- coeff[1:k,] pval <- arimaSelect.out[[2]][1:k,] aic <- arimaSelect.out$aic[1:k] coeff[coeff==0] <- NA n <- ncol(coeff) if(missing(choix)) choix <- k layout(matrix(c(1,1,1,2, 3,3,3,2, 3,3,3,4, 5,6,7,7),nr=4), widths=c(10,35,45,15), heights=c(30,30,15,15)) couleurs <- rainbow(75)[1:50]#(50) ticks <- pretty(coeff) par(mar=c(1,1,3,1)) plot(aic,k:1-.5,type='o',pch=21,bg='blue',cex=2,axes=F,lty=2,xpd=NA) points(aic[choix],k-choix+.5,pch=21,cex=4,bg=2,xpd=NA) title('aic',line=2) par(mar=c(3,0,0,0)) plot(0,axes=F,xlab='',ylab='',xlim=range(ticks),ylim=c(.1,1)) rect(xleft = min(ticks) + (0:49)/50*(max(ticks)-min(ticks)), xright = min(ticks) + (1:50)/50*(max(ticks)-min(ticks)), ytop = rep(1,50), ybottom= rep(0,50),col=couleurs,border=NA) axis(1,ticks) rect(xleft=min(ticks),xright=max(ticks),ytop=1,ybottom=0) text(mean(coeff,na.rm=T),.5,'coefficients',cex=2,font=2) par(mar=c(1,1,3,1)) image(1:n,1:k,t(coeff[k:1,]),axes=F,col=couleurs,zlim=range(ticks)) for(i in 1:n) for(j in 1:k) if(!is.na(coeff[j,i])) { if(pval[j,i]<.01) symb = 'green' else if( (pval[j,i]<.05) & (pval[j,i]>=.01)) symb = 'orange' else if( (pval[j,i]<.1) & (pval[j,i]>=.05)) symb = 'red' else symb = 'black' polygon(c(i+.5 ,i+.2 ,i+.5 ,i+.5), c(k-j+0.5,k-j+0.5,k-j+0.8,k-j+0.5), col=symb) if(j==choix) { rect(xleft=i-.5, xright=i+.5, ybottom=k-j+1.5, ytop=k-j+.5, lwd=4) text(i, k-j+1, round(coeff[j,i],2), cex=1.2, font=2) } else{ rect(xleft=i-.5,xright=i+.5,ybottom=k-j+1.5,ytop=k-j+.5) text(i,k-j+1,round(coeff[j,i],2),cex=1.2,font=1) } } axis(3,1:n,noms) par(mar=c(0.5,0,0,0.5)) plot(0,axes=F,xlab='',ylab='',type='n',xlim=c(0,8),ylim=c(-.2,.8)) cols <- c('green','orange','red','black') niv <- c('0','0.01','0.05','0.1') for(i in 0:3){ polygon(c(1+2*i ,1+2*i ,1+2*i-.5 ,1+2*i), c(.4 ,.7 , .4 , .4), col=cols[i+1]) text(2*i,0.5,niv[i+1],cex=1.5) } text(8,.5,1,cex=1.5) text(4,0,'p-value',cex=2) box() residus <- arimaSelect.out[[3]][[choix]]$res par(mar=c(1,2,4,1)) acf(residus,main='') title('acf',line=.5) par(mar=c(1,2,4,1)) pacf(residus,main='') title('pacf',line=.5) par(mar=c(2,2,4,1)) qqnorm(residus,main='') title('qq-norm',line=.5) qqline(residus) residus } if (par2 == 0) x <- log(x) if (par2 != 0) x <- x^par2 (selection <- arimaSelect(x, order=c(par6,par3,par7), seasonal=list(order=c(par8,par4,par9), period=par5))) bitmap(file='test1.png') resid <- arimaSelectplot(selection) dev.off() resid bitmap(file='test2.png') acf(resid,length(resid)/2, main='Residual Autocorrelation Function') dev.off() bitmap(file='test3.png') pacf(resid,length(resid)/2, main='Residual Partial Autocorrelation Function') dev.off() bitmap(file='test4.png') cpgram(resid, main='Residual Cumulative Periodogram') dev.off() bitmap(file='test5.png') hist(resid, main='Residual Histogram', xlab='values of Residuals') dev.off() bitmap(file='test6.png') densityplot(~resid,col='black',main='Residual Density Plot', xlab='values of Residuals') dev.off() bitmap(file='test7.png') qqnorm(resid, main='Residual Normal Q-Q Plot') qqline(resid) dev.off() ncols <- length(selection[[1]][1,]) nrows <- length(selection[[2]][,1])-1 load(file='createtable') a<-table.start() a<-table.row.start(a) a<-table.element(a,'ARIMA Parameter Estimation and Backward Selection', ncols+1,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'Iteration', header=TRUE) for (i in 1:ncols) { a<-table.element(a,names(selection[[3]][[1]]$coef)[i],header=TRUE) } a<-table.row.end(a) for (j in 1:nrows) { a<-table.row.start(a) mydum <- 'Estimates (' mydum <- paste(mydum,j) mydum <- paste(mydum,')') a<-table.element(a,mydum, header=TRUE) for (i in 1:ncols) { a<-table.element(a,round(selection[[1]][j,i],4)) } a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'(p-val)', header=TRUE) for (i in 1:ncols) { mydum <- '(' mydum <- paste(mydum,round(selection[[2]][j,i],4),sep='') mydum <- paste(mydum,')') a<-table.element(a,mydum) } a<-table.row.end(a) } a<-table.end(a) table.save(a,file='mytable.tab') a<-table.start() a<-table.row.start(a) a<-table.element(a,'Estimated ARIMA Residuals', 1,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'Value', 1,TRUE) a<-table.row.end(a) for (i in (par4*par5+par3):length(resid)) { a<-table.row.start(a) a<-table.element(a,resid[i]) a<-table.row.end(a) } a<-table.end(a) table.save(a,file='mytable1.tab')