2012-09-25 2 views
3

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을 선택된 나열

  1. 각 레코드 (: 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 데이터 구조로이 설정 :

  2. 대안 고유 값은 비 선택 대안

이의 모습 데이터 구조에 결과를 제로 아웃 :

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

walk_mode_timebike_mode_time을 준비한 방법을 고려하면 수식으로 walk_mode_time + bike_mode_time | 1 + carsdivworkers | 0을 시도해야합니다. 보통 부분적으로 제로화 된 변수를 생성하고 수식의 첫 부분, 즉 walk_mode_time + bike_mode_time + walk_mode_carsdivworkers + bike_mode_carsdivworkers + ... | 1 | 0*_carsdivworkers을 사용하는 것이 편리하다는 것을 알 수 있습니다 (지정되지 않은 것에 대한 계수는 따라서 0이고 나머지는 0과 같습니다) .

데이터에 문제가있을 수도 있습니다 (예 : 0 또는 하나 이상의 대안이 선택된 선택 상황, 모든 대안에 대해 동일한 값을 갖는 변수 등수식 0 | 1 | 0이 실패하면 수식 문제가있을 경우 데이터 문제가 발생할 가능성이 큽니다.

+0

감사합니다. 문제를 좁히기위한 좋은 테스트였습니다. 위의 제안 된 버전으로 수식을 변경하여 추정을 다시 실행했습니다. 나는 똑같은 오류가있다. 이제 데이터의 형식이 잘못된 부분을 분석 할 시간입니다. 수식 0으로 테스트를했을 때 1 | 0, 새로운 오류가 발생했습니다 : 오류 (abs (x - oldx) Ennazus

관련 문제