2015-05-17 5 views
1

Я понятия не имею, что пошло не так в следующем коде, после долгого страдания, возможно, целый день ... я действительно надеюсь, что кто-то может найти проблему ... Большое спасибо заранее. ..Я не знаю, почему R дает мне то же начальное значениеОптимизация R с оптимизацией

lambda<-1 

likelihood<- function(lambda) { 
    T6<- exp(lambda*2.82)/(exp(lambda*2.82)+exp(lambda*0.28)) 
    T5<- exp(lambda*2.69)/(exp(lambda*2.69)+exp(lambda*((T6*0.38)+((1-T6)*2.92)))) 
    T4<- exp(lambda*2.52)/(exp(lambda*2.52)+exp(lambda*((T5*0.51)+((1-T5)*2.82)))) 
    T3<- exp(lambda*2.30)/(exp(lambda*2.30)+exp(lambda*((T4*0.68)+((1-T4)*2.69)))) 
    T2<- exp(lambda*2.00)/(exp(lambda*2.00)+exp(lambda*((T3*0.90)+((1-T3)*2.52)))) 
    T1<- exp(lambda*1.60)/(exp(lambda*1.60)+exp(lambda*((T2*1.20)+((1-T2)*2.30)))) 

    l6<-(T6^0)*((1-T6)^281) 
    l5<-(T5^0)*((1-T5)^281) 
    l4<-(T4^2)*((1-T4)^(281-2)) 
    l3<-(T3^19)*((1-T3)^(281-19)) 
    l2<-(T2^93) *((1-T2)^(281-93)) 
    l1<-(T1^166)*((1-T1)^(281-166)) 

     -(l1*l2*l3*l4*l5*l6) 
     } 

optim(lambda,likelihood)$par 

ответ

1

Там нет ничего плохого с кодом (в терминах ошибки программирования). Если вы чувствуете, что не должны возвращать верхний предел, вы, вероятно, допустили ошибку с определением функции в вашем коде.

Прежде всего, когда у вас есть только один параметр, чтобы оценить ваш метод должен быть Brent так:

> optim(lambda,likelihood, method='Brent', lower=1.5, upper=200)$par 
[1] 200 

Причина всегда показывает верхний предел, как правильный, потому что ваша функция определена только между -100 - 300 (приблизительно), и его значение всегда равно нулю, как вы можете видеть ниже (независимо от значения лямбда). Когда это происходит, optim всегда показывает верхний предел как правое значение. Вы можете видеть, ваша функция, изображенная ниже:

plot(likelihood, from=-100, to=1000, xlab='lambda') 

enter image description here

+0

Спасибо большое/...... спасибо большое за Брента предложение ... хорошо тогда я проверить, есть ли у меня другие ошибки –

+0

Рад, что я мог бы помочь :) – LyzandeR

Смежные вопросы