我想使用这个R
mlogit
包。文档(http://cran.r-project.org/web/packages/mlogit/vignettes/mlogit.pdf)写得很好,但我还有一个问题。
假设我有一个由三个分类变量组成的数据集:mode
、age
、cost
。mode
有三个水平(mode1
, mode2
, mode3
),另外两个变量有两个水平(age1
,age2
和cost1
, cost2
)。
基本上,它采用以下形式:
R> head(df)
mode age cost
1 mode2 age1 cost2
2 mode1 age1 cost2
3 mode1 age2 cost1
4 mode3 age1 cost1
使用该命令mlogitSample <- mlogit.data(df, choice = "mode", shape = "wide")
,我可以将此数据集“转换”为以下mlogit
格式:每行扩展为三行(对应于三个不同的响应类别),mode
列转换为TRUE
or的序列FALSE
。这非常适合使用mlogit
;但是,我认为这也是我得到错误的原因Lapack routine dgesv: system is exactly singular: U[8,8] = 0
,因为我有多个不再独立的行。
因为我知道可以将多项式 logit 方法应用于我的案例,所以我想知道如何使用这个包来做到这一点。为了类似的目标,multinom
package的功能nnet
工作正常,但它不适合我想到的同一模型:我想拟合模型 $\log(\pi_j(x)) = \alpha_j + \beta\cdot x$,每个模式类别 $j$ 的截距 $\alpha_j$ 和常数系数 $\beta$ 的向量不同。