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变量的值是一样的!
正如我在另一个问题中所述,我正在尝试在 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变量的值是一样的!