Chúng ta nên sợ hãi như thế nào về các cảnh báo hội tụ trong lme4


88

Nếu chúng ta lắp lại một ánh sáng, chúng ta có thể nhận được một cảnh báo cho chúng ta biết mô hình đang gặp khó khăn để hội tụ ... ví dụ:

>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00389462 (tol = 0.001)

một cách khác để kiểm tra sự hội tụ được thảo luận trong chủ đề này bởi @Ben Bolker là:

 relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
 max(abs(relgrad))
 #[1] 1.152891e-05

nếu max(abs(relgrad))<0.001sau đó mọi chuyện có thể là ok ... do đó, trong trường hợp này chúng ta có kết quả mâu thuẫn nhau? Làm thế nào chúng ta nên lựa chọn giữa các phương pháp và cảm thấy an toàn với mô hình phù hợp của chúng tôi?

Mặt khác, khi chúng ta nhận được nhiều giá trị cực đoan như:

>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 35.5352 (tol = 0.001)

relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
#[1] 0.002776518

Điều này có nghĩa là chúng ta phải bỏ qua các kết quả / ước tính / giá trị mô hình? Là 0,0027 quá lớn để tiến hành?

Khi các trình tối ưu hóa khác nhau cho kết quả khác nhau và tập trung vào các biến / loại bỏ tham số (tước mô hình xuống mức tối thiểu) không giúp ích gì nhưng VIF thấp, mô hình không quá mức và kết quả mô hình có ý nghĩa logic dựa trên kỳ vọng tiên nghiệm, có vẻ khó biết phải làm sao

Tư vấn về cách giải thích các vấn đề hội tụ, mức độ cực đoan của chúng để thực sự khiến chúng tôi lo lắng và những cách có thể để cố gắng quản lý chúng ngoài những vấn đề được đề cập sẽ rất hữu ích.

Sử dụng: R version 3.1.0 (2014-04-10)lme4_1.1-6


10
Phiên bản mới hơn lme4(phiên bản 1.1-7) có hành vi cảnh báo khác nhau mà các tác giả tin rằng ít có khả năng đưa ra cảnh báo "báo động sai". Bạn có thể thử cập nhật lme4lên phiên bản mới nhất, lắp lại mô hình và xem liệu bạn có còn nhận được cảnh báo tương tự hay không, ít nhất là trong trường hợp đầu tiên.
Jake Westfall

Câu trả lời:


91

Sợ. Rất sợ.

Năm ngoái, tôi đã phỏng vấn John Nash, tác giả của Optim và Optimx, cho một bài viết trên trang DeveloperWorks của IBM. Chúng tôi đã nói về cách tối ưu hóa hoạt động và tại sao họ thất bại khi họ thất bại. Anh ta dường như coi đó là điều mà họ thường làm. Đó là lý do tại sao chẩn đoán được bao gồm trong gói. Ông cũng nghĩ rằng bạn cần "hiểu vấn đề của mình" và hiểu dữ liệu của mình. Tất cả điều đó có nghĩa là các cảnh báo nên được thực hiện nghiêm túc và là một lời mời để xem xét dữ liệu của bạn theo những cách khác.

Thông thường, trình tối ưu hóa dừng tìm kiếm khi nó không còn có thể cải thiện chức năng mất đi một lượng có ý nghĩa. Về cơ bản, nó không biết đi đâu tiếp theo. Nếu độ dốc của hàm mất không bằng 0 tại thời điểm đó, bạn đã không đạt đến cực hạn của bất kỳ loại nào. Nếu Hessian không dương, nhưng độ dốc bằng 0, bạn đã không tìm thấy mức tối thiểu, nhưng có thể, bạn đã tìm thấy điểm tối đa hoặc yên ngựa. Tuy nhiên, tùy thuộc vào trình tối ưu hóa, kết quả về Hessian có thể không được cung cấp. Trong Optimx, nếu bạn muốn các điều kiện KKT được đánh giá, bạn phải yêu cầu chúng - chúng không được đánh giá theo mặc định. (Những điều kiện này nhìn vào độ dốc và Hessian để xem bạn có thực sự có mức tối thiểu không.)

Vấn đề với các mô hình hỗn hợp là các ước tính phương sai cho các hiệu ứng ngẫu nhiên bị hạn chế là dương, do đó đặt một ranh giới trong khu vực tối ưu hóa. Nhưng giả sử một hiệu ứng ngẫu nhiên cụ thể không thực sự cần thiết trong mô hình của bạn - tức là phương sai của hiệu ứng ngẫu nhiên là 0. Trình tối ưu hóa của bạn sẽ đi vào ranh giới đó, không thể tiến hành và dừng lại với độ dốc khác không. Nếu loại bỏ hiệu ứng ngẫu nhiên đó đã cải thiện sự hội tụ, bạn sẽ biết đó là vấn đề.

Bên cạnh đó, lưu ý rằng lý thuyết khả năng tối đa tiệm cận giả định MLE được tìm thấy ở một điểm bên trong (nghĩa là không nằm trên ranh giới của các giá trị tham số Licit) - do đó, các thử nghiệm tỷ lệ cho các thành phần phương sai có thể không hoạt động khi thực sự giả thuyết không có phương sai thật. Thử nghiệm có thể được thực hiện bằng các thử nghiệm mô phỏng, như được thực hiện trong gói RLRsim.

Đối với tôi, tôi nghi ngờ rằng các trình tối ưu hóa gặp sự cố khi có quá ít dữ liệu cho số lượng tham số hoặc mô hình đề xuất thực sự không phù hợp. Nghĩ rằng dép thủy tinh và em gái xấu xí: bạn không thể đưa dữ liệu của mình vào mô hình, bất kể bạn có cố gắng đến mức nào, và phải cung cấp một cái gì đó.

Ngay cả khi dữ liệu xảy ra phù hợp với mô hình, họ có thể không có khả năng ước tính tất cả các tham số. Một điều buồn cười đã xảy ra với tôi dọc theo những dòng đó. Tôi mô phỏng một số mô hình hỗn hợp để trả lời một câu hỏivề những gì xảy ra nếu bạn không cho phép các hiệu ứng ngẫu nhiên tương quan khi điều chỉnh mô hình hiệu ứng hỗn hợp. Tôi đã mô phỏng dữ liệu với một mối tương quan mạnh mẽ giữa hai hiệu ứng ngẫu nhiên, sau đó phù hợp với mô hình cả hai cách với lmer: đặt ra 0 tương quan và tương quan tự do. Mô hình tương quan phù hợp hơn mô hình không tương thích, nhưng thú vị là trong 1000 mô phỏng, tôi có 13 lỗi khi khớp mô hình thật và 0 lỗi khi lắp mô hình đơn giản hơn. Tôi hoàn toàn không hiểu tại sao điều này xảy ra (và tôi đã lặp lại các sim với kết quả tương tự). Tôi nghi ngờ rằng tham số tương quan là khá vô dụng và trình tối ưu hóa không thể tìm thấy giá trị (vì nó không quan trọng).

Bạn hỏi về những việc cần làm khi các trình tối ưu hóa khác nhau cho kết quả khác nhau. John và tôi đã thảo luận về điểm này. Một số tối ưu hóa, theo ý kiến ​​của ông, chỉ là không tốt! Và tất cả chúng đều có điểm yếu - tức là các bộ dữ liệu sẽ khiến chúng bị lỗi. Đây là lý do tại sao ông viết Optimx, bao gồm một loạt các tối ưu hóa. Bạn có thể chạy một số trên cùng một tập dữ liệu.

Nếu hai trình tối ưu hóa cho cùng một tham số, nhưng chẩn đoán khác nhau - và các tham số đó có ý nghĩa trong thế giới thực - thì tôi sẽ có xu hướng tin tưởng các giá trị tham số. Khó khăn có thể nằm ở chẩn đoán, không phải là bằng chứng ngu ngốc. Nếu bạn chưa cung cấp rõ ràng hàm gradient và / hoặc ma trận Hessian, trình tối ưu hóa sẽ cần ước tính các hàm này từ hàm mất và dữ liệu, đây chỉ là một thứ khác có thể sai.

Nếu bạn cũng nhận được các giá trị tham số khác nhau, thì bạn có thể muốn thử các giá trị bắt đầu khác nhau và xem điều gì xảy ra sau đó. Một số tối ưu hóa và một số vấn đề rất nhạy cảm với các giá trị bắt đầu. Bạn muốn được bắt đầu trong công viên bóng.


3
À! Tôi chỉ mở câu hỏi này để làm cho "Hãy sợ. Hãy rất sợ." đùa Tốt cho bạn Cũng tốt khi kết hợp nó vào một câu trả lời thực tế, điều mà tôi không có ý định làm.
Alexis

2
Bạn thực sự nên đọc cuốn sách Nash viết. Xác định Hessian là rất khó trong thực tế vì vậy trình tối ưu hóa có thể đã hội tụ trong nhiều trường hợp nhưng Hessian không chính xác nên trong trường hợp bạn nhận được kết quả tương tự từ các trình tối ưu hóa khác nhau nhưng cảnh báo hội tụ thường xảy ra rằng hessian của bạn không phải là mô hình của bạn. Các bài kiểm tra Hessian hoặc gradient chỉ ở đó để đảm bảo. Đôi khi, một hessian cũng không có nhiều ý nghĩa như khi bạn có trình tối ưu hóa giới hạn biên nhưng thuật toán hessian của bạn không tính đến điều này (như lme4) và bạn chạm vào ranh giới.

18

Tôi chỉ muốn bổ sung câu trả lời tuyệt vời của @ Placidia. Bạn có thể muốn xem "Mô hình tuyến tính được tham số hóa phong phú: Phụ gia, chuỗi thời gian và mô hình không gian sử dụng hiệu ứng ngẫu nhiên" của James Hodges (2014). Nó loại bỏ những gì chúng ta không biết về các mô hình hỗn hợp và đồng thời cố gắng đưa ra một lý thuyết rộng rãi cũng như các mẹo thực tế để phù hợp với các mô hình phức tạp.

Bản thân một người làm mô hình thường sợ hãi, tôi thấy các cuộc thảo luận về "câu đố" của Hodge là vô giá. Ông giải thích các trường hợp lạ phát sinh từ mô hình hiệu ứng hỗn hợp phù hợp, bao gồm "Hiệu ứng ngẫu nhiên cạnh tranh với hiệu ứng cố định" và "Cạnh tranh giữa các hiệu ứng ngẫu nhiên". Âm thanh quen thuộc?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.