作者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