我自己用R写了garch拟合的参数估计过程,请教大家哪里有问题

img

这是建模过程:

img

方法一:

lf8 <- function(pa){
  mu <- pa[1]
  ar1 <- pa[2]
  omega <- pa[3]
  alpha <- pa[4]
  beta <- pa[5]
  epsilon <- 0
  ht <- ht_0
  zt <- 0
  l <- 0
  for(i in 3: length(rt)){
    epsilon[i] <- rt[i] - mu -ar1*rt[i-1]
    ht[i] <- omega + alpha * (rt[i-1]-mu-ar1*rt[i-2])^2 + beta * ht[i-1]
    zt[i] <- epsilon[i] / sqrt(ht[i])
    l[i] <- -0.5*log(2*pi) - 0.5*log(ht[i]) - 0.5*(zt[i])^2
  }
  log_sum <- sum(l)
  result <- l
  return(result)
}
#对极大似然函数进行估计
est8 <- maxLik(lf8, start=c(0, 0.2, 0.2, 0, 0.8))
est8

方法二:


lf4 <- function(pa){
  mu <- pa[1]
  ar1 <- pa[2]
  omega <- pa[3]
  alpha <- pa[4]
  beta <- pa[5]
  ht <- ht_0
  l <- 0
  for(i in 3: length(rt)){
    ht[i] <- omega + alpha * (rt[i-1]-mu-ar1*rt[i-2])^2 + beta * ht[i-1]
    l[i] <- -0.5*log(2*pi) - 0.5*log(ht[i]) - 0.5*(rt[i] -mu -ar1*rt[i-1])^2 / ht[i]
  }
  log_sum <- sum(l)
  result <- l
  return(result)
}
#对极大似然函数进行估计
est4 <- maxLik(lf4, start=c(0, 0.2, 0.2, 0, 0.8))
est4

在方法一中,你定义了epsilon和zt向量,但是没有给它们初始值
在方法二中,你定义了ht和log_sum的变量,但是没有在代码中使用它们