sigma<-1e-02 #1.93e-04 1.039685e+01 5.994720e-07
mu<-.01 #5.94e-06
eta<-1e-03
T<-1#外循环
############## #############################
t<-c(0,100,400,1000,2000) #seq(0,1500,by=50)
lt<-length(t) ##
lamda<-rep(0,lt-1)
for(i in 2:length(t)){
lamda[i-1]<-t[i]-t[i-1]
}
sn<-5#######总共的样本数,i=5
sN<-sn*(lt-1) ##样本点数,j=4
###对数似然函数
logl1<-function(params){###eta,mu,sigma,####
logf<--sN*log(2*pi)/2-sN*log(params[3])-
1/2*sum(log(params[1]+lamda))*sn-
(sum(y1^2/(2*(params[1]+lamda)))-params[2]*sum(y1*lamda/(params[1]+lamda))+
params[2]^2*sum(lamda^2/(2*(params[1]+lamda)))*sn)/params[3]^2
return(-logf)
}
paramsmle<-matrix(0,nrow = T,ncol = 3)
for(k in 1:T){
y1<-matrix(0,ncol = sn[1],nrow = lt-1)
for(j in 1:sn){
for (i in 1:(lt-1)) {
y1[i,j]<-rnorm(1, mu*lamda[i], sigma*sqrt(eta+lamda[i]))
}
}
##sampling delta y2
geyser.res<-nlminb(c(0.0001,0.0001,0.0001),logl1,hessian=TURE,
lower=c(1e-20,1e-10,1e-10),
upper=c(Inf,Inf,Inf))
paramsmle[k,]<-c(geyser.res$par)
}
这是我写的函数,在做似然估计的时候nlminb函数运行的结果是下面这个
$par
[1] 1.000000e-20 9.985313e-03 5.000256e-01
$objective
[1] 63.55516
$convergence
[1] 0
$iterations
[1] 5
$evaluations
function gradient
9 25
$message
[1] "relative convergence (4)"
$par这里,第一个参数就是我设置的最小值,也就意味着第一个参数没有估出来。
请教大神如何解决?
下面是这个编程的函数。