Я пытаюсь использовать mlogit в R для выбора режима транспортировки. Проблема в том, что у меня есть переменная, которая применяется только к определенным альтернативам.
Чтобы быть более конкретным, я пытаюсь предсказать вероятность использования автомобильного, транзитного и немоторизованного видов транспорта. Мои предикторы: расстояние, время ожидания в пути, количество транспортных средств в семье и время в пути.
Он работает, когда я форматирую его следующим образом:
> amres<-mlogit(mode~ivt+board|distance+nveh,data=AMLOGIT)
Однако результаты, которые я получаю для времени в пути (ivt), не имеют смысла:
> summary(amres)
Call:
mlogit(formula = mode ~ ivt + board | distance + nveh, data = AMLOGIT,
method = "nr", print.level = 0)
Frequencies of alternatives:
auto tansit nonmotor
0.24654 0.28378 0.46968
nr method
5 iterations, 0h:0m:2s
g'(-H)^-1g = 6.34E-08
gradient close to zero
Coefficients :
Estimate Std. Error t-value Pr(>|t|)
tansit:(intercept) 7.8392e-01 8.3761e-02 9.3590 < 2.2e-16 ***
nonmotor:(intercept) 3.2853e+00 7.1492e-02 45.9532 < 2.2e-16 ***
ivt 1.6435e-03 1.2673e-04 12.9691 < 2.2e-16 ***
board -3.9996e-04 1.2436e-04 -3.2161 0.001299 **
tansit:distance 3.2618e-04 2.0217e-05 16.1336 < 2.2e-16 ***
nonmotor:distance -2.9457e-04 3.3772e-05 -8.7224 < 2.2e-16 ***
tansit:nveh -1.5791e+00 4.5932e-02 -34.3799 < 2.2e-16 ***
nonmotor:nveh -1.8008e+00 4.8577e-02 -37.0720 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Log-Likelihood: -10107
McFadden R^2: 0.30354
Likelihood ratio test : chisq = 8810.1 (p.value = < 2.22e-16)
Как видите, статистика выглядит отлично, но коэффициент ivt должен быть отрицательным, а не положительным. Я думаю, что на это влияет немоторизованная часть, которая равна 0. Я считаю, что мне нужно использовать третью часть уравнения, как показано ниже:
> amres<-mlogit(mode~board|distance+nveh|ivt,data=AMLOGIT)
Однако это приводит к:
Error in solve.default(H, g[!fixed]) :
Lapack routine dgesv: system is exactly singular: U[10,10] = 0
Я полагаю, что это опять же потому, что все переменные равны 0 для немоторизованных, но я не знаю, как это исправить. Как включить конкретную альтернативную переменную, если она не применяется ко всем альтернативам?