繁体   English   中英

R中正态分布的手工最大似然估计

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM