2013-12-09 5 views
4

Это мой код. Функция kum.loglik возвращает отрицательный идентификатор правдоподобия и принимает два аргумента a и b. Мне нужно найти a и b, которые минимизируют эту функцию, используя функцию оптимизации. (N1, n2, n3 предварительно определен и передан Optim функции.аргумент опционной функции отсутствует

kum.loglik = function(a, b, n1, n2, n3) { 
    loglik = n1*log(b*beta(1+2/a,b)) + n2 * log(b*beta(1+2/a,b)-2*b*beta(1+1/a,b)+1) + 
    n3 * log(b*beta(1+1/a,b)-b*beta(1+2/a,b)) 
    return(-loglik) 
} 
optim(par=c(1,1), kum.loglik, method="L-BFGS-B", 
     n1=n1, n2=n2, n3=n3, 
     control=list(ndeps=c(5e-4,5e-4))) 

Этот код должен работать хорошо, но это дает сообщение об ошибке

Error in b * beta(1 + 2/a, b) : 'b' is missing 

Что неправильно в этом коде?

ответ

7

проблема заключается в том (прямо из Optim помощи):

fn: A function to be minimized (or maximized), with first 
argument the vector of parameters over which minimization is 
to take place. 

Ваша kum.loglik функция должна та KE вектор v который вы тянете параметры из, например .:

kum.loglik=function(v) { a = v[1]; b = v[2]; ...}

+0

Ваш ответ решить эту проблему. Спасибо. – user67275

+1

@ user67275: если ответ решил проблему, вам рекомендуется нажать на галочку рядом с ответом, чтобы принять ее ... –

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