我试图重现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复制这个示例,我将钓鱼数据集导出为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
我试图找出如何重新组织原始数据集fishing,因为我知道mlogit包在拟合之前会重新组织数据,但无法在statsmodel中找到如何更改的方法。任何帮助都将不胜感激。
最佳答案
statsmodels中的mnlogit实现了不同版本的多项式logit。afaics,它对应于rhttps://stats.stackexchange.com/questions/186344/r-interpreting-the-multinom-output-using-the-iris-dataset/188426
在这种情况下,参数在不同的选项中有所不同,但解释性变量不一样在多项选择clogit版本或r中的mlogit版本中,解释变量在不同的选项中有所不同,但参数是独立于选项的。
clogit和其他多项logit版本正在等待statsmodels的pull请求,目前在主分支中不可用。