mlogit: ошибка в solve.default (H, g [! fixed]): система вычислительно единственная - PullRequest
0 голосов
/ 22 января 2019

Я получаю следующую ошибку при попытке построить модель с помощью пакета 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 раз.

Мне кажется, что я упускаю что-то очевидное в моей постановке проблемы - кто-нибудь видит, что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...