> 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
----- Original Message ----- From: "Duncan Murdoch" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <r-devel@stat.math.ethz.ch>; <[EMAIL PROTECTED]> Sent: Monday, November 13, 2006 11:22 AM Subject: Re: [Rd] bug in acf (PR#9360) > On 11/13/2006 10:30 AM, [EMAIL PROTECTED] 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