作者cravingtrue (Mathisfun)
看板Statistics
標題Re: [問題] R的MLE
時間Sat Jan 5 23:53:11 2008
temp<-rweibull(12,2,3)#產生12個隨機值從weibull(2,3)
weib.para.star<-function(x,r)#參數初值函數
{
nn<-length(x)#幾個隨機值
ifelse(r>nn,rr<-nn,rr<-r)#確定產生的是12個隨機值
x.sort<-sort(x)#排序
x.rr<-x.sort[1:rr]#取前12個,如果產生的隨機值不是12個的話
#這個我不太懂,但從這開始目的好像是先線性化,在推回參數值
x.qq<-log(-log(1-(c(1:rr)-0.5)/nn))
#plot(x.qq,log(x.rr),xlab="log(-log())", ylab="order statistics")
x.lm<-lm(log(x.rr)~x.qq)
lambda<-exp(-x.lm$coef[1])
beta<-1/x.lm$coef[2]
para<-c(lambda,beta)
return(para)
}
weib.lik<-function(para,x,r)#概似函數
{
nn<-length(x)#幾個隨機值
ifelse(r>nn,rr<-nn,rr<-r)#確定產生的是12個隨機值
x.sort<-sort(x)#排序
x.rr<-x.sort[1:rr]#取前12個,如果產生的隨機值不是12個的話
#這是weibull的概似函數
like<-rr*para[2]*log(para[1])+rr*log(para[2])+(para[2]-1)*
sum(log(x.rr))-sum((para[1]*x.rr)^para[2])
(nn-rr)*(para[1]*x.rr[rr])^para[2]
return(-like)#乘負一,因為等下用nlminb時是要最小化
}
para.star<-weib.para.star(temp,12)#參數初值
weib.mle<-nlminb(star=para.star,weib.lik,lower=c(0,0),x=temp,r=12)
#(參數初值,想最小化的目標,下界,random value,個數)
有錯請指正!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.223.194.118
1F:推 chrisjon:謝謝! x.qq是tp值,令F(tp) = p 移項而得 01/06 14:10
2F:推 chrisjon:請問一下,初值是隨機的變數嗎?然後nlminb的目的是利用該 01/06 14:13
3F:→ chrisjon:隨機變數組,找出參數之MLE? 01/06 14:13
4F:→ cravingtrue:這我不太清楚,不過應該是要給初始值,因為是用數值方法 01/06 16:13
5F:→ cravingtrue:去求MLE,想法有點像牛頓法吧,你要給起始點!! 01/06 16:14
6F:→ cravingtrue:初值指的是參數初值吧..你可以問一下老師在告訴我吧! 01/06 16:15
7F:→ cravingtrue:恩,nlminb的目的是利用該組資料去求的MLE 01/06 16:17