Как решить mlo git Ошибка в файле resolve.default (H, g [! Fixed]): система является единственной в вычислительном отношении: обратное число условия = 3.03549e-18? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть данные широкого формата, я звоню mlogit.data И я попытался реализовать смешанную модель lo git с использованием пакета mlo git, у меня есть одна горячая кодировка категориальных столбцов (цвет, size_group), это то, что вызывая ошибку ниже?

числовые функции в model_data преобразуются в log1p.

Complete.choice <- mlogit.data(model_data, choice = "y", 
                                 varying = 2:79, shape = "wide", sep = "__", id = "customer_id")
formula <- as.formula("y ~ price + weight + length + height + width + color_white + 
                    color_red + color_black + size_group_1 + size_group_3 + size_group_5 + 
                     size_group_4 + size_group_2 | -1")

# rpar
 features <- c("price","weight","length","height","width","color_white",
              "color_red","color_black" ,"size_group_1",
              "size_group_3","size_group_5","size_group_4","size_group_2" )
random_parameter <- rep("n", 1:length(features))
names(random_parameter) <- features

sample.mxl <- mlogit(formula, Complete.choice , rpar = random_parameter, 
                       R = 40, halton = NA, panel = TRUE, seed = 123, print.level = 0)

Error in solve.default(H, g[!fixed]) : 
  system is computationally singular: reciprocal condition number = 3.23485e-18

1 Ответ

0 голосов
/ 29 мая 2020

Ошибка означает, что матрица Гессе сингулярна, т.е. определитель равен нулю, а обратной не существует. Фактически, вы не можете получить матрицу вариации-ковариации.

Это может произойти по нескольким причинам:

  1. У вас недостаточно вариаций в ваших данных, чтобы идентифицировать модель. Вы пытаетесь оценить очень сложную модель, для которой потребуются большие объемы ваших данных (вариации и наблюдения).
  2. Модель завышена (вы сделали правильные нормализации?) 1009 * Вы оцениваете 13 случайных параметров, что требует много от ваших данных. Я бы начал с одного случайного параметра и постепенно увеличивал бы его, чтобы увидеть, когда ваша модель не работает. Также с более чем 4-5 случайными параметрами вы не должны использовать Halton dr aws, но вам потребуется какая-то процедура скремблирования. Я бы порекомендовал скремблированный Sobol dr aws, MLHS dr aws или закодированный Halton dr aws.
  3. Вы используете только R=40. Это очень низкий показатель. Это даст плохое приближение к многомерному интегралу, который представляет собой смешанную вероятность lo git. Количество необходимых dr aws увеличивается в зависимости от сложности модели, доступных альтернатив et c. Многие думают, что 500–1000 - это хорошо, в то время как другие склонны использовать 5000 или выше. Я начинаю с 1000 и постепенно увеличиваю до стабилизации моих параметров. Слишком мало dr aws также может вызвать ошибку, которую вы видите.

Невозможно диагностировать причину без проверки фактических данных, но это, по крайней мере, некоторые подсказки, которые помогут вам начать работу.

...