From aimcleod at uwo.ca  Mon Nov 13 16:30:14 2006
From: aimcleod at uwo.ca (aimcleod at uwo.ca)
Date: Mon, 13 Nov 2006 16:30:14 +0100 (CET)
Subject: [Rd] bug in acf (PR#9360)
Message-ID: <20061113153014.53F2E572ED@slim.kubism.ku.dk>

Full_Name: Ian McLeod
Version: 2.3.1
OS: Windows
Submission from: (NULL) (129.100.76.136)


> There is a simple bug in acf as shown below:
> 
> z <- 1
> acf(z,lag.max=1,plot=FALSE)
> Error in acf(z, lag.max = 1, plot = FALSE) :
>        'lag.max' must be at least 1
> 
This is certainly a bug.

There are two problems:

(i) the error message is wrong since lag.max is set to 1.  Perhaps, if the
function acf can not be used for in this situaiton, a different error message
would be more appropriate.  I understand why this might be done but I don't
think it is the best approach.

(ii) Please look at the function GetB which is attached.  This is part a
computation for a fast algorithm for exact mle of mean.  Usually phi here are
the coefficients from a high order AR but when I tried for AR(1) I got the error
message.  So the workaround is given.  Notice that I use: 

p*as.vector(acf(phi,lag.max=p,type="covariance",demean=FALSE,plot=FALSE)$acf)

so what I expect to get when p=length(phi)=1 is just phi^2.  This is what
happens in Mathematica with ListCorrelate[{phi},{phi}].  When you have
acf="correlation" and demean=TRUE then one gets 0/0 which should be defined as 1
in this situation.

Probably if the R authors just want to use acf for data analysis they may simply
choose to require length(x)>1 in acf(x,...) although I don't see the harm in my
suggestion either.

Ian McLeod



[Rd] bug in acf (PR#9360)
aimcleod at uwo.ca