From ru|pb@rr@d@@ @end|ng |rom @@po@pt  Tue Feb  4 16:36:30 2020
From: ru|pb@rr@d@@ @end|ng |rom @@po@pt (Rui Barradas)
Date: Tue, 4 Feb 2020 15:36:30 +0000
Subject: [Rd] Stroring and extracting AICs from an ARIMA model using a
 nested loop
In-Reply-To: <5714922.446597.1580822426141@mail.yahoo.com>
References: <1120275228.1123321.1580710981461.ref@mail.yahoo.com>
 <1120275228.1123321.1580710981461@mail.yahoo.com>
 <6edaef9e-cd53-a81e-d1a4-4138f9de4134@sapo.pt>
 <5714922.446597.1580822426141@mail.yahoo.com>
Message-ID: <555a3b0a-261f-6bbd-1f60-a075de9c7b88@sapo.pt>

Hello,

Don't worry, we've seen worst questions :).
Inline.

?s 13:20 de 04/02/20, ismael ismael escreveu:
> I am now aware that I should not post this type of questions on this 
> group. However, I would like to have some clarifications related to the 
> response you've?already provided. The code you provided yields accurate 
> results, however I still have issues grasping the loop process in case 1 
> & 2.
> 
> In case 1,?the use of?"p+1" and "q+1" is still blurry to me? 

1. R indexes starting from 1, both your orders p and q are 0:3. So to 
assign the results to the results matrix, add 1 and get indices 1:4.
You could also set the row and column names after, to make it more clear:

dimnames(storage1) <- list(paste0("p", 0:3), paste0("q", 0:3))

2. 0L is an integer, just 0 is a floating-point corresponding to the C 
language double.

class(0L)   # "integer"
class(0)    # "numeric"

typeof(0L)  # "integer"
typeof(0)   # "double"

Indices are integers, so I used integers and added 1L every iteration 
through the inner loop.

This also means that in point 1. I should have indexed the matrix with p 
+ 1L and q + 1L, see the output of

class(0:3)


Hope this helps,

Rui Barradas

Likewise
> "0L" and " i + 1L" in case 2.
> 
> Can you please provide explanations on the loop mechanisms you've used.
> 
> 
> 
> 
> 
> Le lundi 3 f?vrier 2020 ? 03:47:20 UTC?6, Rui Barradas 
> <ruipbarradas at sapo.pt> a ?crit :
> 
> 
> Hello,
> 
> You can solve the problem in two different ways.
> 
> 1. Redefine storage1 as a matrix and extract the aic *in* the loop.
> 
> storage1 <- matrix(0, 4, 4)
> for(p in 0:3){
>  ? for(q in 0:3){
>  ? ? storage1[p + 1, q + 1] <- arima(etc)$aic
>  ? }
> }
> 
> 
> 2. define storage1 as a list.
> 
> storage1 <- vector("list", 16)
> i <- 0L
> for(p in 0:3){
>  ? for(q in 0:3){
>  ? ? i <- i + 1L
>  ? ? storage1[[i]] <- arima(etc)
>  ? }
> }
> 
> lapply(storage1, '[[', "aic")? # get the aic's.
> 
> Maybe sapply is better it will return a vector.
> 
> 
> Hope this helps,
> 
> Rui Barradas
> 
> 
> 
> 
> ?s 06:23 de 03/02/20, ismael ismael via R-devel escreveu:
>  > Hello
>  > I am trying to extract AICs from an ARIMA estimation with different
>  > combinations of p & q ( p =0,1,2,3
>  > and q=0,1.2,3). I have tried using the following code unsucessfully. Can
>  > anyone help?
>  >
>  > code:
>  > storage1 <- numeric(16)
>  > for (p in 0:3){
>  >
>  >? ? ? for (q in 0:3){
>  >
>  >? ? ? storage1[p]? <- arima(x,order=c(p,0,q), method="ML")}
>  > }
>  > storage1$aic
> 
>  >
>  > ??? [[alternative HTML version deleted]]
>  >
>  > ______________________________________________
>  > R-devel at r-project.org <mailto:R-devel at r-project.org> mailing list
>  > https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>  >



[Rd] Stroring and extracting AICs from an ARIMA model using a nested loop
Rui Barradas