我有一个数据集here。
我希望使用以下似然函数应用最大似然估计:
从数据集文件中,我有三个变量的列向量,rho,(s_x *)^ 2和T.总共N = 3295个观测值。我想针对两个变量最大化上述似然函数:mu和sigma ^ 2。
通过记录上述可能性,我们有以下对数可能性:
如何找到mu和sigma ^ 2的MLE?我尝试过以下方法,但我不确定它是否正确。
假设我将数据导入名为rho
,s.sq
和T
的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吗?
答案 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=","