1

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 であるためだと思いますが、これを修正する方法がわかりません。すべての代替に適用できない場合、代替固有の変数を含めるにはどうすればよいですか?

4

2 に答える 2

2

完全な分離ができているようです。たとえば、変数のクロステーブルを見て、これを確認しましたか? (予測子の 1 つの組み合わせで完全な予測が可能になる場合、モデルを適合させることはできません...) この点に関して、データセットのサイズを知ることは役に立ちます - あなたが持っているデータの量に対して過剰に適合している可能性があります。これはモデリングにおける一般的な問題であり、 に固有のものではありませんmlogit

あなたは「統計は素晴らしいようだ」と言っていますが、Pr(>|t|)s の値と はLikelihood ratio test信じられないほど重要に見えます。これは、この問題と一致しています。これは、係数の推定値が不正確になる可能性が高いことを意味します。(それらは、単変量モデリングによって生成される係数に似ていますか?)。おそらく、より単純なモデルの方が適切でしょう。

@ user3092719 を編集:

一般化された線形モデルを当てはめていますが、これは簡単にオーバーフィットする可能性があります (結果変数が離散的または名義的であるため、つまり値の数が制限されているため)。mlogitロジスティック回帰の拡張です。説明するための後者の簡単な例を次に示します。

> df1 <- data.frame(x=c(0, rep(1, 3)),
                    y=rep(c(0, 1), 2))
> xtabs( ~ x + y, data=df1)
   y
x   0 1
  0 1 0
  1 1 2

右上隅のゼロに注意してください。これは「完全な分離」を示しています。これは、このセットに基づいていることが確実x=0にわかっている場合に、それを意味します。したがって、確率的予測モデルはあまり意味がありません。からのいくつかの出力y=0

> summary(glm(y ~ x, data=df1, binomial(link = "logit")))

与える

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)   -18.57    6522.64  -0.003    0.998
x              19.26    6522.64   0.003    0.998

ここで、Std. Errors のサイズは、係数の値に比べて疑わしいほど大きくなっています。また、警告が表示されるはずですNumber of Fisher Scoring iterations: 17-大きな番号。適合するために必要な反復は、数値的な不安定性を示唆しています。

あなたの解決策は、モデルでこの完全な分離の問題が発生しないようにすることを含むようですが、最小限の実例がないと確信が持てません。

于 2013-12-11T22:42:31.907 に答える
2

私はロジットモデルのさまざまな実装に精通していませんが、人によってばらつきがあり、マトリックスの代替が代替と選択者間のばらつきで適切に決定されることを確認することに関係していると思います。あなたは何を言うことから得ますか

amres<-mlogit(mode~distance| nveh | ivt+board,data=AMLOGIT)

mlogit次のように理解しているように、パイプ間にグループ分離があります。最初の部分は基本的な式であり、2番目の部分は選択肢間で変化しない変数です(つまり、特定の人、性別、収入のみです-nvehはそうすべきだと思いますbe here)、3 番目の部分は選択肢によって異なります。

ちなみに、Ken Train は mlogit に関するビネットのセットを持っており、特に役立つかもしれません。Viton は、パイプのある仕切りについて言及しています。

ケン・トレインのビネット

フィリップ・ヴィトンのビネット

イヴ・クロワッサンのビネット

于 2013-12-11T21:33:26.213 に答える