[R] how to pick a value from AR equation

Marco Geraci marcodoc75 at yahoo.com
Fri May 26 20:27:17 CEST 2006


Ciao,
you didn't provide lots of details so I'll try to
answer your questions with examples you can find
typing ?PP.test and ?ar. In general, when you run a
command in R you get an output. You just need to
understand what kind of object you get. For the
PP.test

> x <- rnorm(1000)
> pp <- PP.test(x)

The command 'str' is very useful

> str(pp)
List of 5
 $ statistic: Named num -33.2
  ..- attr(*, "names")= chr "Dickey-Fuller"
 $ parameter: Named num 7
  ..- attr(*, "names")= chr "Truncation lag parameter"
 $ p.value  : num 0.01
 $ method   : chr "Phillips-Perron Unit Root Test"
 $ data.name: chr "x"
 - attr(*, "class")= chr "htest"

It's a list. So you can select the element you need,
e.g.

> pp$statistic
Dickey-Fuller 
    -33.22576 

or

> as.numeric(pp$statistic)
[1] -33.22576

so you get rid of the attributes.
Now, same thing for 'ar'.

> fit.ar <- ar(lh)
> str(fit.ar)
List of 14
 $ order       : int 3
 $ ar          : num [1:3]  0.6534 -0.0636 -0.2269
 $ var.pred    : num 0.196
 $ x.mean      : num 2.4
 $ aic         : Named num [1:17] 18.307  0.996  0.538
 0.000  1.490 ...
  ..- attr(*, "names")= chr [1:17] "0" "1" "2" "3" ...
 $ n.used      : int 48
 $ order.max   : num 16
 $ partialacf  : num [1:16, 1, 1]  0.576 -0.223 -0.227
 0.103 -0.076 ...
 $ resid       : Time-Series [1:48] from 1 to 48:    
NA     NA     NA -0.200 -0.169 ...
 $ method      : chr "Yule-Walker"
 $ series      : chr "lh"
 $ frequency   : num 1
 $ call        : language ar(x = lh)
 $ asy.var.coef: num [1:3, 1:3]  0.02156 -0.01518 
0.00482 -0.01518  0.03117 ...
 - attr(*, "class")= chr "ar"
> 

This is for what concerns your questions. I'd like to
give you a hint for a simpler programming code. You
use the first row of your matrix as header
> omega<-array(0, dim=c(N+1,7))
>
omega[1,]<-("series","mean","std","max","min","ar(1)coeff","stdar(1)")

you can simply type

> omega<-array(0, dim=c(N,7))
> colnames(omega) <-
c("series","mean","std","max","min","ar(1)coeff","stdar(1)")
so your matrix has Nx7 empty cells and avoid an
headache trying to adjust the index 'i' in the loop
'for (i in (2:N+1))'.
Also, if you really need to specify the 'id' of the
record
> omega[i,1]<-i-1
you just type before the loop
> omega[,1] <- 1:N
or
> rownames(omega) <- 1:N

In summary,

> omega<-array(0, dim=c(N,7))
> colnames(omega) <-
c("series","mean","std","max","min","ar(1)coeff","stdar(1)")
> omega[,1] <- 1:N
> for (i in 1:N){
>         omega[i,2]<-mean(y[i,])
>         (...)
>         omega[i,6]<- (???????) # see before
>         omega[i,7]<- (???????)} # see before

Finally, if 'y' is a prespecified matrix I suggest you
to take a look at ?rowMeans, ?rowSums, and ?apply in
order to execute 'mean' or 'sd' or any other function
applied to 'y[i,]' at once instead of N times

Hope this helps,
Marco Geraci


--- Lorenzo Bencivelli <lorenzo.bencivelli at unito.it>
wrote:

> ok, i'll try to be more precise.
> both functions i need (ar() and PP.test()) are in
> the package stats.
> what i would like to do:
> 
> omega<-array(0, dim=c(N+1,7))
>
omega[1,]<-("series","mean","std","max","min","ar(1)coeff","stdar(1)")
> for (i in (2:N+1)){
>         omega[i,1]<-i-1
>         omega[i,2]<-mean(y[(i-1),])
>         (...)
>         omega[i,6]<- (???????)
>         omega[i,7]<- (???????)}
> 
> for the PP.test, i would like to do something
> similar. N is the number 
> of the series for which i would like to compute the
> AR(1) model and the 
> unitary root test. thanks in advance. L
> 
> -- 
> 
> 
>
****************************************************************
> credo nella ragione umana, 
> e nella liberta' e nella giustizia che dalla ragione
> scaturiscono. (sciascia)
> 
> ______________________________________________
> 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
>



More information about the R-help mailing list