glmer에서 수렴 경고의 의미


16

내가 사용하고 glmer으로부터 기능을 lme4R의 패키지, 그리고 내가 사용하고 bobyqa최적화 (내 경우에는 기본 즉). 경고 메시지가 표시되며 그 의미가 무엇인지 궁금합니다.

Warning message:
In optwrap(optimizer, devfun, start, rho$lower, control = control,  :
  convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q

"신뢰 영역 단계에서 q를 줄이는 데 실패했습니다."를 검색했습니다. minqa 패키지 에서 "설명을 위해 Powell에 문의하십시오"라는 정보를 찾았습니다 . 나는 (당신이 원한다면 당신도 할 수 있습니다! 아래의 참고 문헌과 링크를 참조하십시오), 나는 이해하지 못합니다. 사실, 나는 q를 줄이는 것에 대해 아무것도 찾지 못했습니다.

MJD Powell (2007) "미분없는 제약없는 최소화를위한 NEWUOA 개발", Cambridge University, 응용 수학 및 이론 물리학과, 수치 분석 그룹, 보고서 NA2007 / 05, http://www.damtp.cam.ac.uk/ user / na / NA_papers / NA2007_05.pdf .

MJD Powell (2009), "미분없는 구속 구속 최적화를위한 BOBYQA 알고리즘", 보고서 번호 DAMTP 2009 / NA06, 영국 케임브리지 대학교 수학 과학 센터. http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf .

추신 내가 최적화를 변경할 수 있다는 것을 알고 경고 나 오류없이 출력을 얻을 수 있는지 확인할 것입니다. Ben Bolker의견 / 답변에 따라 가능한 경우 그라디언트 및 Hessian도 확인합니다 . 나는 from을 사용하고 glmer있으며 Ben의 대답이 추가 땜질없이 작동하는지 확실하지 않지만 컴퓨터가 수행중인 작업을 마친 후에는 계속 노력할 것입니다.dredgeMuMIn

최신 정보

아래 Bolker의 의견에 따라 FORTRAN 코드를 살펴보기 시작했습니다 (보기에 관심이 있지만 다운로드하지 않는 사람을위한 코드는 다음과 같습니다 ). "430"이 코드의 bobyqb.f 부분에 나타납니다. "430"또는 "Q 줄이기"를 검색하여 관련 코드를 찾으십시오.

이것은 FORTRAN 코드와의 첫 만남이지만 코드에서 다음 조건이 충족되면 경고를 생성한다고 말합니다. NTRITS> 0, VQUAD> = 0, IPRINT> 0. "정수 NTRITS는"trust region "숫자로 설정됩니다. 마지막 "대체"반복 이후에 발생한 반복. " VQUAD값이 여러 다른 변수에 의존하는 것처럼 보이므로 그 값이 다른 변수에 의존하는 것으로 보이므로 아직 그 중요성에 대해 명확하지 않다. bobyqa.f : "IPRINT의 가치는 0, 1, 2 또는 3으로 설정하여 인쇄량을 제어합니다. 특히 IPRINT = 0이면 출력이없고 IPRINT = 1이면 반환시에만 출력됩니다. "

따라서, 과제는 VQUAD> = 0 의 중요성을 파악 하고, 아마도 / 언제 IPRINT> 0이 되었는지 이해하는 것입니다. 나는 종이로 돌아가서 수학을 보거나 적어도 그 상징적 표현은 나에게 약간의 장벽입니다. 누군가가 알고리즘에 대해 알고 있거나 그것에 대해 배우고 싶지 않다면, 나는 그것이 무엇을 이해할 때까지 종이, 코드 및 인터넷 사이를왔다 갔다하면서 경고에 대한 이해를 반복적으로 증가시켜야한다고 생각합니다. 방법.


3
나는이 질문이 CV b / c에 대한 주제일지도 모른다고 생각한다. 그것은 R / s 자체의 도움보다는 아이디어를 이해하는 것에 관한 것으로 보인다.
gung-복직 모니카

이 경우 논문과 FORTRAN 코드 ( cran.r-project.org/src/contrib/minqa_1src 디렉토리에 포함)를 통해 비트 단위로 넘어가는 것 이상으로 제안 할 것이 많지 않습니다. 2.3.tar.gz ) 및이 오류 (코드의 오류 코드 430)가 트리거 될 때 발생하는 상황을 정확하게 파악합니다.
Ben Bolker

1
용지를 빠르게 감추고 있다고 경고는 최적화 기가 최소화하려는 함수에 대한 2 차 근사치 Q가 감소하는 방향을 찾을 수 없다는 것을 나타냅니다. 즉, 옵티마이 저는 최적이 아닌 시점에 있지만 목표를 개선하기 위해 어떤 방법을 사용해야하는지 모릅니다. 따라서 붙어 있습니다.
Sven

1
두 논문 중 어느 것이 훑어 보았으며 대략이 정보를 어디에서 찾았습니까? (나는 ... 너무 미끄러 져하지만 쉽게 종이 및 코드의 대응을 할 수 없습니다 것)
벤 Bolker

BOBYQA 논문을 읽었습니다. 나는 그들이 무엇을하는지와 Q가 무엇인지에 대한 광범위한 아이디어를 얻기 위해 약 5 분 동안 전반부를 갔다. 실제로 특정 페이지를 가리킬 수 없습니다.
Sven

답변:


13

f(x)x케이케이

  • Δk
  • f(x)x=xkQ(x)
  • skQk(xk+sk)||sk||Δk
  • skxk+1=xk+s케이
  • 그렇지 않으면 모델을 수정하고 다시 시도하십시오.

s케이

의 가치를 이해하려면 VQUAD먼저 몇 가지 다른 변수를 이해해야합니다. 다행히의 선언 바로 아래에 좋은 의견이 SUBROUTINE BOBYQB있습니다. 두드러진 변수는 다음과 같습니다.

  • GOPT, 모델의 기울기
  • HQ, 모델의 헤 시안
  • Ds케이

410을 약간 넘어 서면을 볼 수 DO 410 J=1,N있습니다. 이것은 시행 단계를 사용하여 모델에 의해 예측 된 변화를 평가하는 for 루프 (및 중첩 된 for 루프)를 시작합니다 D. 의 예측 된 변화를 누적합니다 VQUAD. for-loop의 첫 번째 부분은 1 차 항을 평가하고 중첩 된 for-loop는 2 차 항을 평가합니다. 다음과 같이 루프가 들여 쓰기 된 경우 읽기가 더 쉬울 것입니다.

    DO 410 J=1,N
        VQUAD=VQUAD+D(J)*GOPT(J)
        DO 410 I=1,J
            IH=IH+1
            TEMP=D(I)*D(J)
            IF (I .EQ. J) TEMP=HALF*TEMP
410         VQUAD=VQUAD+HQ(IH)*TEMP

다른 매개 변수를 모델에 통합하기위한 또 다른 for-loop가 있습니다. 나는 이것을 완전히 이해하지 못한다는 것을 인정해야한다. 내 최선의 추측은 모델을 만드는 방법에 따라 다르다는 것이다.

이 모든 것이 끝날 VQUAD때 모델에 의해 예측 된 목적 함수의 변화를 유지합니다. VQUAD음수가 아닌 경우 , 그것은 나쁘다. 이제이 특정 솔버는 대체 단계 계산 (아마도 라인 검색)을 사용할 NTRITS수 있습니다. 따라서 430의 논리는 "마지막 반복이 대체 단계 계산을 사용하고 모델이 감소를 IPRINT> AND 0으로 예측하지 않으면 경고 메시지를 인쇄합니다"라고 말합니다. 값에 관계없이 솔버가 종료됩니다 IPRINT.

로 말하면 IPRINT, 그 값은 BOBYQA호출 함수 에 의해 전달됩니다 . 이 경우, R 루틴은 호출 기능입니다. 거기에verbose 에 대한 매개 변수 glmer- 나는 같은 값이 전달되는 달러짜리 것이다 BOBYQA. verbose0으로 설정 하면 경고가 표시되지 않을 수 있습니다. 그러나 그것은 물론 후드 아래에서 일어나는 일을 바꾸지 않을 것입니다.


1
이것은 매우 도움이됩니다. 나는 현상금을 수여하면서 더 잘할 것이라고 생각하지 않습니다 ...
Ben Bolker

@BenBolker. 그래서 여기서 무슨 일이 일어나고 있는지 걱정 해야 합니까? 아니면 실제로 코드에서 성가신 것입니까? (즉,이 경고는 내 결과가 유효하지 않음을 의미합니까 ??)
theforestecologist

1
이 경우 일반적인 조언은 다음과 ?lme4::convergence같습니다. 최적화 절차에 대한 철저한 / 자세한 평가가 부족한 경우 최선의 방법은 여러 최적화 프로그램의 결과를 비교하는 것입니다.
벤 볼커
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.