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?
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!