2

我在使用 mlogit() 函数时遇到问题。我试图预测给定集合中的哪些变量是参加我们调查的人最喜欢的。我试图预测变量的最佳组合以创建最首选的选项。基本上,我们测量的是“名称”、“徽标大小”、“设计”、“主题”、“风味”和“颜色”。

为此,我们有一个庞大的数据集,并试图通过 mlogit.data() 和 mlogit() 运行它,尽管我们不断收到相同的错误:

if (abs(x - oldx) < ftol) { 中的错误:需要 TRUE/FALSE 的缺失值

我的数据都不是负面的或缺失的,所以这很令人困惑。我的语法是:

#Process data in mlogit.data()

data2 <- 
  mlogit.data(data=data, choice="Choice", 
              shape="long", varying=5:10, 
              alt.levels=paste("pos",1:3))

#Make character columns factors and "choice" column (the one we are 
#measuring) a numeric.

data2$Name <- as.factor(data2$Name)
data2$Logo.Size <- as.factor(data2$Logo.Size)
data2$Design <- as.factor(data2$Design)
data2$Theme <- as.factor(data2$Theme)
data2$Color <- as.factor(data2$Color)
data2$Choice <- as.numeric(as.character(data2$Choice))

##### RUN MODEL ##### 
m1 <- mlogit(Choice ~ 0 + Name + Logo.Size + Design + Theme + Flavor 
+ Color, data = data2)

m1

看起来我的语法有问题,还是我的数据有问题?

4

7 回答 7

2

在面板设置中,您的一张或多张选择卡可能没有 TRUE 值。一种解决方法是丢弃缺少选择的选择卡。

## Use data.table
library(data.table)

## Drop choice cards that received no choice
data.table[, full := sum(Choice), by=Choice_id]
data.table.full <- data.table[full!=0,]

这是 mlogit() 特有的问题。例如,STATA 的混合 logit 方法忽略了缺失的响应变量,R 认为这更多是需要解决的问题。

于 2018-06-01T22:21:02.947 回答
1

我有同样的错误。当我按唯一 ID 和备用 ID 排列数据时,它得到了解决。出于某种原因,mlogit 要求将所有选择实例堆叠在一起。

于 2019-07-16T16:03:52.980 回答
0

回复 (1)

"data2 <-   mlogit.data(data=data, choice="Choice", 
          shape="long", varying=5:10, 
          **alt.levels=paste("pos",1:3))**"

(2)

"m1 <- mlogit(**Choice** ~ 0 + Name + Logo.Size + Design + Theme + Flavor + Color, data = data2)"

除了确保填写所有数据之外,我只想强调一点:(1)级别名称需要与分隔符后面的变量名称部分完全匹配。并且,(2)模型中的DV需要是出现在分隔符之前的变量名。

示例:原始变量“Media”有 5 个类别 -> 5 个虚拟变量“Med_Radio”、“Med_TV”等:级别名称需要是“Radio”、“TV”等,与写的完全一致。并且您必须将“Med”放入模型中,而不是“Media”,作为DV。

这解决了我的问题。

于 2022-02-25T17:00:48.570 回答
0

if (abs(x - oldx) < ftol) { 中的错误:需要 TRUE/FALSE 的缺失值

建议如果您的响应变量是二进制的,即 1/0,那么一个或多个值不是 1/0

看:table(data2$Choice) 看看是不是这样

于 2018-01-07T19:09:37.380 回答
0

我有类似的问题,但最终想通了。在我的情况下,这是由于协变量的缺失值而不是选择响应。

于 2018-10-08T06:55:01.790 回答
0

当我的数据包含未选择任何选项的选择情况(询问参与者的问题)时,我遇到了这个问题。删除这些行解决了问题。

于 2019-08-27T18:12:38.420 回答
0

以防万一其他人可能有同样的问题。当我有部分缺失时,当我运行我的选择模型(最大差异缩放)时,我得到了这个错误。例如,如果受访者必须为每个任务/集合做出两个选择,但只做出一个选择。

我可以在长格式数据集中解决这个问题,方法是删除那些属于缺失选择的观察结果,同时保留做出有效选择的观察结果。

例如,假设我进行了一项包含 9 个任务/集的调查,并且在每个任务/集中提供了 5 个备选方案。在每项任务中,我的受访者必须做出两个选择,即在 5 个备选方案中选择一个作为“最重要”,将一个备选方案选择为“最不重要”。这导致每个受访者的数据集有 5*9*2 = 90 行。每个任务*选择组合恰好有 5 行(例如,包含备选方案的任务 1 有 5 行,其中这 5 行中恰好有一个在响应变量中被编码为 1,以防它被选为最(或最不)重要的备选方案)。

现在想象一个受访者只提供了“最重要”的选择,但没有提供最不重要的选择。在这种情况下,“最不重要”的 5 行在响应变量中都将具有 0。从数据中排除这 5 行解决了上述错误问题,顺便说一句,导致与其他工具将提供的完全相同的结果(例如 Sawtooth 的 Lighthouse 软件)。

于 2019-11-05T10:54:05.647 回答