【问题标题】:r - mlogit Error in if (abs(x - oldx) < ftol) { : missing value where TRUE/FALSE neededr - if (abs(x - oldx) < ftol) { 中的 mlogit 错误:需要 TRUE/FALSE 的缺失值
【发布时间】:2018-10-05 22:46:14
【问题描述】:

您好,我正在尝试使用 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 中的任何帮助。选择列中只包含“TRUE”或“FALSE”,每个“ID”有一个 TRUE 和两个 false。

【问题讨论】:

    标签: r choice mlogit


    【解决方案1】:

    我遇到了同样的问题!但是后来我发现我在选择列中缺少一些 1,因为我在构建 daraset 时犯了一些语法错误! 检查它:

    aggregate(df$choice, by=list(choice.id=df$choice.id), FUN=sum)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多