我正在尝试为混合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个参数?