r - mlogit Ошибка в if (abs (x - oldx) ‹ftol) {: отсутствует значение, где требуется ИСТИНА / ЛОЖЬ

Привет, я пытаюсь использовать функцию mlogit для оценки модели дискретного выбора для режима рабочей поездки по выбору транспорта.

вот как выглядят мои данные после использования функции mlogit.data

mledata <- mlogit.data(data, choice="choice",shape="long", chid.var="ID", alt.var="fmode")

> head(mledata[,c(86,90:96)])
        ID extrabusdistance extratraindistance freq fmode y.n choice extradistance
1.car    1           0.0000            0.00000    3   car yes   TRUE   0.00000
1.bus    1          19.8579            0.00000    3   bus  no  FALSE   19.85790
1.train  1           0.0000           27.32557    3 train  no  FALSE   27.32557
2.car    2           0.0000            0.00000    3   car yes   TRUE   0.00000
2.bus    2          28.1311            0.00000    3   bus  no  FALSE   28.13110
2.train  2           0.0000           39.32078    3 train  no  FALSE   39.32078

У меня есть некоторые индивидуальные особенности, которые я хочу включить позже, но сначала я пробую эту простую модель и получаю эту ошибку.

> f<-mlogit(choice~extradistance,mledata)
Error in if (abs(x - oldx) < ftol) { : 
missing value where TRUE/FALSE needed

Также я не уверен, что это будет полезно, но я не буду включать это:

> typeof(mledata$extradistance)
[1] "double"
> typeof(mledata$choice)
[1] "logical"

Мой профессор в значительной степени использовал мой точный набор данных, показанный здесь в STATA, и он работал, поэтому любая помощь в R будет очень признательна. В столбце выбора содержится только «ИСТИНА» или «ЛОЖЬ», и есть одно ИСТИНА и ДВА ложных для каждого отдельного «ID».


person Sam Tucker    schedule 05.10.2018    source источник


Ответы (1)


У меня такая же проблема! Но затем я увидел, что мне не хватает нескольких единиц в столбцах выбора из-за некоторой синтаксической ошибки, которую я сделал при создании дарасета! чтобы проверить это, сделайте:

aggregate(df$choice, by=list(choice.id=df$choice.id), FUN=sum)
person Irene    schedule 10.12.2020