mlogit 패키지를 사용하여 여행 모드 선택 모델을 추정하려고합니다. 궁극적으로 더 많은 변수를 가진 중첩 모델을 설정하려고합니다. 그러나 테스트 할 매우 단순한 중첩되지 않은 다항 모델을 먼저 설정하려고합니다. 특히, 우리가 달성하려고 시도하는 것은 대체 특정 (예 : 자전거 대 걷기 대 드라이브) 유틸리티 기능이 있다는 점에서 mlogit 패키지의 예와 다릅니다.mlogit 패키지로 다항식로 짓 모델 설정
유틸리티 (SOV) = 베타 * carsdivworkers
을 다음과 같이"recid","mode","walk_mode_time","bike_mode_time","carsdivworkers"
254,"Bike",15.0666484832764,4.51999473571777,0.5
7,"SOV",17.9941387176514,5.39824199676514,2
40,"Walk",43,12.8999996185303,1
우리는이 테스트 모델에 지정하려는 유틸리티 기능은 다음과 같습니다
우리의 시작 데이터 세트 (간체)이 양식을 가지고
유틸리티 (도보) 상수 (워크) + beta6 * (walk_mode_time) + beta7의 * (carsdivworkers를) =
유틸리티 (바이크) 상수 (바이크) + beta8의 * (= bike_mode_tim을 선택된 나열
- 각 레코드 (: E) + beta9의 * (carsdivworkers))
우리의 데이터가 더 mlogit 문서의 예제처럼 보이게하기 위해, 우리는 우리가 우리의 데이터를 구조화 할 필요가 있다고 생각 대안)은 특정 여행에 대해 선택되지 않은 대안을 포함하도록 복제했습니다. 다음과 같이
이"recid","mode","choice","walk_mode_time",”bike_mode_time","cardivwkr" 7,"Bike",FALSE,0,5.39824199676514,1 7,"DriveTransit",FALSE,0,0,1 7,"HOV2",FALSE,0,0,1 7,"HOV3",FALSE,0,0,1 7,"SOV",TRUE,0,0,1 7,"Walk",FALSE,17.9941387176514,0,1 7,"WalkTransit",FALSE,0,0,1 40,"Bike",FALSE,0,12.8999996185303,0.5 40,"DriveTransit",FALSE,0,0,0.5 40,"HOV2",FALSE,0,0,0.5 40,"HOV3",FALSE,0,0,0.5 40,"SOV",FALSE,0,0,0.5 40,"Walk",TRUE,43,0,0.5 40,"WalkTransit",FALSE,0,0,0.5 254,"Bike",TRUE,0,4.51999473571777,1 254,"DriveTransit",FALSE,0,0,1 254,"HOV2",FALSE,0,0,1 254,"HOV3",FALSE,0,0,1 254,"SOV",FALSE,0,0,1 254,"Walk",FALSE,15.0666484832764,0,1 254,"WalkTransit",FALSE,0,0,1
우리는 다음 mlogit 데이터 구조로이 설정 :
- 대안 고유 값은 비 선택 대안
이의 모습 데이터 구조에 결과를 제로 아웃 :
logit_data <- mlogit.data(data=joined_data,
choice="choice",
shape="long",
alt.var="mode",
chid.var="recid",
drop.index=TRUE,
reflevel= "SOV")
그리고 우리의 모델 사양 :
solve.default에
이
오류 : LAPACK 루틴 dgesv는 : 시스템은 정확히 단수
이다 (H, G [고정!]) : 우리는 전체 데이터 세트에 대해이 작업을 실행할 때불행하게도, 우리는 다음과 같은 오류가
이 수식은 우리가 원하는 유틸리티 함수를 지정하지만 확실하지는 않습니다. 이 올바른지? 또한 데이터 레코드를 수동으로 복제해야합니까? 아니면 mlogit.data()가 우리의 초기 데이터 세트에서 선택 대안 세트를 만들 수있는 방법이 있습니까?
감사합니다. 문제를 좁히기위한 좋은 테스트였습니다. 위의 제안 된 버전으로 수식을 변경하여 추정을 다시 실행했습니다. 나는 똑같은 오류가있다. 이제 데이터의 형식이 잘못된 부분을 분석 할 시간입니다. 수식 0으로 테스트를했을 때 1 | 0, 새로운 오류가 발생했습니다 : 오류 (abs (x - oldx)
Ennazus