2012-01-08 2 views
0

R의 mlogit 패키지를 사용하여 log-normal 매개 변수가있는 혼합 된 logit 모델을 추정합니다. 패키지는 정상적으로 실행되지만, 특히 정규 분포가 아닌 매개 변수의 경우 랜덤 계수를 추출하는 방법이 있습니까? 추출 할 수있는 방법이 있나요mlogit R 패키지에서 로그 정규 랜덤 계수 추출하기

Coefficients : 
      Estimate Std. Error t-value Pr(>|t|)  
pf   -0.866325 0.032452 -26.696 < 2.2e-16 *** 
cl   -0.203770 0.013411 -15.194 < 2.2e-16 *** 
loc   2.038715 0.079918 25.510 < 2.2e-16 *** 
wk   1.481339 0.065181 22.727 < 2.2e-16 *** 
rev.tod  2.105324 0.033971 61.973 < 2.2e-16 *** 
seas  -8.490331 0.279262 -30.403 < 2.2e-16 *** 
sd.cl  0.360140 0.017474 20.610 < 2.2e-16 *** 
sd.loc  1.575765 0.089507 17.605 < 2.2e-16 *** 
sd.wk  1.600303 0.122982 13.012 < 2.2e-16 *** 
sd.rev.tod 0.390088 0.021940 17.780 < 2.2e-16 *** 
sd.seas  1.997713 0.106031 18.841 < 2.2e-16 *** 

random coefficients 
       Min. 1st Qu.  Median  Mean  3rd Qu.  Max. 
cl   -Inf -0.4466810 -0.2037701 -0.2037701 0.03914082  Inf 
loc   -Inf 0.9758776 2.0387151 2.0387151 3.10155255  Inf 
wk  -0.1189636 0.6811879 1.4813394 1.4813394 2.28149087 3.081642 
rev.tod 0.0000000 6.3104924 8.2097637 8.8587752 10.68065958  Inf 
seas   -Inf -9.8377681 -8.4903311 -8.4903311 -7.14289412  Inf 

: "R에 대한 mlogit 패키지를 사용 케네스 기차의 운동", 22 페이지에서 예를 사용

,

library(mlogit) 
data("Electricity", package = "mlogit") 
Electr <- mlogit.data(Electricity, id = "id", choice = "choice", 
       varying = 3:26, shape = "wide", sep = "") 

Electr$rev.tod <- -1*Electr$tod # Reverse sign on tod parameter 
Elec.mxl <- mlogit(choice ~ pf + cl + loc + wk + rev.tod + seas | 0, data=Electr, 
       rpar = c(cl = "n", loc = "n", wk = "u", rev.tod = "ln", seas = "n"), 
       R = 100, halton = NA, print.level = 0, panel = TRUE) 
summary(Elec.mxl) 

이 (절단) 출력을 생성합니다 이 무작위 계수의 평균은? 이것은 주로 비정규 분산 매개 변수에 대한 문제입니다. Train & Croiss가 지적한 것처럼 다음 코드를 사용하여 로그 정규 분포 매개 변수의 평균 계수를 계산할 수 있지만보다 직관적 인 (더 간단하고 간단합니다!) 방법이 있는지 궁금합니다.

-exp(coef(Elec.mxl)["rev.tod"]+(0.5*(coef(Elec.mxl)["sd.rev.tod"])**2)) 
+0

이 질문에 대한 자세한 내용 stats.stackexchange.com에서 시도해 볼 수도 있습니다. –

답변

0

실제로 ... 출력이 없습니다. summary(Elec.mxl)도 실행해야합니다. 출력의 소스를 알려주지 않는 것 외에도 -Inf를 포함하는 시퀀스의 평균은 시스템 작성자의 쾌락에 따라 -Inf 또는 undefined가 될 것입니다. 당신이라는 이름의 열을 의미하는 경우 "평균"이 트릭해야한다 (요약 객체의 구조에서 찾고 후) :

 summary(Elec.mxl)$summary.rpar[ , "Mean"] 
#  cl  loc   wk rev.tod  seas 
#-0.2551692 1.9159597 1.6331273 8.9872786 -8.4093959 

당신은 당신이 바로, 단지 임의 계수를 원하는 말 했는가를? (적어도 규칙적인 로짓 모델에서 적어도 병리학 적 결과를 생성하는 데이터 상황을 나타내는 8의 순서로 계수를 생성하는 로짓 모델에 대해 조금 걱정하지 않습니까?)

+0

네, 그게 ... 감사합니다! 이 예제의 계수에 관해서는, 제 모델이 아니기 때문에 걱정하지 않아요. 제 문제를 설명하기 위해 사용하고있었습니다. 다행히도 응용 프로그램의 계수가 더 좋습니다. – DartPrivateer

관련 문제