Как я могу оценить модель скрытого класса lo git в R? - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в использовании R. Я пытаюсь оценить модель скрытого класса lo git, используя данные панели. Я пробовал следовать этому примеру: 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")

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

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

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

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

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

enter image description here

1 Ответ

0 голосов
/ 08 мая 2020

Я сохранил команду «изменяющийся = 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 отдельных переменных это, похоже, работает.

...