首页 > 解决方案 > 为什么 DCE 随机参数模型中的奇点错误 - mlogit - 由于选择退出/不购买?

问题描述

我正在从事具有以下特征的离散选择实验: 3 个备选方案,其中包括 1 个选择退出。2 个备选方案中的每一个都具有 3 个属性,每个属性具有 3 个因子水平。每个受访者有 6 个选择任务要完成。所有 3 个参数(替代项)都已进行效果类型编码。

我想创建一个随机参数错误组件模型,没有购买/退出作为拦截。但是,这会在使用“mlogit”包时产生奇异错误。任何人都可以就如何处理这个问题提供建议吗?

随机参数模型创建:

rpm1 <- mlogit(choice ~ 0 + Prot + Carb + Price, data=ce,
               rpar = c(Prot = "n", Carb = "n", Price = "n"), panel = TRUE,
               correlation = TRUE, R = 10, Halton = TRUE)

数据示例(长格式):

    id ques choice alti     Prot Carb Price NoBuy
1  26    1  FALSE    1     Meat    B    20     0
2  26    1  FALSE    2      Veg    A    20     0
3  26    1   TRUE    3 NoBurger    0     0     1
4  26    2  FALSE    1     Meat    C    10     0
5  26    2  FALSE    2  Poultry    A    10     0
6  26    2   TRUE    3 NoBurger    0     0     1
7  26    3  FALSE    1  Poultry    C     5     0
8  26    3   TRUE    2     Meat    B    20     0
9  26    3  FALSE    3 NoBurger    0     0     1
10 26    4  FALSE    1  Poultry    A    20     0
11 26    4  FALSE    2      Veg    B     5     0
12 26    4   TRUE    3 NoBurger    0     0     1
13 26    5  FALSE    1      Veg    B    10     0
14 26    5  FALSE    2     Meat    C    10     0
15 26    5   TRUE    3 NoBurger    0     0     1
16 26    6  FALSE    1      Veg    A     5     0
17 26    6  FALSE    2  Poultry    B     5     0
18 26    6   TRUE    3 NoBurger    0     0     1
19 30    1   TRUE    1     Meat    B    20     0
20 30    1  FALSE    2      Veg    A    20     0

标签: rcorrelationmlogitsingular

解决方案


根据您所说的来诊断问题有点棘手,但是,您可以尝试一些事情。

奇点误差意味着您的粗麻布矩阵不能反转,即您无法获得标准误差。这很可能是由于您的模型被过度指定或您的数据没有足够的变化造成的。

你可以试试这个模型调用:

rpm1 <- mlogit(choice ~ Price + Prot + Carb + NoBuy |-1, data=ce,
               rpar = c(Prot = "n", Carb = "n", Price = "n"), panel = TRUE,
               correlation = TRUE, R = 10, Halton = TRUE)

我已经添加NoBuy了您的实用程序函数,它将计算并作为截距工作。我还添加了|-1,这将删除任何其他拦截。您只能估计最多等于备选方案的数量J-1J如果您尝试估计 all J,您的模型将失败。

其他一些需要注意的事情。抽奖次数非常非常少。您将很难使模型收敛,并且您的结果不会很有意义。correlation = TRUE是一个完全指定的混合 logit,其中下 Cholesky 矩阵的所有非对角元素都被估计。这是一个非常复杂的模型,如果您的数据很差,可能很难估计。最后,我会仔细考虑使用正态分布的价格参数,因为您无法从这样的模型中估计福利措施。


推荐阅读