# |
|
|
|
|
|
|
|
# R VERSION |
|
# |
|
arfima.whittle<-function(series) |
|
{ |
|
# |
|
#
Computes Whittle MLE for ARFIMA(0,d,0) models |
|
# |
|
optim(par = 0.25,
whittle.loglik,gr=NULL,method = "L-BFGS-B", lo = 0., up = 0.499,
series = series)$par |
} |
|
|
# |
|
# AUXILIARY
FUNCTIONS |
|
# |
|
|
whittle.loglik<-function(x,
series) |
|
{ |
|
# |
|
# Whittle Loglikelihood |
|
# |
|
series <- series - mean(series) |
|
a <-
fft(series) |
|
a <-
Mod(a)^2 |
|
n
<- length(series) |
|
a
<- a/(2 * pi * n) |
|
m <- n/2 |
|
# |
|
#Fourier frequencies |
|
# |
|
w <- (2 * pi * (1:m))/n |
|
# |
|
#Spectral Density: |
|
# |
|
b
<- fn.density(w, x) |
|
# |
|
# Calculate sigma^2 |
|
# |
|
sigma2 <- (2 * sum(a[1:m]/b))/n |
|
# |
|
#
Whittle Log-likelihood |
|
# |
|
loglik <- 2 * pi * (sum(log(b)) +
sum(a[1:m]/b)/sigma2) |
|
return(loglik/n + pi * log(sigma2)) |
|
} |
|
|
fn.density<-function(x,
d) |
|
{ |
|
# |
|
# Spectral density of an ARFIMA(0,d,0)
process |
|
# |
|
|
a <- (2 * sin(x/2))^(-2 * d) |
|
|
a <- a/(2 * pi) |
|
|
return(a) |
|
} |
|
|
|
|
|
|
|
|
|