【问题标题】:Multinomial logit model [duplicate]多项logit模型[重复]
【发布时间】:2015-09-25 14:02:46
【问题描述】:

我将使用 mlogit 包。我像示例一样运行它,但它仍然给我一个错误,我不知道该怎么办。

data72 = mlogit.data(data, choice ="Hour72motor", shape ="long", ,alt.levels="mode")
simple = mlogit(Hour72motor ~ Hemisphere +Lesionlocation + gender + Age+ DoesHematoma+study, data=data72)

错误是:

对比错误tmp, value = contr.funs[1 + isOF[nn]]) : 对比只能应用于具有 2 个或更多级别的因素

感谢您的支持。

我添加了推荐的评论;检查模型中非数值变量的计数

testdat <- na.omit(data72[c("Hour72motor", "Hemisphere", "Lesionlocation", 
      "gender","Age", "DoesHematoma", "study")]) ; 

lapply(testdat[!sapply(testdat, is.numeric)], table)
# $Hour72motor
# FALSE  TRUE 
#   128    16 

【问题讨论】:

  • 您能否包括data72 的前几行,至少包括您在模型中使用的列?看起来您只有一个级别的因素,但您需要执行lapply(data72, function(x) length(unique(x)) 之类的操作来检查

标签: r package mlogit


【解决方案1】:

根据我的经验,该错误消息通常意味着您在建模阶段尝试使用的数据对象为空或已损坏,或者您在模型中用作 y 的变量类型不是类型它需要。您是否检查过数据框以确保您的第一行代码产生了您希望它产生的结果?试试:

str(data72)
table(data72$Hour72motor)

它是否有您期望的列数和行数?您的模型目标 (Hour72motor) 是否采用您期望的值?如果没有,请尝试修改第一行以确保以所需格式提取所需的数据。

【讨论】:

  • 感谢您的快速回复:
  • 我照你说的做了,但没有错:
  • 您有什么建议吗?
  • 很可能您的模型中的变量之一只有一个级别 - 请记住,任何缺少数据的行都将被删除。试试testdat &lt;- na.omit(data72[c("Hour72motor", "Hemisphere", "Lesionlocation", "gender","Age", "DoesHematoma", "study")]) ; lapply(testdat[!sapply(testdat, is.numeric)], table)
  • 谢谢,但它仍然给了我与 table(data72$Hour72motor) 相同的答案
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多