4

Rでmlogitパッケージの多項ロジット回帰の例を再現しようとしています.

data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
#a pure "conditional" model
summary(mlogit(mode ~ price + catch, data = Fish))

この例を statsmodel 関数 MNLogit で再現するには、釣りデータ セットを csv ファイルとしてエクスポートし、次の手順を実行します。

import pandas
import statsmodels.api as st
#load data
df = pandas.read_csv("Fishing.csv")
x = df.drop('mode', axis = 1)
y = df['mode']
mdl = st.MNLogit(y, x)
mdl_fit = mdl.fit()  

次のエラーが表示されます

LinAlgError: Singular matrix

mlogit パッケージが適合前にデータを再編成することはわかっていますが、statsmodel でそれを変更する方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

4

statsmodels の MNLogit は、異なるバージョンの多項ロジットを実装しています。AFAICS、R https://stats.stackexchange.com/questions/186344/r-interpreting-the-multinom-output-using-the-iris-dataset/188426の nnet multinom に対応します

この場合、パラメーターは選択肢間で異なりますが、説明変数は異なりません。複数選択の CLogit バージョン、または R の mlogit バージョンでは、説明変数は選択肢によって異なりますが、パラメーターは選択肢に依存しません。

CLogit およびその他の多項ロジット バージョンは、統計モデルのプル リクエストで待機中であり、現在メイン ブランチでは利用できません。

于 2016-01-02T13:46:29.007 に答える