Как я могу оценить модель логита скрытого класса в R?

Я новичок в использовании R. Я пытаюсь оценить модель логита скрытого класса, используя данные панели. Я пробовал следовать этому примеру: https://rpubs.com/msarrias1986/335556.
Я сказали, что следующий код должен работать:

df01 <- mlogit.data(data, 
                      id = "ID", 
                      choice = "Choice", 
                      varying = 3:17, 
                      shape = "wide", 
                      sep = "")

lc <- gmnl(Choice ~ COST + REN + NUCL + OUTAGE180 + OUTAGE360 | 0 | 0 | 0 | 1 , 
           data = df01,
           model = 'lc', 
           Q = 3, 
           panel = TRUE,
           method = "bhhh")

С базовым файлом данных из 17 столбцов (см. Изображение) он работает. Однако, когда я добавляю еще один столбец, например фиктивную переменную для пола, я получаю 2 ошибки:

  1. в первой команде я получаю сообщение об ошибке «Ошибка в reshapeLong (data, idvar = idvar, timevar = timevar, варьируясь = варьируясь,: 'изменяющиеся' аргументы должны быть одинаковой длины». Я заметил, что могу избавиться от ошибки указав «изменяющийся = список (3:18)» вместо «изменяющийся = 3:18», но я не уверен, что это правильный способ справиться с этим.

  2. во второй команде я получаю сообщение об ошибке «Ошибка в eval (predvars, data, env): объект« COST »не найден». COST действительно не является переменной, но COST_1 (то есть стоимость первой альтернативы), COST_2 и COST_3 - это переменная. Я хочу, чтобы коэффициент «СТОИМОСТЬ» отражал важность затрат при выборе альтернативы. Это похоже на все остальные переменные.

Мне кажется любопытным, что эти ошибки вызывает простое добавление одного столбца в файл данных. Надеюсь, у кого-то есть хороший совет. Спасибо за помощь!

(пример моих данных на включенном изображении).

введите описание изображения здесь


person Erika De Keyser    schedule 06.05.2020    source источник
comment
Добро пожаловать в Stack Overflow! Помогите нам помочь вам: предоставьте минимальный воспроизводимый пример. Вы уже немало сделали, чтобы его предоставить, но последнее, что было бы действительно полезно: отредактируйте свой вопрос, включив в него вывод dput(data), чтобы мы могли просто скопировать и вставить ваши данные, а не предоставлять ваши данные в виде изображения, с которым мы ничего не можем сделать. Дополнительные сведения см. В разделе Как создать отличный воспроизводимый пример R.   -  person duckmayr    schedule 07.05.2020


Ответы (1)


Я оставил команду «изменяющийся = 3:17» и изменил код на:

df01 <- mlogit.data(data, 
                      id = "ID", 
                      choice = "Choice",
                      varying = 3:17, 
                      shape = "wide", 
                      sep = "",
                      alt.levels = c("FOSS","REN","NUCL","COST","OUTAGE"))

lc <- gmnl(Choice ~ COST + REN + NUCL + OUTAGE | MALE | 0 | 0 | 1 , 
           data = df01,
           model = 'lc', 
           Q = 3, 
           panel = TRUE,
           method = "bhhh")

Похоже, что для менее чем 13 индивидуальных переменных это работает.

person Erika De Keyser    schedule 08.05.2020