Dear R-users,

I am trying to translate a matlab code for calculating the Local Whittle
estimator in time series with long memory originally written by Shimotsu and
available free in his webpage (
http://www.econ.queensu.ca/pub/faculty/shimotsu/ )

The Matlab code is

=======================================================================================

function[r] = whittle(d,x,m)
% WHITTLE.M computes the local Whittle likelihood, which uses
% the periodogram of data x accoding to the definition
%
%        Ixx(k) = w(x)*conj(w(x)),
%
%    where
%                                  N
%        w(k) =  (2*pi*n)^(-1/2)  sum  x(t)*exp(i*2*pi*(k-1)*t/N), 1 <= k <=
N.
%                                   t=1
%
%                                           Katsumi Shimotsu, April 1999
%
%         INPUT    x: data (n*1 vector)
%                m: truncation number
%                d: parameter value
%____________________________________________________________________________

[n,nn] = size(x);
t = (0:1:n-1)';
lambda = 2*pi*t/n;
wx = (2*pi*n)^(-1/2)*conj(fft(conj(x))).*exp(i*lambda);
lambda = lambda(2:m+1);
wx = wx(2:m+1);
Ix = wx.*conj(wx);

g = mean((lambda.^(2*d)).*Ix);
r = log(g) - 2*d*mean(log(lambda));

=================================================================================

and when you want to use it, you just call the function, and you minimize
it. (In other words you minimize the "r" expression on the last line above.)



I have done a lot efforts to translate it and I have ended up with the
following :


=======================================================================================

local.whittle <- function(d, x, m)
{
n <- length(x)
t <- matrix(c(0:n1), nrow = n, ncol=1)
lambda <- (2*pi*t)/n
wx <- (2*pi*n)^(-1/2)*Conj(fft( Conj(x)))*exp(1i*lambda)
M1 <- m+1
lambda2 <- lambda[2:M1]
wx2 <- wx[2:M1]
ix <- wx2*Conj(wx2)
g <- mean((lambda2^(2*d))*ix)
r <- log(mean((lambda2^(2*d))*ix)) - 2*d*mean(log(lambda2))
}

=======================================================================================

which seems to run, but when I am trying to call the function and minimize
it using:


e <- optimize(local.whittle, x, m, c(-0.5, 0.5))
e1 <- e$minimum


I get the following error and I cannot find the reason why.


=======================================================================================

Error in optimize(lw, x, m, c(-0.5, 0.5)) :
  invalid function value in 'optimize'
In addition: Warning messages:
1: In 2:M1 : numerical expression has 2 elements: only the first used
2: In 2:M1 : numerical expression has 2 elements: only the first used

=======================================================================================


Please help me.

thanks. fotis.


P.S.: as far as for a long memory estimator in time series introduced by
Robinson (1995) that I was asking some days ago, I have written a code. Send
me an e-mail if you need it, till I include it  in some package.

-- 
fp

	[[alternative HTML version deleted]]

