python – 多项/条件Logit回归,为什么StatsModel在mlogit包示例上失败?

我试图重现R中mlogit包的多项logit回归的例子.

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重现此示例,我将Fishing数据集导出为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中更改它.任何帮助将非常感激.

最佳答案 statsmodels中的MNLogit实现了不同版本的多项logit. AFAICS,它对应于R
https://stats.stackexchange.com/questions/186344/r-interpreting-the-multinom-output-using-the-iris-dataset/188426中的nnet multinom

在这种情况下,参数不同于选择而不是解释变量.在多选CLogit版本或R中的mlogit版本中,解释变量在选择上有所不同,但参数与选择无关.

CLogit和其他多项logit版本正在等待statsmodel的pull请求,并且当前在主分支中不可用.

点赞