Как исправить ошибку mlogit: «система вычислительно единственная: число взаимных условий» - PullRequest
0 голосов
/ 12 июня 2019

Когда я пытаюсь подогнать модель Ordered Logit к длинному набору данных, функции возвращают ошибку Error in solve.default(H, g[!fixed]): system is computationally singular: reciprocal condition number = 3.64628e-18.

Я видел это , но данные больше не доступны, и я не мог решить мою проблему.Кроме того, попытался этот и этот безуспешно.

Код, который воспроизводит набор данных, который я использую:

# Example of caracteristic dummies
caract <- tibble::tribble(~CPU, ~RAM,
                     1,    1,
                    -1,    1,
                     1,   -1,
                    -1,   -1)


# Weights for choosing the probabilities
weights <- c(0.3954545, 0.2727273, 0.2363636, 0.0954546)

# Simulating the choices block
block <- caract
block$Alternative <- 1:4

# Simulating the dataset
df <- NULL
n_decisors <- 50
set.seed(123456)
i <- 1
for(i in 1:n_decisors){
  block$Decisor <- i
  block$Choice <- sample(1:4, prob = weights)
  df <- rbind(df, block)
}

И процедура подбора модели, которая возвращает ошибку:

library(mlogit)
# Creating the model data object
df_mlogit <- mlogit.data(data = df, choice = "Choice", 
                         shape = "long", alt.var = "Alternative", 
                         varying = 1:2, ranked = T)

# Fitting the model
m <- mlogit(formula = Choice ~ CPU + RAM, 
            rpar = c(CPU = "n", RAM = "n"), 
            data = df_mlogit)

Когда я делаю блок выбора неисчерпывающим, выбирая строки из caract в каждой итерации df моделирования, ошибка не 'Это происходит, но мне нужно оценить случай, когда данные в формате имитирует в этом примере.Кроме того, я знаю, nnet::multinom(Choice ~ CPU + RAM, data=df) решает эту проблему, но она не подходит для смешанной логит-модели, что также необходимо для меня.

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