Glmerde yakınsama uyarısının anlamı


16

Ben kullanıyorum glmergelen işlevi lme4R paketin ve ben kullanıyorum bobyqaoptimize edici (benim durumumda varsayılan yani). Bir uyarı alıyorum ve bunun ne anlama geldiğini merak ediyorum.

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

"Güven bölgesi adımı q değerini düşüremedi" araması yaptım. "Açıklama için Powell'e danışın" diyen minqa paketinde bazı bilgiler bulduk . Yaptım (siz de yapabilirsiniz, eğer referansları ve bağlantıları aşağıda görebilirsiniz), ama anlayamıyorum. Aslında, q azaltmak için bir şey bulamadım.

MJD Powell (2007) "Türevler olmadan kısıtsız minimizasyon için NEWUOA'nın gelişmeleri", Cambridge Üniversitesi, Uygulamalı Matematik ve Teorik Fizik Bölümü, Sayısal Analiz Grubu, Rapor NA2007 / 05, http://www.damtp.cam.ac.uk/ kullanıcı / na / NA_papers / NA2007_05.pdf .

MJD Powell (2009), "Türevsiz sınırlamalı optimizasyon için BOBYQA algoritması", Rapor No. DAMTP 2009 / NA06, Matematiksel Bilimler Merkezi, Cambridge Üniversitesi, İngiltere. http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf .

Ps Ben optimizer değiştirebilir biliyorum, ve ben uyarı veya hata olmadan çıktı alabilir olmadığını görmek olacaktır. Ben de Ben Bolker tarafından bir yorum / cevap göre ben de yapabilirim degrade ve Hessen kontrol edecektir . Ben kullanıyorum glmeriçinde dredgegelen MuMInve Ben'in cevabı bazı ek müdahalesi olmadan çalışacaktır eğer emin değilim, ama yine de, ne yaptığını bilgisayarım bittikten sonra bunun üzerinde çalışacağız, konuyu dağıtmak.

Güncelleme

Bolker'ın aşağıdaki yorumuna göre, FORTRAN kodunu incelemeye başladım ( İşte bakmak isteyen ama indirmeyen herkes için kod ). Kodun bobyqb.f bölümünde "430" belirir. İlgili kodu bulmak için "430" veya "Q azaltmak" için arama yapmanız yeterlidir.

Bu FORTRAN kodu ile ilk karşılaşma, ama kod aşağıdaki koşullar karşılanırsa, uyarı üretmek diyor: NTRITS> 0, VQUAD> = 0, IPRINT> 0. "NTRITS tamsayı" güven bölgesi "olarak ayarlanmış son "alternatif" yineleme "den bu yana gerçekleşen yinelemeler. VQUADbirkaç kez görünür ve değeri bazen diğer değişkenlere bağlı olan çeşitli diğer değişkenlere bağlı gibi göründüğü için öneminden henüz emin değilim. from bobyqa.f: "IPRINT değeri baskı miktarını kontrol eden 0, 1, 2 veya 3 olarak ayarlanır. Özellikle, IPRINT = 0 ise çıkış olmaz ve IPRINT = 1 ise yalnızca çıktıda çıkış olur. "

Öyleyse, görev VQUAD> = 0 olmanın önemini anlamak ve belki de nasıl / ne zaman IPRINT> 0 olduğunun anlaşılmasıdır . en azından sembolik ifadesi benim için bir engel teşkil ediyor. Birisi algoritmayı bilmediği veya bunu öğrenme arzusu olmadığı sürece, sanırım ne olduğunu anlayana kadar, kağıtlar, kodlar ve internet arasında gidip gelip uyarı konusundaki anlayışımı tekrar tekrar artırmam gerekecek. anlamına geliyor.


3
Bence bu soru CV b / c için konuyla ilgili olabilir, kendi başına yardım etmek yerine fikirleri anlamakla ilgili gibi görünüyor.
gung - Monica'yı eski

Bu durumda kağıtlar ve FORTRAN kodu (ki buna dahil olan) aracılığıyla bit-bit gitmenin ötesinde önerecek çok şeyim olduğundan emin değilim src cran.r-project.org/src/contrib/minqa_1 dizininde . 2.3.tar.gz ) ve bu hata (koddaki hata kodu 430) tetiklendiğinde tam olarak ne olduğunu görmek ...
Ben Bolker

1
Kağıdın üzerinde çabucak gözden geçirme Uyarının, optimize edicinin kuadratik yaklaşımın Q, küçültmek istediğiniz işleve, F, azaldığı bir yön bulamadığını gösterdiğini düşünüyorum. Yani, optimize edici büyük olasılıkla optimal olmayan bir noktadadır, ancak hedefi iyileştirmek için hangi yoldan gidileceğini bilmemektedir. Bu nedenle, sıkışmış.
Sven

1
iki makaleden hangisini gözden kaçırdınız ve bu bilgiyi yaklaşık olarak nerede buldunuz? (Ben de
yağmaladım

BOBYQA belgesini okudum. Ne yaptıkları ve Q'nun ne olduğu hakkında geniş bir fikir edinmek için yaklaşık 5 dakikada ilk yarıyı geçtim. Gerçekten belirli bir sayfayı gösteremezsiniz.
Sven

Yanıtlar:


13

f(x)xkk

  • Maksimum adım boyutu seçin, Δk
  • f(x)x=xkS(x)
  • skSk(xk+sk)||sk||Δk
  • skxk+1=xk+sk
  • Aksi takdirde, modelinizi hassaslaştırın ve tekrar deneyin

Aşağıdakileri belirleme yöntemlerinden biri sk

Değerini anlamak için VQUAD, önce birkaç değişkeni daha anlamamız gerekir. Neyse ki, bildirisinin hemen altında iyi yorumlar var SUBROUTINE BOBYQB. Belirgin değişkenler:

  • GOPT, modelin gradyanı
  • HQ, Hessian modelin
  • D, deneme adımı (Buna dedimsk yukarıda)

410'un üstündeki birkaç satırdan başlayarak göreceksiniz DO 410 J=1,N. Bu, deneme adımı kullanılarak model tarafından öngörülen değişikliği değerlendiren bir for-loop (ve nested for-loop) başlarD . Tahmin edilen değişikliği biriktirir VQUAD. For-döngüsünün ilk kısmı birinci dereceden terimleri, içiçe for-loop ise ikinci dereceden terimleri değerlendirir. Döngülerin girintili olup olmadığını okumak muhtemelen daha kolay olurdu, şöyle:

    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

Bundan sonra modele diğer parametreleri dahil etmek için başka bir for-loop var. İtiraf etmeliyim ki, bunu tam olarak anlamıyorum - en iyi tahminim, modeli nasıl oluşturduklarına özel olmasıdır.

Bütün bunların sonunda VQUAD, modelin öngördüğü objektif işlevdeki değişikliği tutar. VQUADNegatif değilse , bu kötü. Şimdi bu özel çözücüdür alternatif adım hesaplama (muhtemelen bir çizgi arama), kullanabilirsiniz NTRITSoyuna geliyor. Bu yüzden 430'daki mantık "Son yineleme alternatif adım hesaplamasını kullandıysa ve model bir düşüş öngörmezse VE IPRINT> 0 ise, uyarı mesajını yazdırın." Çözücünün değerine bakılmaksızın sona ereceğini unutmayın IPRINT.

Sözünü ettiğimizde IPRINT, bu değer BOBYQAçağrı fonksiyonu tarafından iletilir . Bu durumda, R yordamınız çağıran işlevdir. Bir verboseparametre var glmer- Ben aynı değerin geçirildiği dolara dimes olurdum BOBYQA. verbose0 olarak ayarlamayı deneyin ve muhtemelen uyarıyı görmezsiniz. Ama elbette, kaputun altında neler olup bittiğini değiştirmeyecek.


1
bu çok yardımcı; Ödül
kazanarak

@BenBolker. Yani gerektiğini ben kodunda bu gerçekten sadece bir sıkıntı oluyor burada, ya da olanlar hakkında endişe? (Başka bir deyişle, bu uyarı sonuçlarımın geçerli olmadığı anlamına mı geliyor ??)
theforestecologist

1
bu durumda genel tavsiye, aşağıdakilerle ilgilidir ?lme4::convergence: optimizasyon prosedürünün kapsamlı / ayrıntılı değerlendirmesi eksik olduğunda, en iyi seçiminiz farklı optimize edicilerin sonuçlarını karşılaştırmaktır.
Ben Bolker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.