2

我是 R 的新手,在几个论坛中进行了搜索,但到目前为止还没有得到答案。我们被要求在 R 中对 AR(1) 模型进行最大似然估计,而不使用该arima()命令。我们应该估计截距 alpha、系数 beta 和方差 sigma2。数据应该遵循正态分布,我从中得出对数似然函数。然后我尝试使用以下代码对该函数进行编程:

Y <- data$V2
nlogL <- function(theta,Y){
  alpha <- theta[1]
  rho <- theta[2]
  sigma2 <- theta[3]
  logl <- -(100/2)*log(2*pi) - (100/2)*log(theta[3]) - (0.5*theta[3])*sum(Y-(theta[1]/(1-theta[2]))**2)


  return(-logl)
}
par0 <- c(0.1,0.1,0.1)
opt <- optim(par0, nlogL, hessian = TRUE)

运行此代码时,我总是收到错误消息:Error in Y - (theta[1]/(1 - theta[2]))^2 : 'Y' is missing. 如果您可以查看似然函数是否正确导出,那就太好了。

非常感谢您的帮助!

4

1 回答 1

0

你的nlogL函数应该只接受一个参数,theta. 因此,您可以简单地通过删除函数的第二个参数来解决您的直接问题,并且该Y变量将通过其在nlogL. 或者,您可以保持原样签名nlogLY作为附加参数传递,如下所示optimoptim(par0, nlogL, hessian = TRUE, Y=Y)另外我会第二次 chinsoon12 的建议进行审查?optim

于 2016-07-20T17:19:13.210 回答