Re: [Rd] bug in acf (PR#9360)

From: A.I. McLeod <aim_at_stats.uwo.ca>
Date: Mon 13 Nov 2006 - 19:24:45 GMT

> I don't think that's a reasonable expectation.  You've got an empty sum 
> in the formula for the lag 1 autocovariance:
> 
> sum_{i=1}^0 phi_i phi_{i+1}
> 
> R is assuming that's not what you meant and is reporting it as an error. 
>  If it gave you any value, it should be zero, not phi^2.
> 
********************************************
I agree the empty sum which is the lag 1 autocovariance should be zero but this is the SECOND term in $acf output. For the first term,
1) if demean=F, it is variance which is phi^2 as I suggested 2) if demean=T, it is the variance/variance = 0/0 which I said should best be 1
> On 11/13/2006 10:30 AM, aimcleod@uwo.ca wrote:

>> 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.
> 
> I'd say it's a documentation bug, rather than a code 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.
> 
> What happens is that lag.max is reduced to length(z)-1, which is zero in 
> your case.  This change should be mentioned in the documentation.
> 

>> (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.
> 
> I don't think that's a reasonable expectation.  You've got an empty sum 
> in the formula for the lag 1 autocovariance:
> 
> sum_{i=1}^0 phi_i phi_{i+1}
> 
> R is assuming that's not what you meant and is reporting it as an error. 
>  If it gave you any value, it should be zero, not phi^2.
> 
> Duncan Murdoch
> 

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


R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Nov 14 15:06:33 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 Tue 14 Nov 2006 - 12:30:38 GMT.

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