多項混合ロジットモデルの推定を求めて、多項ロジットモデルのmlogit
パッケージを発見しました。優れたビネットを読んだ後、記載されている例のいずれにも自分のデータを適用できないことがわかりました。
私は今、私の問題を解決してくれることを期待して書き、私の状況を説明するための最小限の例を作成しました.
問題は次のとおりです。子音「Q」を含む単語がどこかにあります。現在、これらの単語を聞いて、Q、U、またはその他の子音を聞いたかどうかを言うように割り当てられた人々を対象に実験が行われました。これは、音節の位置や実語/非実語などのいくつかの要因に応じてモデル化する必要があります。
最小限の例では、音節の位置で 4 人とその回答を作成しました。
library(mlogit)
library(nnet)
set.seed(1234)
data <- data.frame(personID = as.factor(sample(1:4, 40, replace=TRUE)),
decision = as.factor(sample(c("Q","U", "other"), 40, replace=TRUE)),
syllable = as.factor(sample(1:4, 40, replace=TRUE)))
summary(data)
personID decision syllable
1:11 other:10 1:18
2:10 Q :18 2: 9
3:10 U :12 3: 5
4: 9 4: 8
私の知る限り、nnet
のmultinom
機能は混合モデルをカバーしていません。
modNnet1 <- multinom(decision ~ syllable, data=data)
最初に、-関数を使用しmlogit.data
てファイルを再形成しました。同僚と話し合った結果、alternative.specific.variable は存在しないという結論に達しました。
dataMod <- mlogit.data(data, shape="wide", choice="decision", id.var="personID")
mod1 <- mlogit(formula = decision ~ 0|syllable,
data = dataMod,
reflevel="Q", rpar=c(personID="n"), panel=TRUE)
Error in names(sup.coef) <- names.sup.coef :
'names' attribute [1] must be the same length as the vector [0]
mod2 <- mlogit(formula = decision ~ personID|syllable,
data = dataMod,
reflevel="Q", rpar=c(personID="n"), panel=TRUE)
Error in solve.default(H, g[!fixed]) :
Lapack routine dgesv: system is exactly singular: U[3,3] = 0
いいえ、どうすればいいのかわからないので、ここで助けを求めます。しかし、この種の問題は解決できると信じてmlogit
いますが、まだ見ていません;)