我是R的新手,在几个论坛上搜索过,但到目前为止还没有得到答案。我们被要求在不使用arima()
命令的情况下在R中对AR(1)模型进行最大似然估计。我们应该估计截距α,系数β和方差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
。
如果您可以查看似然函数是否正确导出,那将会很棒。
非常感谢您的帮助!
答案 0 :(得分:0)
您的nlogL
函数应该只接受一个参数theta
。因此,您可以通过删除函数的第二个参数来解决您的直接问题,并且Y
变量将通过nlogL
之外的定义来解析。或者,您可以将nlogL
的签名保持原样,并通过Y
将optim
作为附加参数传递,如下所示:optim(par0, nlogL, hessian = TRUE, Y=Y)
。此外,我还会提出第{chinsoon12条建议'来审核?optim
。