当选择选项因观察值而异时,MNL是使用的正确模型吗?

时间:2018-07-19 15:59:26

标签: multinomial mlogit

在对100个人的调查中,我要求每个人在产品A和产品B之间进行选择。我问每个人3次此问题,但是每次我提出不同的产品集时。假设是第一次,要求给人1在给定每个电话的某些属性的情况下在“电话1”和“电话2”之间进行选择。第二次选择是“电话1”与“电话2”,但每个电话的属性集不同。

每次询问问题时,都会向一个人显示与两个电话替代品相关的三个属性。因此,每次在Phone 1和Phone 2之间,都会显示出手机的属性(例如成本,内存和相机像素),以便用户可以选择最有吸引力的一组属性,即Phone 1或Phone 2。

总体上,3 * 100 = 300个响应;每人3条回复。每次属性成本,显示的内存和相机像素以及用户要求选择他们喜欢的功能集时。

我的目标是分析用户如何评价电话的功能以及电话的成本。

在这种情况下,我可以使用MNL吗?即使每次我问一个人一个问题时,我只会给出两个选择?我的理解是,当(a)有多个选择,并且(b)选择选项在各个观察结果之间均不变时,即要求每个人在多个产品(例如A,B,C和A,B)之间进行选择时,便会使用MNL, C不会随观察值变化。 在上述情况下,两个选择在同一人被问到问题的三遍之间有所不同?如果不是MNL,我是否应该创建一个二进制logit模型,假设用户在提出问题时只需要在两个选项之间进行选择(即使他被问过3次)?如果我可以使用二进制logit,是否应该担心产品选择集会因观察而改变?还是应该让每行中定义的属性解决观察结果中产品选择的差异。

我已经按如下方式设置了数据(认为我可以做MNL,但也许我应该进行不同的设置并使用其他建模方法?):

enter image description here

1 个答案:

答案 0 :(得分:0)

我正在设计和分析类似的调查,但是我的工作与运输有关。我处于起步阶段,但对整个概念还是陌生的,但是我会为您提供建议和参考,也许会有所帮助。

第一点:我在YouTube上的一段有用的视频中遇到了以下三种模型:

    MNL是指多项式Lo​​git模型。 MNL与 不变变量的回归变量(例如参与者的薪水 调查或他/她的性别...)。
  • 有条件的logit模型与不变变量(性别, 薪水,受教育程度……)和替代变数(成本) 产品,内存,相机像素……)
  • 使用随机参数的混合logit模型。它也与 不变变量(性别,薪水,教育程度……)和 替代变量回归器(产品,内存,相机的成本 像素…)

关于替代不变变量和替代变量回归变量的说明: 参与调查的人的性别在产品A或产品P之间不会有所不同,因此它是不变变量回归变量。产品价格在产品A和产品B之间可能会有所不同,因此称为替代变量回归变量。

基于上述,我假设您需要使用条件logit模型或混合logit模型。

对我来说,我在R中找不到条件logit模型或混合logit模型的特殊功能。使用了相同的mlogit函数,请参考以下示例以获取mlogit软件包的帮助:

  • 纯的“多项式模型”

摘要(mlogit(模式〜0 |收入,数据=鱼))

  • 纯的“条件”模型

摘要(mlogit(模式〜价格+捕获量,数据=鱼))

  • “混合”模型

m <-mlogit(模式〜价格+产量|收入,数据=鱼) 摘要(m)

  • 以租船合同为参考级别的相同模型

m <-mlogit(模式〜价格+捕获量|收入,数据=鱼,reflevel =“宪章”)

从以上示例中,我认为(但不确定)在mlogit手册包中,当您同时使用替代不变变量和替代变量回归变量时,它们指的是混合logit。当您只有替代变量回归变量时使用条件模型。另一方面,当您只有多项式交替不变回归变量时,可以使用多项式模型。

第二点:当您要求同一个人为每个选择集选择一种产品时,就有一种称为“面板数据”的东西。这里的同一个人意味着在您的模型中要考虑的是性别,薪水,受教育程度……对于同一个人,他们将保持不变。检查以下内容:https://en.wikipedia.org/wiki/Panel_data

要使用面板技术,请参阅R中mlogit软件包中的帮助。我引用了以下内容:

”面板仅在rpar不为NULL并且数据是同一单元的重复观测时才有意义;如果为TRUE,则使用面板技术估算混合对数模型”

因此,根据我的理解,如果您想使用面板技术,则必须使用随机绘制,因为面板将为true,而rpar不会为NULL。

此外,例如有关使用面板数据的示例,请参考Yves Croissant撰写的“ R中的多项logit模型的估计:mlogit软件包”中的以下示例

data(“ Train”,package =“ mlogit”)

Tr <-m​​logit.data(火车,形状=“宽”,变化= 4:11,选择=“选择”,sep =“ _”,对立= c(“价格”,“时间”,“变化” “,” comfort“),alt.levels = c(” A“,” B“),id.var =” id“)

Train.ml <-mlogit(选择〜价格+时间+更改+舒适度Tr)

Train.mxlc <-mlogit(选择〜价格+时间+更改+舒适度,Tr,面板= TRUE,rpar = c(时间=“ cn”,更改=“ n”,舒适度=“ ln”),相关性= TRUE,R = 100,halton = NA)

Train.mxlu <-更新(Train.mxlc,相关=假)

我希望这对您有用。