【发布时间】:2014-02-01 12:29:05
【问题描述】:
我有一个数据集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?
【问题讨论】:
-
该错误消息是因为您尝试获取负数的日志。检查您的数据是否与您尝试拟合的分布一致。您还可以重新参数化可能性以避免数值问题。
-
@Hong Ooi,我也是这么想的,但是我检查了 s.sq 和 T 的数据,两者都没有负值。
标签: r