[R] question about ar1 time series

Josué Polanco jomopo at gmail.com
Mon Jul 16 15:50:41 CEST 2007


Hello everybody,

I recently wrote a "program" that to generate AR1 time series, here the code:


#By Jomopo. Junio-2007, Leioa, Vizcaya
#This program to create the AR1 syntetic series (one by one)
#Where the mean is zero, but the variance of the serie AR1 and
#the coef. of AR1 are be changed. If var serie AR1 = 1 then is standarized!
#Final version for AR1 time series program
#Mon Jul 16 11:58:03 CEST 2007 Checked again in R-prompt, and it's OK!

#Creating the sintetic AR1 series... where the "white-noise"
#has a mean = 0, and the var = sigmaz_c = stand_dev^2 is whatever value,
#if sigmaz_c = 1 then this "white-noise" is a "Gaussian-noise."
#rho1 (or alpha in another text-books ;-)) < 1 (in fact 0 < rho1 < 1) so that
#the system can be stationary.
#Where var_serie is the variance of the serie

cat("\n Hello, this is creat_AR1_synt_ser.R. \n These are the input
parameters: synt_series(ar1_length, rho1, ...), where rho1 is the
correlat. coef.\n")


ar1 <- function(x, rho1, af)
{
   return(x*rho1 + runif(1, -af, af))
}

#Spin-up for the AR1 series. For this case is enough with this amount
spinup <- function(x0, rho1, af)
{
   xt <- x0
   for (i in 1:100) {
     xtp1 <- ar1(xt, rho1, af)
     xt   <- xtp1
   }
   return(xt)
}

#Wherein "ar1_length" is the number of data in AR1 series
#rho1 is a correlation coef.
#sigmaz_c is optional
synt_series <- function(ar1_length, rho1, var_serie)
{
   if( (var_serie <= 0) || rho1 <= -1 || rho1 >= 1 )
     stop("The variance of the serie should be > 0, or the rho1
parameter should be between (-1, 1) for that the serie can be
stationary, be careful with this, bye. \n")

   syntdata    <- rep(0, ar1_length)
#af = adjustement factor, i.e. for that the var of random numbers =
var of white noise (check the manual of runif)
   af          <- sqrt( 3 * var_serie * (1 - rho1) * (1 + rho1) )
   x0          <- runif(1, -af, af)
   syntdata[1] <- spinup(x0, rho1, af)

   for (i in 2:ar1_length) {
     syntdata[i]  <- ar1(syntdata[i - 1], rho1, af)
   }
   return(syntdata)
}


I would like some suggestions and hints.

Thanks a lot for your help!

-- 
Josué Mosés Polanco Martínez
Correo-e alternativo jomopo at linuxmail.org
----
It is a wasted day unless you have learned something new and made
someone smile -Mark Weingartz.



More information about the R-help mailing list