Обычно в моделях выбора режима есть переменные, которые варьируются в зависимости от альтернатив («общие переменные»), но не определены для определенных режимов.Например, транзитный тариф присутствует для автобусов и легкорельсового транспорта, но не определен для автомобилей и велосипедов.Обратите внимание, что тариф не ноль.
Я пытаюсь сделать эту работу с пакетом mlogit
для R. В этом MWE я утверждал, что price
не определен для рыбалки с пляжа.Это приводит к ошибке сингулярности.
library(mlogit)
#> Warning: package 'mlogit' was built under R version 3.5.2
#> Loading required package: Formula
#> Loading required package: zoo
#>
#> Attaching package: 'zoo'
#> The following objects are masked from 'package:base':
#>
#> as.Date, as.Date.numeric
#> Loading required package: lmtest
data("Fishing", package = "mlogit")
Fishing$price.beach <- NA
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
head(Fish)
#> mode income alt price catch chid
#> 1.beach FALSE 7083.332 beach NA 0.0678 1
#> 1.boat FALSE 7083.332 boat 157.930 0.2601 1
#> 1.charter TRUE 7083.332 charter 182.930 0.5391 1
#> 1.pier FALSE 7083.332 pier 157.930 0.0503 1
#> 2.beach FALSE 1250.000 beach NA 0.1049 2
#> 2.boat FALSE 1250.000 boat 10.534 0.1574 2
mlogit(mode ~ catch + price | income, data = Fish, na.action = na.omit)
#> Error in solve.default(H, g[!fixed]): system is computationally singular: reciprocal condition number = 3.92205e-24
Создано в 2019-07-08 пакетом Представить (v0.2.1)
Это происходит, когда price
также перемещается в переменную позицию, специфичную для альтернативы.Я думаю, что проблема может заключаться в аргументе функции na.action
, но я не могу найти никакой документации по этому аргументу, кроме тега базовой документации:
na.action :функция, которая указывает, что должно происходить, когда данные содержат NA
Похоже, нет примеров, показывающих, как этот термин используется по-разному и каковы результаты.Здесь есть связанный без ответа вопрос здесь .