mlogit 包 R 中的错​​误缺少需要 TRUE/FALSE 的值

Error in mlogit package R missing value where TRUE/FALSE needed

正如我在另一个问题中所述,我正在尝试在 R 中拟合混合 logit 模型。

这是我的数据集,其中 MediosUsados 是选项,Persona 是个人 ID:

Persona ZonaOrigen ZonaDestino     Proposito MediosUsados    ModoPriPub     ModoMotor TiempoViaje   Sexo AdultoMayor
1 10001001        786         786    Al Trabajo        A pie No motorizado No motorizado           2 Hombre          No
2 10001001        786         786 Volver a Casa        A pie No motorizado No motorizado           2 Hombre          No
3 10001002        786         786    De compras        A pie No motorizado No motorizado           6  Mujer          No
4 10001002        786         786    De compras        A pie No motorizado No motorizado           1  Mujer          No
5 10001002        786         786 Volver a Casa        A pie No motorizado No motorizado           4  Mujer          No
6 10001002        786         786    De compras        A pie No motorizado No motorizado          15  Mujer          No
                    Estudios IngresoFinal Viajes.Bus Viajes.Metro Viajes.Taxi Viajes.Apie Viajes.Bicicleta
1            Basica/Primaria       240000          0            0           0         152               12
2            Basica/Primaria       240000          0            0           0         152               12
3 Media Cientifica-Humanista            0          0            0           0         152               12
4 Media Cientifica-Humanista            0          0            0           0         152               12
5 Media Cientifica-Humanista            0          0            0           0         152               12
6 Media Cientifica-Humanista            0          0            0           0         152               12
  TiempoPromedio.Bus TiempoPromedio.Metro TiempoPromedio.Taxi TiempoPromedio.Apie TiempoPromedio.Bicicleta
1                  0                    0                   0                  23                        0
2                  0                    0                   0                  23                        0
3                  0                    0                   0                  23                        0
4                  0                    0                   0                  23                        0
5                  0                    0                   0                  23                        0
6                  0                    0                   0                  23                        0

我对数据定义没有问题,但是当我尝试拟合模型时返回以下错误消息:

Error in if (abs(x - oldx) < ftol) { : 
  missing value where TRUE/FALSE needed

我该如何解决这个问题?任何帮助将不胜感激。

这是我的代码:

library(readxl)
library(dfidx)
library(mlogit)

TravelMode <- read_excel('Model_strings.xlsx')
TravelMode<-as.data.frame(TravelMode)
View(TravelMode)

data<-mlogit.data(choice='MediosUsados', varying = 13:22, shape='wide', data=TravelMode, idx='Persona')
mlogit<-mlogit(MediosUsados~Viajes+TiempoPromedio | Sexo+IngresoFinal, data=data, reflevel='Metro')

此外,这是打印前 10 行“数据”的输出:

first 10 observations out of 248745 
~~~~~~~
    Persona ZonaOrigen ZonaDestino     Proposito MediosUsados    ModoPriPub     ModoMotor TiempoViaje   Sexo AdultoMayor
1  10001001        786         786    Al Trabajo        FALSE No motorizado No motorizado           2 Hombre          No
2  10001001        786         786    Al Trabajo        FALSE No motorizado No motorizado           2 Hombre          No
3  10001001        786         786    Al Trabajo        FALSE No motorizado No motorizado           2 Hombre          No
4  10001001        786         786    Al Trabajo        FALSE No motorizado No motorizado           2 Hombre          No
5  10001001        786         786    Al Trabajo        FALSE No motorizado No motorizado           2 Hombre          No
6  10001001        786         786 Volver a Casa        FALSE No motorizado No motorizado           2 Hombre          No
7  10001001        786         786 Volver a Casa        FALSE No motorizado No motorizado           2 Hombre          No
8  10001001        786         786 Volver a Casa        FALSE No motorizado No motorizado           2 Hombre          No
9  10001001        786         786 Volver a Casa        FALSE No motorizado No motorizado           2 Hombre          No
10 10001001        786         786 Volver a Casa        FALSE No motorizado No motorizado           2 Hombre          No
          Estudios IngresoFinal       alt Viajes TiempoPromedio chid    idx
1  Basica/Primaria       240000      Apie    152             23    1 1:Apie
2  Basica/Primaria       240000 Bicicleta     12              0    1 1:leta
3  Basica/Primaria       240000       Bus      0              0    1  1:Bus
4  Basica/Primaria       240000     Metro      0              0    1 1:etro
5  Basica/Primaria       240000      Taxi      0              0    1 1:Taxi
6  Basica/Primaria       240000      Apie    152             23    2 2:Apie
7  Basica/Primaria       240000 Bicicleta     12              0    2 2:leta
8  Basica/Primaria       240000       Bus      0              0    2  2:Bus
9  Basica/Primaria       240000     Metro      0              0    2 2:etro
10 Basica/Primaria       240000      Taxi      0              0    2 2:Taxi

~~~ indexes ~~~~
   chid       alt
1     1      Apie
2     1 Bicicleta
3     1       Bus
4     1     Metro
5     1      Taxi
6     2      Apie
7     2 Bicicleta
8     2       Bus
9     2     Metro
10    2      Taxi
indexes:  1, 2 

看起来没有选择任何替代方案,因为它们都被声明为 FALSE。这是什么意思?

主要错误是将不同的列表示为:

"Metro", "Bus", "Apie", "Taxi", "Bicicleta".

而我的选择变量值是:

"Metro", "Bus Alimentador", "A pie", "Taxi o Radio Taxi", "Bicicleta".

所以你要确保choice变量和varying变量的值是一样的!