Re: [R] how to pick a value from AR equation

From: Marco Geraci <marcodoc75_at_yahoo.com>
Date: Sat 27 May 2006 - 04:27:17 EST


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"

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

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

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


R-help@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 Received on Sat May 27 04:40:14 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 27 May 2006 - 06:10:29 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.