Dự đoán sau khi chạy chức năng mlogit trong R


11

Đây là những gì tôi muốn làm, nhưng dường như không có predictphương pháp nào cho mlogit. Có ý kiến ​​gì không?

library(mlogit)
data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")

Fish_fit<-Fish[-1,]
Fish_test<-Fish[1,]
m <- mlogit(mode ~price+ catch | income, data = Fish_fit)
predict(m,newdata=Fish_test)

4
Bạn đã đọc các họa tiết đi kèm, Ước tính các mô hình logit đa phương thức trong R: Các gói mlogit ? Dường như với tôi bạn chỉ cần áp dụng các hệ số được trang bị trên dữ liệu mới, phải không?
chl

@chl đó là những gì tôi cần làm, vâng, nhưng tôi đã hy vọng tôi sẽ không phải phát minh lại bánh xe.
Zach

Câu trả lời:


2

Đây là mẹo hữu ích: Thêm dữ liệu bạn muốn dự đoán vào mẫu ước tính ban đầu của bạn, nhưng sử dụng biến trọng số để đặt trọng số của những quan sát mới này về 0. Ước tính mô hình (với các quan sát mới có trọng số bằng 0) và nhận dự đoán từ đầu ra "xác suất". Bằng cách đó bạn có thể bỏ qua chức năng dự đoán, đó là một mớ hỗn độn.


6

Gói mlogit có phương thức dự đoán (), ít nhất là trong phiên bản tôi đang sử dụng (0.2-3 với R 2.15.3).

Mã được đưa lên bởi @Zach có một lỗi trong đó. Dữ liệu "định dạng dài" được sử dụng bởi mlogit () có một hàng cho mỗi phương án; đây là định dạng được tạo bởi hàm mlogit.data (). Do đó, để có được dự đoán cho trường hợp đầu tiên, bạn cần phải rút ra tất cả các hàng cho trường hợp đó và có 4:

Fish_fit<-Fish[-(1:4),]
Fish_test<-Fish[1:4,]
m <- mlogit(mode ~price+ catch | income, data = Fish_fit)
predict(m,newdata=Fish_test)

mà cho một kết quả tốt.


4

Sau khá nhiều nỗ lực trong việc cố gắng sử dụng chức năng dự đoán cho dân số, tôi nghĩ rằng tôi có thể thêm một vài hiểu biết cho tất cả các câu trả lời của bạn.

Các predictchức năng của mlogit hoạt động tốt, bạn chỉ cần thực hiện một số điều chỉnh và chắc chắn rằng những điều sau đây được đưa về chăm sóc:

  1. Các newdata(như mong đợi) nên bao gồm chính xác các dữ liệu tương tự như các mẫu được sử dụng cho việc ước lượng mô hình. Điều này có nghĩa là người ta phải kiểm tra các thuộc tính "ẩn" của dữ liệu (chẳng hạn như factormức kế thừa các mức không tồn tại - droplevelcó thể hữu ích trong trường hợp này - hoặc không được đưa vào trong các yếu tố mẫu hoặc sai, colnamev.v.).

  2. Bạn phải đưa ra lựa chọn tùy ý trong newdata của mình (nếu nó không tồn tại) một cái gì đó có thể dễ dàng thực hiện bằng cách sử dụng samplechức năng:

    MrChoice <-sample(c("Car", "Bus", "Walk"),nrow(datase),replace=TRUE, prob = c(0.5, 0.4, 0.1))
    mynewData$mode<-MrChoice
    
  3. Bước bắt buộc tiếp theo là một lần nữa chuyển đổi dữ liệu thành dữ liệu mlogit, sử dụng chức năng tương tự như được sử dụng cho dữ liệu mẫu, ví dụ:

    ExpData3<- mlogit.data(mynewData, shape="wide", choice = "mode",sep=".",id = "TripID")
  4. Bước cuối cùng sẽ là dự đoán thực tế bằng cách sử dụng predictchức năng.

    resulted<-predict(ml1,newdata=ExpData3)

2

Để trả lời câu hỏi của riêng tôi, tôi đã chuyển sang sử dụng gói 'glmnet' để phù hợp với các bản ghi đa phương thức của mình, điều này có thêm lợi thế là sử dụng lasso hoặc lưới đàn hồi để thường xuyên hóa các biến độc lập của tôi. glmnet dường như được đóng gói 'hoàn thành' nhiều hơn so với mlogit, hoàn thành với chức năng 'dự đoán'.


1

mlogitcó chức năng dự đoán, nhưng tôi thấy nó rất khó sử dụng. Tôi đã viết tập hợp các hàm rất xấu của riêng tôi cho một triển khai mà tôi có. Bất cứ ai cũng được chào đón để sử dụng hoặc cải thiện chúng, được lưu trữ trong hồ sơ github của tôi .


0

Tôi khá chắc chắn rằng điều này được thực hiện dễ dàng với gói mlogit đã cho bằng cách sử dụng chức năng được trang bị và sau đó là chức năng dự đoán R tiêu chuẩn. Như chl đã chỉ ra, mặc dù tôi chưa tự mình thực hiện (ít nhất là không dự đoán), được kiểm tra trong các họa tiết gói ở đây trên trang 29.


1
Các họa tiết là đơn giản quyết định; trong thực tế tôi không thể tìm ra cách áp dụng vào dữ liệu mới. Vì vậy, tôi đã viết mã của riêng tôi, được liên kết dưới đây.
gregmacfarlane
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.