Hello,
I have a several time series, which I would like to check for their best
fitted Arima model (I am checking for the lowest aic value).
Which lets me raise two questions:
1) is there are more efficient way, than using 6 for-loops?
2) sometimes the system cannot calculate with given parameters - is
there a more efficient solution than I found?
I hope, you can help me to make this calculation quicker since I have to
run this function 450 times...
Thank you very much in advance,
Markus
arima.estim <- function(TS) {
best.model <- arima(TS, order = c(1, 0, 0), seasonal list(order = c(0, 0,
0), period = frequency(TS)) )
# Start value
# I continue with brute force- p, q, r, s are nested from 0 to 3 and i
and j are nested from 0 to 2. p and q are not both allowed to be 0.
for (p in 0:3){
for( q in 0:3){
if(p==0 && q==0) {}
else {
for(r in 0:3) {
for(s in 0:3) {
for (j in 0:2) {
for(i in 0:2) {
# test, if series works
if(inherits(try(arima(TS, order = c(p, i, q), seasonal = list(order
= c(r, j, s), period = frequency(TS)) ), TRUE), 'try-error')){
print(c(p,i,q))} #shows, which parameters didn't work -> will be
removed by
else {
tmp <- arima(TS, order = c(p, i, q), seasonal list(order = c(r, j,
s), period = frequency(TS))) # calculate again
:(
if(best.model$aic > tmp$aic)
{
best.model <- tmp
}
}
}
}
}
} } } }
best.model}
[[alternative HTML version deleted]]
I just got 166 hits from RSiteSearch("best fit arima") and 86 from
RSiteSearch("best fit arima"). Have you tried that?
If that does not get you what you want, I might try 'expand.grid'
plus some hand massage if necessary to create the list of alternative
models I wanted to consider. Then I might add a column "AIC" of NAs
to
that using "cbind" to create a data.frame with all the alternatives
with
the result. Then I might start with something like "fit0 <- arima(lh,
order = c(0,0,0))" and use 'update(fit0, order=...)' to evaluate
each
one, storing only the AIC. Then 'which(aic==max(aic))' would identify
the best fitting alternative(s). If you haven't already, I suggest you
review Venables and Ripley (2002) Modern Applied Statistics with S, 4th
ed. (Springer) on 'expand.grid', 'cbind', and 'update';
if you don't
already have this book, I highly recommend it.
Hope this helps.
Spencer Graves
Schweitzer, Markus wrote:> Hello,
>
> I have a several time series, which I would like to check for their best
> fitted Arima model (I am checking for the lowest aic value).
> Which lets me raise two questions:
>
> 1) is there are more efficient way, than using 6 for-loops?
> 2) sometimes the system cannot calculate with given parameters - is
> there a more efficient solution than I found?
>
> I hope, you can help me to make this calculation quicker since I have to
> run this function 450 times...
> Thank you very much in advance,
>
> Markus
>
>
> arima.estim <- function(TS) {
> best.model <- arima(TS, order = c(1, 0, 0), seasonal > list(order =
c(0, 0, 0), period = frequency(TS)) )
>
> # Start value
> # I continue with brute force- p, q, r, s are nested from 0 to 3 and i
> and j are nested from 0 to 2. p and q are not both allowed to be 0.
>
> for (p in 0:3){
> for( q in 0:3){
> if(p==0 && q==0) {}
> else {
> for(r in 0:3) {
> for(s in 0:3) {
> for (j in 0:2) {
> for(i in 0:2) {
>
> # test, if series works
> if(inherits(try(arima(TS, order = c(p, i, q), seasonal = list(order
> = c(r, j, s), period = frequency(TS)) ), TRUE), 'try-error')){
>
> print(c(p,i,q))} #shows, which parameters didn't work -> will be
> removed by
>
> else {
> tmp <- arima(TS, order = c(p, i, q), seasonal > list(order
= c(r, j, s), period = frequency(TS))) # calculate again
> :(
>
> if(best.model$aic > tmp$aic)
> {
> best.model <- tmp
> }
> }
> }
> }
> }
> } } } }
>
> best.model}
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
Hi, to create best ARIMA model, I use the package forecast. You can search it in the following URL: http://www-personal.buseco.monash.edu.au/~hyndman/Rlibrary/forecast/ You should use the method "best.arima" further information, here: http://www-personal.buseco.monash.edu.au/~hyndman/Rlibrary/forecast/forecast/best.arima.html Best Regards. Schweitzer, Markus wrote:> > Hello, > > I have a several time series, which I would like to check for their best > fitted Arima model (I am checking for the lowest aic value). > Which lets me raise two questions: > > 1) is there are more efficient way, than using 6 for-loops? > 2) sometimes the system cannot calculate with given parameters - is > there a more efficient solution than I found? > > I hope, you can help me to make this calculation quicker since I have to > run this function 450 times... > Thank you very much in advance, > > Markus > > > arima.estim <- function(TS) { > best.model <- arima(TS, order = c(1, 0, 0), seasonal > list(order = c(0, 0, 0), period = frequency(TS)) ) > > # Start value > # I continue with brute force- p, q, r, s are nested from 0 to 3 and i > and j are nested from 0 to 2. p and q are not both allowed to be 0. > > for (p in 0:3){ > for( q in 0:3){ > if(p==0 && q==0) {} > else { > for(r in 0:3) { > for(s in 0:3) { > for (j in 0:2) { > for(i in 0:2) { > > # test, if series works > if(inherits(try(arima(TS, order = c(p, i, q), seasonal = list(order > = c(r, j, s), period = frequency(TS)) ), TRUE), 'try-error')){ > > print(c(p,i,q))} #shows, which parameters didn't work -> will be > removed by > > else { > tmp <- arima(TS, order = c(p, i, q), seasonal > list(order = c(r, j, s), period = frequency(TS))) # calculate again > :( > > if(best.model$aic > tmp$aic) > { > best.model <- tmp > } > } > } > } > } > } } } } > > best.model} > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help en stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > >-- View this message in context: http://www.nabble.com/Search-for-best-ARIMA-model-tf2156910.html#a6243692 Sent from the R help forum at Nabble.com.