R에서 mlogit 함수를 실행 한 후 예측


11

여기에 내가하고 싶은 일이 있지만 predictmlogit 에는 방법 이없는 것 같습니다 . 어떤 아이디어?

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
R : mlogit 패키지의 다항식 로짓 모형 추정 비네팅을 읽었습니까 ? 새로운 데이터에 적합 계수를 적용 해야하는 것 같습니다.
chl

@chl 그것이 내가해야 할 일입니다. 그렇지만 바퀴를 다시 발명 할 필요가 없기를 바랍니다.
Zach

답변:


2

유용한 방법은 다음과 같습니다. 예측하려는 데이터를 원래 추정 샘플에 추가하지만 가중치 변수를 사용하여 새 관측치의 가중치를 0으로 설정합니다. 새 관측치가 0으로 가중 된 모형을 추정하고 "확률"출력에서 예측을 가져옵니다. 그렇게하면 예측 기능을 우회 할 수 있습니다.


6

mlogit 패키지에는 적어도 내가 사용하는 버전에서 (R 2.15.3의 0.2-3) predict () 메소드가 있습니다.

@Zach가 작성한 코드에는 오류가 하나 있습니다. mlogit ()에서 사용하는 "긴 형식"데이터에는 각 대안마다 하나의 행이 있습니다. 이것은 mlogit.data () 함수에 의해 작성된 형식입니다. 따라서 첫 번째 경우에 대한 예측을 얻으려면 해당 경우에 대한 모든 행을 가져와야하며 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)

좋은 결과를 제공합니다.


4

모집단에 예측 기능을 사용하려고 많은 노력을 기울인 후 모든 답변에 통찰력을 추가 할 수 있다고 생각합니다.

predictmlogit 의 기능은 정상적으로 작동하므로 약간만 조정하면 다음 사항을주의해야합니다.

  1. newdata(예상) 모델의 추정에 사용 된 샘플과 정확하게 동일한 데이터를 포함한다. 즉, 데이터의 "숨겨진"속성 (예 : factor존재하지 않는 레벨을 상속 하는 속성)을 확인해야합니다 ( droplevel이 경우에는 유용하거나 샘플 요소에 도입되지 않았거나 잘못된 것 colname등).

  2. 새 데이터에서 존재하지 않는 경우 sample함수를 사용하여 쉽게 수행 할 수있는 항목을 임의로 선택해야 합니다.

    MrChoice <-sample(c("Car", "Bus", "Walk"),nrow(datase),replace=TRUE, prob = c(0.5, 0.4, 0.1))
    mynewData$mode<-MrChoice
  3. 다음으로 필요한 단계는 다음과 같이 샘플 데이터에 사용 된 것과 동일한 기능을 사용하여 데이터를 mlogit 데이터로 다시 변환하는 것입니다.

    ExpData3<- mlogit.data(mynewData, shape="wide", choice = "mode",sep=".",id = "TripID")
  4. 마지막 단계는 predict함수를 사용한 실제 예측 입니다.

    resulted<-predict(ml1,newdata=ExpData3)

2

내 자신의 질문에 대답하기 위해 다항식 로짓에 맞게 'glmnet'패키지를 사용했습니다. 이는 올가미 또는 탄성 그물을 사용하여 독립 변수를 정규화하는 이점이 있습니다. glmnet은 '예측'기능을 갖춘 mlogit보다 훨씬 '완성'된 것으로 보입니다.


1

mlogit예측 기능이 있지만 사용하기가 매우 어렵다는 것을 알았습니다. 내가 가진 구현을 위해 매우 추악한 함수 집합을 작성했습니다 . 누구나 내 github 프로필 에 저장하여 사용하거나 개선 할 수 있습니다 .


0

적합 함수와 표준 R 예측 함수를 사용하여 주어진 mlogit 패키지로 쉽게 수행 할 수 있다고 확신합니다. chl이 지적했듯이, 아직 직접하지는 않았지만 (적어도 예측하지는 못했지만) 29 페이지 의 패키지 비네팅에 나와 있습니다 .


1
비네팅은 매우 간단합니다. 실제로 새 데이터에 적용하는 방법을 알 수 없었습니다. 그래서 아래 링크 된 내 코드를 작성했습니다.
gregmacfarlane 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.