尝试用极大似然估计做数值运算来估计三个未知参数,在设置相同初始值的情况下,使用nlminb和optim得出的估计值差异明显,而且使用不同的数据,optim的估计值不会发生变化,似乎仅与设定的初始值有关。帮助文件看起来非常晦涩,两者不知道如何取舍,向各位大神求教!先谢过了
- setwd("") #设定路径
- library(foreign)
- Data<-read.dta("testt3.dta")
- attach(Data) # Use variables independentaly
- LL<- function(x,data)
- {
- u<- x[1]
- w<- x[2]
- k<- x[3]
- inner.sum<-0
- outer.sum<-0
- extra.sum<-0
- for (a in 2:229) {
- for (b in 1:228) {
- if (data[b] >= data[a]) {
- next
- } else {
- inner.sum <- inner.sum + w * exp(w * (data[b] - data[a]))
- extra.sum <- extra.sum + exp(w * data[b])-exp(w * (data[b] - 3572))
- }
- }
- k0_inner.sum <- k * inner.sum
- log_inner.sum <- log(u + k0_inner.sum)
- outer.sum <- outer.sum + log_inner.sum
- k0_extra.sum <- k * extra.sum
- }
- c<- outer.sum-u*3572-k0_extra.sum
- return(-c)
- }
- Data.res<- nlminb(c(0.05,0.05,0.05) , LL , data = dday) #nlminb的极大似然估计
- Data.res$par
- Data.res<- optim(c(0.05,0.05,0.05) , LL , data = dday) #optim的极大似然估计
- Data.res$par
复制代码附件是一组样本数据,提供给大神测试,多谢了!!!