Мой фрейм данных с именем longData
выглядит так:
ID Set Choice Apple Microsoft IBM Google Intel HewlettPackard Sony Dell Yahoo Nokia
1 1 1 0 1 0 0 0 0 0 0 0 0 0
2 1 2 0 0 1 0 0 0 0 0 0 0 0
3 1 3 0 0 0 1 0 0 0 0 0 0 0
4 1 4 1 0 0 0 1 0 0 0 0 0 0
5 1 5 0 0 0 0 0 0 0 0 0 0 1
6 1 6 0 -1 0 0 0 0 0 0 0 0 0
Я пытаюсь запустить на нем mlogit:
logitModel = mlogit(Choice ~ Apple+Microsoft+IBM+Google+Intel+HewlettPackard+Sony+Dell+Yahoo+Nokia | 0, data = longData, shape = "long")
это дает следующую ошибку:
Error in dfidx::dfidx(data = data, dfa$idx, drop.index = dfa$drop.index, :
the two indexes don't define unique observations
поискав некоторое время, я обнаружил, что эта ошибка была выдана dfidx
, как показано в здесь как:
z <- data[, c(posid1[1], posid2[1])]
if (nrow(z) != nrow(unique(z)))
stop("the two indexes don't define unique observations")
но после вызова следующего кода он запускается без ошибок и дает имена двух idx, которые могут однозначно идентифицировать строку во фрейме данных:
dfidx(longData)$idx
это дает ожидаемый результат как:
~~~ indexes ~~~~
ID Set
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
7 1 7
8 1 8
9 1 9
10 1 10
indexes: 1, 2
Итак, что я делаю не так, я видел несколько связанных вопросов 1, 2, но я не могу найти то, что мне не хватает.