[英]Maximum Likelihood Estimation by hand for normal distribution in R
我是R语言的新手,并在多个论坛中进行了搜索,但到目前为止尚未获得答案。 我们被要求在不使用arima()
命令的情况下针对AR(1)模型在R中进行最大似然估计。 我们应该估计截距α,系数β和方差σ2。 数据应该遵循正态分布,我从中得出对数似然函数。 然后,我尝试使用以下代码对函数进行编程:
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
。 如果您可以看看似然函数是否正确导出,那就太好了。
预先非常感谢您的帮助!
您的nlogL
函数应仅接受单个参数theta
。 因此,您只需删除函数的第二个参数即可解决当前的问题,并且Y
变量将通过nlogL
之外的定义来解决。 另外,您可以按nlogL
保留nlogL
的签名,并通过optim
这样将Y
作为附加参数传递: optim(par0, nlogL, hessian = TRUE, Y=Y)
。 我还要赞同chinsoon12的建议来回顾?optim
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.