mlogit: ошибка в solve.default(H, g[!fixed]): система вычислительно единственная
Я получаю следующую ошибку при попытке построить модель с помощью пакета mlogit:
Error in solve.default(H, g[!fixed]) :
system is computationally singular: reciprocal condition number = 1.54676e-18
У меня есть следующий код R, который пытается использовать пакет mlogit для моделирования некоторых данных выбора:
library("mlogit")
# preprocess data
raw_choice_data <- read.csv("two-factors-cont-three-choices.csv", header = TRUE)
choice.data <- mlogit.data(raw_choice_data, shape = "long", alt.var="Alt", choice="Choice", id = "Respondent")
# look at what is going on
str(choice.data)
# build model
m <- mlogit(Choice ~ 0 + ConsumerRating + Price, data=choice.data)
summary(m)
Мой выбор данных выглядит так:
Respondent Alt Rand Choice ConsumerRating Price
1.1 1 1 0.8698601 FALSE 3.7 30
1.2 1 2 0.8698601 FALSE 4.2 40
1.3 1 3 0.8698601 TRUE 4.7 50
2.1 2 1 0.1490811 FALSE 3.7 30
2.2 2 2 0.1490811 TRUE 4.2 40
2.3 2 3 0.1490811 FALSE 4.7 50
Полный набор данных (содержащий 50 ответов или 150 строк) находится здесь. Этот набор данных представляет собой искусственные данные, которые я сгенерировал в качестве теста; он соответствует следующим двум продуктам и соответствующим долям рынка:
Я ожидал, что mlogit найдет эти два (правильных по построению) параметров модели:
Копаясь в коде, я обнаружил, что гессиан, вычисляемый mlogit:
ConsumerRating Price
ConsumerRating 8.333333 166.6667
Price 166.666667 3333.3333
Это единственное число, так как второй столбец ровно в 20 раз больше первого. Два компонента градиента точно так же связаны в 20 раз.
Я чувствую, что упускаю что-то очевидное в моей постановке проблемы - кто-нибудь видит, что я делаю неправильно?