언제 MLE에 R의 nlm 기능을 사용하지 않아야합니까?


25

나는 최대 가능성 추정을 위해 R의 nlm을 사용하도록 제안하는 몇 가지 가이드를 살펴 보았습니다. 그러나 이들 중 어느 것도 ( R의 문서 포함 ) 함수를 언제 사용할 것인지에 대한 이론적 인 지침을 제공하지 않습니다.

내가 알 수있는 한, nlm은 뉴턴 방법의 선을 따라 그라디언트 하강을하고 있습니다. 이 방법을 사용하는 것이 합리적인시기에 대한 원칙이 있습니까? 어떤 대안이 있습니까? 또한 nlm에 전달할 수있는 배열의 크기 등에 제한이 있습니까?

답변:


39

거기에 제가 알고 것을 기본 R의 범용 최적화 루틴의 수는 다음과 같습니다 optim, nlminb, nlmconstrOptim(일차 부등식 제약 및 호출을 처리하는 optim후드 아래). 사용할 것을 선택할 때 고려해야 할 사항이 있습니다.

  • optim켤레 구배, 뉴턴, 준 뉴턴, Nelder-Mead 및 시뮬레이션 어닐링을 포함한 여러 가지 알고리즘을 사용할 수 있습니다. 마지막 두 개는 그라디언트 정보가 필요하지 않으므로 그라디언트를 사용할 수 없거나 계산할 수없는 경우 유용하지만 (각각 더 느리고 매개 변수 미세 조정이 더 필요할 수 있음) 유용합니다. 또한 솔루션에서 계산 된 Hessian을 반환하는 옵션이 있습니다. 솔루션 자체와 함께 표준 오류를 원할 경우 필요합니다.

  • nlminb"L-BFGS-B"방법 과 동일한 틈새를 채우는 유사-뉴턴 알고리즘을 사용합니다 optim. 내 경험상 문제에 의존 할 수는 있지만 수렴하지 못하는 optim한계가있는 경우 솔루션을 반환 할 가능성이 있다는 것 보다 조금 더 강력 해 보입니다 optim. 명시 적 그라디언트 기능을 제공하는 경우 솔루션에서 값을 숫자로 확인하는 멋진 기능이 있습니다. 이 값이 숫자 차이로 얻은 값과 일치하지 않으면 nlminb경고가 표시됩니다. 그래야 그래디언트를 지정하는 데 실수를하지 않아도됩니다 (복잡한 가능성으로 쉽게 수행 할 수 있음).

  • nlm뉴턴 알고리즘 만 사용합니다. 이는 수렴에 도달하기 위해 더 적은 반복이 필요하다는 점에서 다른 알고리즘보다 빠를 수 있지만 자체 단점이 있습니다. 가능성의 모양에 더 민감하므로 이차적으로 강하지 않은 경우 속도가 느려지거나 잘못된 솔루션으로 수렴 될 수 있습니다. 뉴턴 알고리즘은 또한 이론적 속도 향상을 상쇄하는 것 이상으로 실제로 느려질 수있는 헤 시안 및 컴퓨팅을 사용합니다.


17

특정 최대화 방법을 사용하고 사용하지 않을시기는 보유한 데이터 유형에 따라 크게 다릅니다. nlm가능성 표면이 특별히 "거칠지"않고 어디에서나 차별화 가능한 경우에는 제대로 작동합니다. nlminb매개 변수 값을 특정 경계 상자로 제한하는 방법을 제공합니다. optim아마도 가장 많이 사용되는 옵티 마이저 인 몇 가지 다른 최적화 루틴을 제공합니다. 예를 들어, BFGS, L-BFGS-B 및 시뮬레이션 어닐링 (SANN 옵션을 통해), 후자는 최적화 문제가 어려운 경우 유용 할 수 있습니다. CRAN에는 다양한 옵티마이 저도 있습니다. rgenoud예를 들어, 최적화를위한 유전자 알고리즘을 제공합니다.DEoptim다른 유전자 최적화 루틴을 사용합니다. 유전자 알고리즘은 수렴 속도가 느릴 수 있지만 우연히 불연속성이있는 경우에도 (수시) 수렴되도록 보장됩니다. 에 대해 DEoptim모르지만 병렬 처리 rgenoud에 사용하도록 설정되어있어 snow다소 도움이됩니다.

따라서 아마도 다소 불만족스러운 대답은 nlm가지고있는 데이터에 대해 작동하는 경우 다른 최적화 프로그램 을 사용해야한다는 것입니다. 당신이 잘 동작하는 가능성이있는 경우, 루틴의에 의해 제공 optim하거나 nlm당신에게 동일한 결과를 줄 것이다. 일부는 다른 것보다 빠를 수 있으며, 데이터 세트의 크기 등에 따라 중요하거나 중요하지 않을 수 있습니다. 이러한 루틴이 처리 할 수있는 매개 변수의 수에 관해서는 아마도 몇 가지 일지 모르겠습니다. 물론 매개 변수가 많을수록 수렴 문제가 발생할 가능성이 높습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.