bug in arma.sim (PR#322)

mgri@hal.stat.unipd.it mgri@hal.stat.unipd.it
Sun, 14 Nov 1999 18:17:09 +0100 (MET)


Dear Sir,

I think I found a bug in the function arma.sim, which is defined in
the help page of the function filter:

arma.sim <- function(n, ar = NULL, ma = NULL, sigma = 1.0)
{
    x <- ts(rnorm(n+100, 0, sigma^2), start = -99)
    if(length(ma)) x <- filter(x, ma, sides=1)
    if(length(ar)) x <- filter(x, ar, method="recursive")
    as.ts(x[-(1:100)])
}

I am using R version 0.65.0 under Linux. If I understand correctly the
way the function arma.sim is supposed to work, the instruction

arma.sim(n=200, ar=0.5, ma=0.5, sigma=1.2)

should generate values from an ARMA(1,1) model. However, the values
generated seem to come from an AR(1) model. I think this is due to the
instruction x <- filter(x, ma, sides=1) in the definition of
arma.sim, which doesn't produce the desired result. The function
defined below gives the output that my understanding of the
procedures involved would make me expect.

arma.sim <- function(n, ar = NULL, ma = NULL, sigma = 1.0)
{  
    x <- ts(rnorm(n+100, 0, sigma^2), start = -99)
    if(length(ma)) x <- filter(x, c(1,ma), sides=1)
    if(length(ar)) x <- filter(x, ar, method="recursive")
    as.ts(x[-(1:100)])
}


I simply changed

x <- filter(x, ma, sides=1)

to

x <- filter(x, c(1,ma), sides=1)


Also, I wonder whether it would be more appropriate to write

rnorm(n+100, 0, sigma)

instead of

rnorm(n+100, 0, sigma^2)

since rnorm requires the standard deviation rather than the variance.


Best regards,

Matteo Grigoletto
mgri@hal.stat.unipd.it

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._