mlogit в R - коэффициенты и неизвестный случайный параметр

Я пытаюсь запустить mlogit для своих данных. Мои данные:

> head(df[c(1:3, 33:45)])
      ID Gender Age Option equipment.A equipment.B equipment.C clean.A clean.B clean.C people.A people.B people.C price.A price.B
1 108630      M  56      A        3        3        1      1      3      3         2         3         2     4     3
2 115547      F  34      B        3        3        1      1      3      3         2         3         2     4     3
3 118359      F  51      C        3        3        1      1      3      3         2         3         2     4     3
4 126656      F  40      C        3        3        1      1      3      3         2         3         2     4     3
5 127439      F  26      C        3        3        1      1      3      3         2         3         2     4     3
6 130846      M  69      C        3        3        1      1      3      3         2         3         2     4     3
  price.C
1     4
2     4
3     4
4     4
5     4
6     4

Мой код:

Result <- mlogit.data(mydata, shape = "wide", choice = "Option", varying = 34:45)
Result.mxl <- mlogit(Option ~ equipment + clean + people + price | 0, Result)
summary(Result.mxl)

Тогда мой вывод:

Frequencies of alternatives:
     A      B      C 
0.3745 0.3525 0.2730 

nr method
4 iterations, 0h:0m:0s 
g'(-H)^-1g = 3.12E-07 
gradient close to zero 

Coefficients :
         Estimate Std. Error z-value  Pr(>|z|)    
equipment2  0.467333   0.100203  4.6639 3.103e-06 ***
equipment3  0.431747   0.089822  4.8067 1.535e-06 ***
clean2    1.278133   0.094188 13.5701 < 2.2e-16 ***
clean3    1.603504   0.118145 13.5724 < 2.2e-16 ***
people2 0.438747   0.094280  4.6537 3.261e-06 ***
people3 0.292673   0.115142  2.5419   0.01103 *  
price2     0.641272   0.111956  5.7279 1.017e-08 ***
price3     0.786393   0.100451  7.8286 4.885e-15 ***
price4     1.045555   0.151903  6.8830 5.859e-12 ***
price5     1.965825   0.211786  9.2821 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -2009.3

Итак, проблема в том, что я хочу получить таблицу только с одним наблюдением «оборудование», «чистота», «люди» и «цена», а также таблицу случайных коэффициентов. (что-то вроде этого примера: https://cran.r-project.org/web/packages/mlogit/vignettes/e3mxlogit.html)

Я попытался добавить другие параметры в свой код и запустить:

Result.mxl <- mlogit(Option ~ equipment + clean + people + price | 0, Result, 
                   rpar = c(equipment = 'n', clean = 'n', people = 'n', price = 'n'), 
                   panel = TRUE, id.var = "id", alt.levels = c("A","B", "C"))

но теперь я получаю сообщение об ошибке:

Error in mlogit.start(formula = formula, data = data, mf = mf, start = start,  : 
  unknown random parameter

Буду очень признателен за вашу помощь!


person Or Zuckerman    schedule 16.03.2020    source источник
comment
Вы когда-нибудь решили эту проблему? Я столкнулся с той же проблемой, что и другой пользователь в сообщении, на которое ссылается ниже. Пожалуйста, напишите, если вы нашли решение, если нет, я свяжусь с автором mlogit, чтобы узнать, есть ли ошибка в самой последней версии. Другое сообщение stackoverflow.com/questions/62193890/   -  person DoctorSpruce    schedule 19.08.2020


Ответы (1)


Если вы используете факторные переменные, mlogit сначала создает новые переменные для каждого факторного уровня с новыми именами. Затем он работает с этими именами и поэтому указывает «неизвестная случайная величина», если вы используете исходные имена. Вы можете выяснить, как называются имена факторов, запустив обычный полиномиальный логит. Затем используйте coef(summary()), чтобы узнать, как называются новые переменные (по одному на уровень фактора), и используйте их, чтобы сообщить mlogit, для каких переменных следует использовать случайные коэффициенты.

person Michiel    schedule 22.05.2021