mlogit: полиноминальная пробитная модель с перехватом возвращает ошибку - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблема с подгонкой полиноминального пробита к пакету mlogit .

. Мне интересна модель с одной альтернативной конкретной ковариатой с общим коэффициентом (более подробно об обозначениях здесь ).Короче говоря, респонденты 2001 года сталкиваются с 6 вариантами выбора.Каждый респондент имеет оценку полезности, связанную с каждым вариантом.Распределение выбора основано на реальных данных, но для целей данного упражнения баллы полезности (в шкале от 0 до 100) были сгенерированы случайным образом, чтобы избежать мультиколлинеарности.Поскольку сценарий выбора был реальным, оценивается модель с перехватом.

Полные данные доступны здесь , а код для преобразования данных в длинный формат доступен здесь .Ниже я предоставляю head исходных данных, которые я впоследствии преобразовал в длинный формат.

# подготовка данных образца

    library(mlogit)
    data_head<-head(original_data) ##from https://pastebin.com/28XpX7A4
    DT_head_long <- mlogit.data(data_head, shape="wide", varying=1:6, choice="choice_with_6_alternative")  

   DT_head_long<-structure(list(choice_with_6_alternative = c(FALSE, FALSE, FALSE, 
    TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, TRUE, FALSE, FALSE), alt = c(1, 2, 3, 4, 
    5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 
    2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6), random_utility = c(18, 25, 
    12, 13, 2, 37, 3, 21, 38, 3, 6, 51, 8, 33, 32, 9, 6, 29, 43, 
    6, 5, 25, 15, 17, 24, 11, 12, 29, 33, 13, 16, 22, 12, 5, 21, 
    3), chid = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
    3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 
    5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L)), reshapeLong = list(varying = structure(list(
    random_utility = c("random_utility.1", "random_utility.2", 
    "random_utility.3", "random_utility.4", "random_utility.5", 
    "random_utility.6")), v.names = "random_utility", times = c(1, 
    2, 3, 4, 5, 6)), v.names = "random_utility", idvar = "chid", 
    timevar = "alt"), row.names = c("1.1", "1.2", "1.3", "1.4", 
    "1.5", "1.6", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "3.1", 
    "3.2", "3.3", "3.4", "3.5", "3.6", "4.1", "4.2", "4.3", "4.4", 
    "4.5", "4.6", "5.1", "5.2", "5.3", "5.4", "5.5", "5.6", "6.1", 
    "6.2", "6.3", "6.4", "6.5", "6.6"), class = c("mlogit.data", 
    "data.frame"), index = structure(list(chid = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
    3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 
    6L, 6L, 6L), .Label = c("1", "2", "3", "4", "5", "6"), class = "factor"), 
    alt = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 
    5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 
    2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L), .Label = c("1", 
    "2", "3", "4", "5", "6"), class = "factor")), class = "data.frame", row.names = c("1.1", 
    "1.2", "1.3", "1.4", "1.5", "1.6", "2.1", "2.2", "2.3", "2.4", 
    "2.5", "2.6", "3.1", "3.2", "3.3", "3.4", "3.5", "3.6", "4.1", 
    "4.2", "4.3", "4.4", "4.5", "4.6", "5.1", "5.2", "5.3", "5.4", 
    "5.5", "5.6", "6.1", "6.2", "6.3", "6.4", "6.5", "6.6")), choice = "choice_with_6_alternative")

# подгонка модели с пробитом = ИСТИНА

probit <- mlogit(choice_with_6_alternative ~ random_utility, 
  data=DT_head_long, 
  probit=TRUE)

//The model returns the error: 

Error in if (is.null(initial.value) || lnl <= initial.value) break : 
  missing value where TRUE/FALSE needed

# Подгонка модели с помощью пробита = ЛОЖЬ

//model without intercept: runs well
    probit <- mlogit(choice_with_6_alternative ~ random_utility|0, 
      data=DT_head_long, 
      probit=FALSE)

//model with intercept: runs well
    logit <- mlogit(choice_with_6_alternative ~ random_utility, 
      data=DT_head_long, 
      probit=FALSE)

# мои вопросы:

1 - С чем связана ошибка?
2- Модель не опознана?

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