2013-12-09 4 views
4

이것은 내 코드입니다. kum.loglik 함수는 음수 loglikelihood를 반환하고 두 개의 인수 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))) 

미리 지정 Optim을 함수에 전달이지만,이 코드에서 잘못된 어떤 오류 메시지

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 기능이 따로 필요 애는 밖으로 매개 변수를 끌어 벡터 v, 예컨대 :

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

+0

당신의 대답은 문제를 해결했다. 고맙습니다. – user67275

+1

@ user67275 : 답변으로 문제가 해결되면 답변 옆에있는 체크 표시를 클릭하여 동의하십시오. –

관련 문제