R で mlogit を使用して、輸送モードの選択を生成しようとしています。問題は、特定の選択肢にのみ適用される変数があることです。
より具体的には、自動車、公共交通機関、および非電動の交通手段を使用する確率を予測しようとしています。私の予測因子は、距離、トランジットの待ち時間、世帯内の車両の数、および車両の移動時間です。
このようにフォーマットすると機能します:
> amres<-mlogit(mode~ivt+board|distance+nveh,data=AMLOGIT)
ただし、車両の移動時間 (ivt) で取得した結果は意味がありません。
> summary(amres)
Call:
mlogit(formula = mode ~ ivt + board | distance + nveh, data = AMLOGIT,
method = "nr", print.level = 0)
Frequencies of alternatives:
auto tansit nonmotor
0.24654 0.28378 0.46968
nr method
5 iterations, 0h:0m:2s
g'(-H)^-1g = 6.34E-08
gradient close to zero
Coefficients :
Estimate Std. Error t-value Pr(>|t|)
tansit:(intercept) 7.8392e-01 8.3761e-02 9.3590 < 2.2e-16 ***
nonmotor:(intercept) 3.2853e+00 7.1492e-02 45.9532 < 2.2e-16 ***
ivt 1.6435e-03 1.2673e-04 12.9691 < 2.2e-16 ***
board -3.9996e-04 1.2436e-04 -3.2161 0.001299 **
tansit:distance 3.2618e-04 2.0217e-05 16.1336 < 2.2e-16 ***
nonmotor:distance -2.9457e-04 3.3772e-05 -8.7224 < 2.2e-16 ***
tansit:nveh -1.5791e+00 4.5932e-02 -34.3799 < 2.2e-16 ***
nonmotor:nveh -1.8008e+00 4.8577e-02 -37.0720 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Log-Likelihood: -10107
McFadden R^2: 0.30354
Likelihood ratio test : chisq = 8810.1 (p.value = < 2.22e-16)
ご覧のとおり、統計は見栄えがしますが、ivt は正の係数ではなく、負の係数である必要があります。私の考えでは、すべて0である非電動部分が影響しています。私がしなければならないことは、以下に示すように、方程式の 3 番目の部分を使用することだと思います。
> amres<-mlogit(mode~board|distance+nveh|ivt,data=AMLOGIT)
ただし、これにより次の結果が得られます。
Error in solve.default(H, g[!fixed]) :
Lapack routine dgesv: system is exactly singular: U[10,10] = 0
これもまた、電動化されていない場合は変数がすべて 0 であるためだと思いますが、これを修正する方法がわかりません。すべての代替に適用できない場合、代替固有の変数を含めるにはどうすればよいですか?