El 28/09/11 02:06, Allin Cottrell escribió:
>>
>> Now, here is my issue. I would like to write a library to
>> basically take time series data as input, try various ARIMA models
>> and pick the most appropriate one "automatically" without human
>> input or intervention. I understand this is fairly novice way to
>> looking at the forecasting, but my application's use-case is
>> simple enough to do it this way.
>>
>> Now, has anyone tried this using GRETL where multiple models are
>> tried and results (fstats output) are compared to pick one over
>> the other? If so is there a GRETL script out there that can be
>> shared?
>
> I'm not aware of any such script, although that doesn't mean that
> such a script doesn't exist somewhere.
>
> However, my understanding is that TRAMO -- which is available in a
> form compatible with gretl, see for example
> http://gretl.sourceforge.net/win32/ -- does this sort of thing
> (automatic ARIMA model selection). But (I may be wrong) TRAMO
> probably does not handle intra-day "seasonality"; I think it's
> mostly oriented to monthly or quarterly data.
>
> Maybe Ignacio Diaz-Emparanza, our resident expert on ARIMA models,
> could comment?
>
> Allin Cottrell


I have worked on replicating the automatic modelling method of TRAMO 
natively in gretl(hansl) and also on the procedure of Mélard and 
Pasteels [International journal of Forecasting 16 (2000) 497-508] but 
they are not mature enough for publishing yet.

As already mentioned by Remigius, in R you may use the package 
'forecast'. And remember that most of the R code may be run from inside 
a hansl script. In this case this could be: (fist of all you have to 
install.packages("forecast") from inside R)

<hansl>
#This function calls to the function auto.arima()
#in the library "forecast" of R, to automatically identify
#an arima model for the indicated series.
#
function matrix Rautoarima(series myseries, series *uhat[null])
     catch smpl myseries --contiguous
     if $error
         print "Error: May be NAs inside the series"
     endif
     sx = argname(myseries)
     ##### Begining of R code
     foreign language=R --send-data --quiet
         library(forecast)
         y <- gretldata[, "myseries"]
         arimafit <- auto.arima(as.ts(y))
         summary(arimafit)
         orders <- as.matrix(arimafit$arma)
         mbic<-as.matrix(arimafit$bic)
         uhat <- as.ts(arimafit$residuals)
         gretl.export(orders)
         gretl.export(uhat)
         gretl.export(mbic)
     end foreign
     ###### End of R code
     outfile --write null
     append @dotdir/uhat.csv
     orders = mread("@dotdir/orders.mat")
     mmbic  =  mread("@dotdir/mbic.mat")
     scalar p = orders[1]
     scalar d = orders[6]
     scalar q = orders[2]
     scalar P = orders[3]
     scalar D = orders[7]
     scalar Q = orders[4]
     matrix morder = { p, d, q, P, D, Q, mmbic }
     outfile --close
     print "+++++++++++++++++++++++++++++++++++++++++++++"
     printf "The model identified for the series %s is:\n", sx
     printf "ARIMA(%1.0f, %1.0f, %1.0f)X(%1.0f, %1.0f, %1.0f) with 
BIC=%f\n", p, d, q, P, D, Q, mmbic
     print "+++++++++++++++++++++++++++++++++++++++++++++"
     return morder
end function
# ------------ main -------------------------
open bjg.gdt
Y=diff(lg)
Y=sdiff(Y)
series ruhat
matrix X = Rautoarima(Y, &ruhat)
</hansl>





-- 
Ignacio Diaz-Emparanza
DEPARTAMENTO DE ECONOMÍA APLICADA III (ECONOMETRÍA Y ESTADÍSTICA)
UPV/EHU Avda. Lehendakari Aguirre, 83 | 48015 BILBAO
T.: +34 946013732 | F.: +34 946013754
www.ea3.ehu.es




Reply via email to