[R-br] Ajuda - Arima Sazonal

Vinicius Macedo Magalhães vinicius.magalhaes em coppead.ufrj.br
Sexta Março 30 13:31:00 BRT 2012


Fala, galera. Primeira vez usando este fórum.

Tenho tido problemas para rodar meu código para previsão sazonal via ARIMA.

Abaixo segue parte do código.


>s.ts
        Jan  Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2004 118 143 169 158 143 135 135 140 135 125 120 120
2005 143 158 180 180 150 150 153 148 150 145 145 143
2006 165 180 190 168 163 163 168 175 180 160 155 150
2007 152 163 185 163 158 175 175 178 168 168 160 160
2008 155 170 195 195 195 185 185 165 165 153 154 159

##### Início de ARIMA #####
linhaX <- 3
dados  <- matrix()
nome   <- names(db)
  i=4
   get.best.arima <- function (x.ts, maxord=c(1,1,1,1,1,1)) {
    best.aic <- 1e8
    n <- length(x.ts)
    for (p in 0:maxord[1]) for (d in 0:maxord[2]) for (q in 0:maxord[3])
        for (P in 0:maxord[4]) for (D in 0:maxord[5]) for (Q in 0:maxord[6])
      {
   fit <- arima(x.ts,
order=c(p,d,q),seasonal=list(order=c(P,D,Q),period=12), method = "CSS")
   fit.aic <- -2 * fit$loglik + (log(n) + 1) * length(fit$coef)
    if (fit.aic < best.aic) {

     best.aic <- fit.aic
     best.fit <- fit
     best.model <- c(p,d,q,P,D,Q)
    }
  }
  list(best.aic,best.fit,best.model)
 }


   s.ts <- ts(db[,i],start=2004, fre=12)
   best.arima.ss <- get.best.arima(log(s.ts),maxord = c(2,2,2,2,2,2))
   best.fit.ss <- best.arima.ss[[2]]
   best.arima.ss[[3]]
   pdf(paste("AR.", i-4, ".pdf", sep=""),width=7,height=5)
   ts.plot( cbind( window(s.ts,
start=2004),exp(predict(best.fit.ss,24)$pred)),col=c("black","green"))
   #par(new=TRUE)
   #ts.plot(s.ts,best.fit.ss,col=c("black","red"))
   legend("bottomright",c("Real","Previsão_Passado","Previsão_Futuro"),col=1:3,lty=1,cex=0.7,merge
= TRUE,bg = 'gray90')
   dev.off()

    report<-function(Actual,Forecast,Net,R2) {
     result <- new.env()
     if (R2==0)
R2<-1-(sum((Forecast-Actual)^2)/sum((Actual-mean(Actual))^2))
     result$Rsquare<-R2
     result$MAPE    <-
100*(sum(abs((Actual-Forecast))/Actual))/nrow(Forecast) ## Mean Absolute
Percent Error
     result$CFE     <- sum((Actual-Forecast))                         ##
Cumulative Forecast Error
     result$ME      <- result$CFE/nrow(Forecast)                 ## Mean
Error
     result$MSE     <-
sum((Actual-Forecast)^2)/nrow(Forecast)               ## Mean Squared Error
     result$RMSE    <- sqrt(result$MSE)                   ## Root Mean
Squared Error
     result$MAD     <- (sum(abs(Actual-Forecast))/nrow(Forecast))
## Mean Absolute Deviation
     result$SUMMARY <- summary(Net)
     return(result)
    }  ## Fim da função report
    pred.past<- db[,colY]
    previsao <- predict(best.fit.ss)
    forecast <- as.matrix(pred.past[1:length(pred.past)])
    reportAR <- report(db[,colY],forecast,best.fit.ss,0)
    dados <-
rbind(dados,"Produto:"=nome[colY],R2=reportAR$Rsquare,MAPE=reportAR$MAPE,
    CFE=reportAR$CFE,ME=reportAR$ME,MSE=reportAR$MSE,RMSE=reportAR$RMSE,MAD=reportAR$MAD)
    write.table(dados,sep=",",file="ReportAR.csv",)

  } ## Fim do for
   return(dados)

##### Fim de ARIMA #####


-- 
Att.,

Vinicius Macedo Magalhães
(21) 9584-1533
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120330/92eae79d/attachment.html>


Mais detalhes sobre a lista de discussão R-br