rstatisticslogistic-regressionmixed-modelsmlogit

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


as I stated in another question I'm trying to fit a mixed logit model in R.

This is my dataset, where MediosUsados is the choice and Persona is the individual 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

I have no problem with the data definition, but when I try to fit the model the following error message is returned:

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

How could I solve this? Any help would be much appreciated.

This is my code:

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')

Also, this is the output of printing the 10 first rows of "data":

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 

It looks like is not taking any alternative as choice, as they're all stated as FALSE. What does this mean?


Solution

  • The main error was that the varying columns were stated as:

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

    While my choice variable values were:

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

    So you want to make sure that the values of the choice variables and the varying variables are the same!