在R.错误消息中使用mle():尝试应用非函数

时间:2014-07-17 21:10:34

标签: r

我正在尝试为混合Weibull分布找到最佳参数。我想使用stats4包的Maximum-Likelihood-Method部分。

我的R代码:

library(stats4)

x=rweibull(50,0.5,10000) #random sample x consisting of 50 Weibull-distributed elements
y=rweibull(150,1.2,200000) #random sample y consisting of 150 Weibull-distributed elements

ll=x
for (i in 1:150) ll[50+i]=y[i] #matching sample x and y to sample ll (200 elements)

llf=function(p,b1,T1,b2,T2){n=200 #llf=negative loglikelihoodfunction, 5 unknown parameters
t=ll
(-sum(log(p*(b1/T1)*((t/T1)^(-(t/T1)^(b1-1)))*exp(-(t/T1)^b1)+(1-p)(b2/T2)*((t/T2)^(-(t/T2)^(b2-1)))*exp(-(t/T2)^b2))))}

est=mle(minuslogl=llf, start=list(p=0.3,b1=0.5,T1=10000,b2=1.2,T2=200000), method="L-BFGS-B", lower=c(0,0,0,0,0), upper=c(1,1,Inf,Inf,Inf)) #estimation of 5 unknown parameters

但是,它不起作用。我收到以下错误消息: minuslogl出错(p = 0.3,b1 = 0.5,T1 = 10000,b2 = 1.2,T2 = 2e + 05):   尝试应用非功能性

我使用traceback()来查找错误,但它并没有让我更容易找到错误。

有谁知道出了什么问题? 对于这样一个困难的最大似然函数来说,R可能难以优化5个参数?

0 个答案:

没有答案