[R-br] Ajuda - Arima Sazonal

Paulo Justiniano paulojus em leg.ufpr.br
Sexta Março 30 19:38:42 BRT 2012


Como está começando, segue aqui uma sugestao valiosa:
leia o "posting guide" da lista

em resumo, como diz um mui solicito participante da lista: lembre de 
"ajudar a quem quer te ajudar"

"Tenho tido problemas" é muito vago
e seu codigo muito longo, provavelmente com trechos desnecessários para a 
postagem.

Entenda o que é um CMR (código mínimo repreduzível).

Seja claro, minimo e lembre sempre que quem se dispoe a ler e ajudar está 
usando tempo para isto, portanto use o seu também para fazer uma 
postagem objetiva

Boas postagens!

P.J.


On Fri, 30 Mar 2012, Vinicius Macedo Magalhães wrote:

> 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
> 
> 
>


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