Tôi đang cố gắng sử dụng R để ước tính mô hình logit đa thức với thông số kỹ thuật thủ công. Tôi đã tìm thấy một vài gói cho phép bạn ước tính các mô hình MNL here hoặc here.Di chuyển ra ngoài chức năng tối ưu của R
Tôi đã tìm thấy một số tác phẩm khác về "lăn" riêng MLE chức năng của bạn here. Tuy nhiên, từ việc đào bới của tôi - tất cả các chức năng và gói này đều dựa trên hàm nội bộ optim
.
Trong các thử nghiệm benchmark của tôi, optim
là nút cổ chai. Sử dụng bộ dữ liệu mô phỏng với ~ 16000 quan sát và 7 tham số, R mất khoảng 90 giây trên máy tính của tôi. Mô hình tương đương trong Biogeme mất ~ 10 giây. Một đồng nghiệp viết mã của riêng mình trong các báo cáo Ox khoảng 4 giây cho cùng một kiểu máy này.
Có ai có kinh nghiệm viết chức năng MLE của riêng mình hay có thể chỉ cho tôi theo hướng được tối ưu hóa vượt quá chức năng mặc định optim
(không có ý định chơi chữ)?
Nếu bất cứ ai muốn mã R để tái tạo mô hình, cho tôi biết - tôi glady sẽ cung cấp nó. Tôi chưa cung cấp nó vì nó không liên quan trực tiếp đến vấn đề tối ưu hóa chức năng optim
và để bảo toàn không gian ...
EDIT: Cảm ơn mọi người đã suy nghĩ của bạn. Dựa trên vô số bình luận dưới đây, chúng tôi có thể nhận được R trong cùng một ballpark như Biogeme cho các mô hình phức tạp hơn, và R thực sự nhanh hơn cho một số mô hình nhỏ hơn/đơn giản hơn mà chúng tôi chạy. Tôi nghĩ rằng giải pháp lâu dài cho vấn đề này sẽ liên quan đến việc viết một hàm tối đa riêng biệt dựa trên thư viện fortran hoặc C, nhưng chắc chắn mở ra các cách tiếp cận khác.
Ma quỷ có chi tiết. Bạn có thể gây rối với các tham số 'optim' (xem phần về' điều khiển' trong tài liệu). Bạn có thể so sánh các tham số mặc định với thông số này được sử dụng bởi mã đồng nghiệp của bạn hoặc bởi Biogeme. Chúng có khác nhau không, nếu có thì tại sao? – Marek
@Marek - Biogeme dựa trên thói quen tối đa hóa tùy chỉnh được viết bằng C và đó là một câu chuyện tương tự với Ox.Đây là một lĩnh vực mới cho tôi, nhưng tôi bắt đầu tìm hiểu về các cách tiếp cận khác nhau được sử dụng. – Chase
theo như tôi đã hiểu, nlm() và có thể các thói quen tối ưu hóa khác trong R được viết bằng C rồi. Tôi muốn khuyên bạn nên tìm kiếm quyền truy cập vào các chức năng nội bộ trực tiếp để bạn thoát khỏi phí thay vì phát minh lại bánh xe –