ความหมายของคำเตือนการบรรจบกันใน Glmer


16

ฉันใช้glmerฟังก์ชันจากlme4แพ็คเกจใน R และฉันใช้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ซึ่งพูดว่า "Consult Powell สำหรับคำอธิบาย" ฉันทำ (คุณสามารถทำได้เช่นกันหากคุณต้องการ! ดูการอ้างอิงและลิงก์ไปยังพวกเขาด้านล่าง) แต่ฉันไม่เข้าใจ ที่จริงแล้วฉันไม่พบสิ่งใดเกี่ยวกับการลด q

MJD Powell (2007) "การพัฒนา NEWUOA สำหรับการลดขนาดที่ไม่มีเงื่อนไขโดยปราศจากอนุพันธ์", มหาวิทยาลัยเคมบริดจ์, ภาควิชาคณิตศาสตร์ประยุกต์และฟิสิกส์เชิงทฤษฎี, กลุ่มการวิเคราะห์เชิงตัวเลข, รายงาน NA2007 / 05, http://www.damtp.cam.ac.uk/ ผู้ใช้

MJD Powell (2009), "อัลกอริทึม BOBYQA สำหรับการเพิ่มประสิทธิภาพข้อ จำกัด ที่ไม่มีข้อผูกมัด", หมายเลขรายงาน DAMTP 2009 / NA06, ศูนย์คณิตศาสตร์วิทยาศาสตร์, มหาวิทยาลัยเคมบริดจ์, สหราชอาณาจักร http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf

ป.ล. ฉันรู้ว่าฉันสามารถเปลี่ยนเครื่องมือเพิ่มประสิทธิภาพและฉันจะดูว่าฉันจะได้รับผลลัพธ์โดยไม่มีคำเตือนหรือข้อผิดพลาด ฉันยังจะตรวจสอบการไล่ระดับสีและรัฐถ้าผมสามารถเป็นต่อความคิดเห็น / คำตอบโดยเบน Bolker ฉันใช้glmerภายในdredgeจากMuMInและฉันไม่แน่ใจว่าคำตอบของเบ็นจะทำงานได้โดยไม่ต้องทำการแก้ไขเพิ่มเติม แต่ฉันจะทำงานเมื่อคอมพิวเตอร์ของฉันเสร็จสิ้นสิ่งที่กำลังทำอยู่แล้วฉันเชือนแช

ปรับปรุง

ตามความคิดเห็นของดร. โบลเคอร์ด้านล่างฉันเริ่มดูรหัส FORTRAN ( นี่คือรหัสสำหรับทุกคนที่สนใจในการค้นหา แต่ไม่ได้ดาวน์โหลด ) "430" ปรากฏในส่วน bobyqb.f ของรหัส เพียงค้นหา "430" หรือ "ลด Q" เพื่อค้นหารหัสที่เกี่ยวข้อง

นี่เป็นครั้งแรกที่ฉันพบกับรหัส FORTRAN แต่ฉันคิดว่ารหัสแจ้งว่าหากตรงตามเงื่อนไขดังต่อไปนี้ให้สร้างคำเตือน: NTRITS> 0, VQUAD> = 0, IPRINT> 0 "NTRITS จำนวนเต็มถูกตั้งค่าเป็น" trust trust " การทำซ้ำที่เกิดขึ้นตั้งแต่การทำซ้ำ "ทางเลือก" ล่าสุด VQUADปรากฏขึ้นหลายครั้งและฉันยังไม่ชัดเจนเกี่ยวกับความสำคัญเนื่องจากค่าของมันดูเหมือนจะขึ้นอยู่กับตัวแปรอื่น ๆ หลายค่าซึ่งบางครั้งก็ขึ้นอยู่กับตัวแปรอื่นจาก bobyqa.f: "ค่าของ IPRINT ควรเป็น ตั้งค่าเป็น 0, 1, 2 หรือ 3 ซึ่งควบคุมปริมาณการพิมพ์โดยเฉพาะไม่มีการส่งออกถ้า IPRINT = 0 และมีการส่งออกเฉพาะที่ส่งคืนหาก IPRINT = 1 "

ดังนั้นดูเหมือนว่างานคือการหาความสำคัญของVQUADการเป็น> = 0 และบางทีการทำความเข้าใจว่า / เมื่อIPRINTกลายเป็น> 0 ฉันจะต้องกลับไปที่กระดาษเพื่อดู แต่คณิตศาสตร์หรือที่ อย่างน้อยการแสดงออกเชิงสัญลักษณ์มันเป็นอุปสรรคเล็กน้อยสำหรับฉัน ถ้าไม่มีใครรู้เกี่ยวกับอัลกอริทึมหรือมีความปรารถนาที่จะเรียนรู้เกี่ยวกับมันฉันคิดว่าฉันจะต้องเพิ่มความเข้าใจของฉันเตือนโดยการกลับไปกลับมาระหว่างเอกสารรหัสและอินเทอร์เน็ตจนกว่าฉันจะเข้าใจสิ่งที่มัน วิธี


3
ฉันคิดว่าคำถามนี้อาจอยู่ในหัวข้อสำหรับ CV b / c ดูเหมือนว่าจะเกี่ยวกับการทำความเข้าใจความคิดมากกว่าช่วยด้วย w / R ต่อ se
gung - Reinstate Monica

ฉันไม่แน่ใจว่าฉันมีอะไรมากมายที่จะแนะนำในกรณีนี้นอกเหนือจากการทำทีละนิดผ่านเอกสารและรหัส FORTRAN (ซึ่งรวมอยู่ในsrcไดเรกทอรีของcran.r-project.org/src/contrib/minqa_1 2.3.tar.gzและเห็นอย่างชัดเจนว่าเกิดอะไรขึ้นเมื่อข้อผิดพลาดนี้ (รหัสข้อผิดพลาด 430 ในรหัส) ได้รับการเรียกใช้ ...
Ben Bolker

1
การข้ามอย่างรวดเร็วบนกระดาษฉันคิดว่าคำเตือนระบุว่าเครื่องมือเพิ่มประสิทธิภาพไม่สามารถหาทิศทางที่การประมาณกำลังสอง Q, ไปยังฟังก์ชันที่คุณต้องการย่อเล็กสุด F ลดลง กล่าวคือเครื่องมือเพิ่มประสิทธิภาพอยู่ในจุดที่ไม่น่าจะเหมาะสมที่สุด แต่ไม่รู้ว่าจะไปปรับปรุงวัตถุประสงค์ได้อย่างไร ดังนั้นมันติดอยู่
Sven

1
คุณอ่านบทความสองในเรื่องใดและประมาณว่าคุณพบข้อมูลนี้จากที่ไหน? (ฉันได้อ่านอย่าง
ขาดลอย

ฉันอ่านกระดาษ BOBYQA ฉันไปครึ่งแรกในเวลาประมาณ 5 นาทีเพื่อให้ได้ความคิดที่กว้างว่าพวกเขากำลังจะไปทำอะไรและคำถามนั้นคืออะไร ไม่สามารถชี้ไปที่หน้าใดหน้าหนึ่งได้
Sven

คำตอบ:


13

ก่อนที่จะเข้าไปในรหัสให้ฉันให้ไพรเมอร์ที่รวดเร็วเกี่ยวกับวิธีการภูมิภาคที่เชื่อถือได้ ให้เป็นฟังก์ชันวัตถุประสงค์ของคุณและx kเป็นฟังก์ชั่นวนซ้ำปัจจุบันของคุณ การวนซ้ำkของวิธีการภูมิภาคที่เชื่อถือได้ทั่วไปมีลักษณะดังนี้:f(x)xkk

  • เลือกขนาดขั้นตอนสูงสุดΔk
  • สร้างแบบจำลองของที่x = x k ; เรียกว่าQ ( x )f(x)x=xkQ(x)
  • ค้นหาขั้นตอนที่ย่อขนาดQ k ( x k + s k )ให้อยู่ภายใต้ข้อ จำกัด| | s k | | Δ kskQk(xk+sk)||sk||Δk
  • ถ้าคือ "ดีพอ" ให้x k + 1 = x k + s kskxk+1=xk+sk
  • มิฉะนั้นปรับแต่งแบบจำลองของคุณแล้วลองอีกครั้ง

sk

เพื่อให้เข้าใจถึงคุณค่าของVQUADอันดับแรกเราต้องเข้าใจตัวแปรอื่น ๆ SUBROUTINE BOBYQBโชคดีที่มีความคิดเห็นที่ดีด้านล่างขวาประกาศของ ตัวแปรเด่นคือ:

  • GOPTความชันของโมเดล
  • HQHessian ของโมเดล
  • Dsk

เริ่มต้นไม่กี่บรรทัดข้างต้น 410 DO 410 J=1,Nคุณจะเห็น นี้เริ่มต้นสำหรับวง (และซ้อนกันสำหรับวง) Dที่ประเมินการเปลี่ยนแปลงตามคำทำนายของรูปแบบการใช้ขั้นตอนการพิจารณาคดี VQUADมันสะสมการเปลี่ยนแปลงที่คาดการณ์ไว้ใน ส่วนแรกของ for-loop จะประเมินเงื่อนไขของคำสั่งที่หนึ่งและ nested for-loop จะประเมินคำสั่งที่สอง มันอาจจะง่ายกว่าที่จะอ่านถ้าลูปถูกเยื้องเช่นนี้

    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> 0 ให้พิมพ์ข้อความเตือน" IPRINTโปรดทราบว่าแก้เป็นไปยุติโดยไม่คำนึงถึงความคุ้มค่าของ

การพูดของIPRINTที่คุ้มค่าจะถูกส่งไปBOBYQAโดยฟังก์ชั่นการโทร ในกรณีนี้รูทีน R ของคุณคือฟังก์ชั่นการโทร มีความเป็นverboseพารามิเตอร์glmer- BOBYQAฉันจะสลึงดอลลาร์ค่าเดียวกันนั้นจะถูกส่งไป ลองตั้งค่าverboseเป็น 0 และคุณอาจไม่เห็นคำเตือน แต่มันจะไม่เปลี่ยนสิ่งที่เกิดขึ้นภายใต้ประทุนแน่นอน


1
สิ่งนี้มีประโยชน์มาก ฉันไม่คิดว่าฉันจะทำได้ดีกว่าการตัดสินรางวัล ...
เบน Bolker

@BenBolker ดังนั้นฉันควรจะกังวลเกี่ยวกับสิ่งที่เกิดขึ้นที่นี่หรือนี่เป็นเพียงความรำคาญในรหัสหรือไม่ (กล่าวอีกนัยหนึ่งคำเตือนนี้หมายความว่าผลลัพธ์ของฉันไม่ถูกต้องหรือไม่)
theforestecologist

1
คำแนะนำทั่วไปในกรณีนี้คือสิ่งที่ระบุไว้ใน?lme4::convergence: สั้น ๆ ของการประเมินผลครบถ้วนสมบูรณ์ / รายละเอียดของขั้นตอนการเพิ่มประสิทธิภาพที่ดีที่สุดของคุณคือการเปรียบเทียบผลลัพธ์จากการเพิ่มประสิทธิภาพที่แตกต่างกัน
Ben Bolker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.