在R中实现最大似然

时间:2014-02-01 12:29:05

标签: r

我有一个数据集here

我希望使用以下似然函数应用最大似然估计:

enter image description here

从数据集文件中,我有三个变量的列向量,rho,(s_x *)^ 2和T.总共N = 3295个观测值。我想针对两个变量最大化上述似然函数:mu和sigma ^ 2。

通过记录上述可能性,我们有以下对数可能性:

enter image description here

如何找到mu和sigma ^ 2的MLE?我尝试过以下方法,但我不确定它是否正确。

假设我将数据导入名为rhos.sqT的R,然后以下是我的代码:

####################################

N = 3295

negloglike.f<-function(theta){

  mu<-theta[1]
  sigsq<-theta[2]

  negloglike<- 0
  negloglike<- -(-N/2*log(2*pi) - sum(1/2*log(sigsq+4/(s.sq*T))+1/(2*(sigsq+4/(s.sq*T)))*(rho-mu)^2))  

  negloglike
}

## optimisation  ##
MLE_obj<-optim(c(30,500),negloglike.f,method="BFGS", hessian=TRUE, control = list(maxit = 30000))

MLE_obj

#################################

我担心我的代码不正确,或者这不是正确的方法,因为有时我收到警告信息,例如:

Warning message:
In log(sigsq + 4/(s.sq * T)) : NaNs produced

我的代码是否正确?或者还有另一种方法可以找到MLE吗?

1 个答案:

答案 0 :(得分:0)

它适用于我,并提供以下结果:

$par
[1]  10.67069 110.65132

$value
[1] 15960.24

$counts
function gradient 
      51       38 

$convergence
[1] 0

$message
NULL

$hessian
           [,1]        [,2]
[1,] 17.5756300 -0.28990189
[2,] -0.2899019  0.02188517

你可能在阅读数据时犯了一个错误。请注意,变量s.sq在excel表中称为s_sq。 我使用read.csv使用选项sep=";", dec=","

阅读数据