我遇到了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
我的语法是否有问题,或者我的数据可能是问题?
提前致谢, 安德鲁
答案 0 :(得分:0)
if(abs(x - oldx)&lt; ftol){:缺少值需要TRUE / FALSE
时出错建议如果您的响应变量是二进制,即1/0,那么一个或多个值不是1/0
查看:table(data2 $ Choice)以查看是否是这种情况
答案 1 :(得分:0)
在面板设置中,可能会出现一张或多张选择卡没有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将此视为需要解决的更多问题。
答案 2 :(得分:0)
我有类似的问题,但最终发现了。就我而言,这是由于协变量值缺失而不是选择响应所致。
答案 3 :(得分:0)
我有同样的错误。当我按唯一ID和备用ID排列数据时,它得到解决。由于某些原因,mlogit要求将所有选择实例堆叠在一起。
答案 4 :(得分:0)
当我的数据包括没有选择任何选择的选择情况(询问参与者的问题)时,我遇到了这个问题。删除这些行可解决问题。
答案 5 :(得分:0)
以防万一其他人可能遇到相同的问题。当我有部分缺失时,当我运行选择模型(最大差异缩放)时,出现了此错误。例如。如果被访者必须对每个任务/组做出两个选择,但只能做出一个选择。
我可以通过删除属于缺失选择的那些观测值,同时保留进行有效选择的观测值来解决长格式数据集中的问题。
例如假设我有一个包含9个任务/组的调查,并且在每个任务/组中提供了5个替代方案。在每项任务中,我的受访者都必须做出两个选择,即从5个备选方案之一中选择“最重要”,将其中一个备选方案作为“最不重要”。这将导致每个响应者具有5 * 9 * 2 = 90行的数据集。每个任务*选择组合正好有5行(例如,任务1的5行包含替代项,如果选择了这5行中最重要(或最不重要)的替代项,则这5行中的确切一行将被编码为1 )。
现在想象一个受访者只为“最重要”提供选择,而不为最不重要提供选择。在这种情况下,“最不重要”的5行在响应变量中都将为0。从数据中排除这5行解决了布奇错误,顺便说一句,结果与woudl提供的其他工具(例如Sawtooth的Lighthouse软件)完全相同。