Форма данных и определение модели в mlogit для R

Я пытаюсь использовать пакет mlogit в R, чтобы провести некоторый анализ. К сожалению, я немного смущен тем, как указать подходящую модель с учетом типа имеющихся у меня данных.

В частности, мои данные относятся к следующему типу:

Individual   Choice1  Choice2   Choice3 ...
A             1.24e4      256        17 ...
B                792      531       420 ...
C                 26    1.8e5       930 ...
...              ...      ...       ... ...

По сути, это кросс-таблица, показывающая, сколько раз каждый человек делал тот или иной выбор. Вот код для воспроизведения моей проблемы:

library(mlogit)
data(Fishing)
otherFrame <- as.data.frame(xtabs(rep(1,1182) ~ income + mode, data = Fishing))
otherFrame$income <- as.numeric(as.character(otherFrame$income))
otherFrame <- otherFrame[otherFrame$Freq > 0, ] 


Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
Fish2 <- mlogit.data(otherFrame, "mode", shape = "wide")

summary(mlogit(mode ~ 1 | income, data = Fish)) #model from mlogit examples
summary(mlogit(mode ~ 1 |income, data = Fish2, weights = Freq)) #my attempt to re-create the model with differently shaped data

В принципе, мои данные (не показаны) можно придать той же форме, что и otherFrame, но у меня нет возможности придать им форму, используемую в примерах mlogit (поскольку существуют сотни вариантов и миллионы наблюдений, поэтому размер непомерно высок). Ключом к otherFrame является столбец Freq, который показывает, сколько раз был сделан выбор (mode) с учетом некоторых других переменных (здесь income).

У меня проблема в том, что последние две строки кода дают разные результаты. Я предполагаю, что первая строка (которая идет непосредственно из mlogit примеров) дает правильные оценки и стандартные ошибки. Я думал, что вторая спецификация модели с моими альтернативными данными «Fish2», где я указываю weights = Freq, должна дать те же результаты. К сожалению, хотя предполагаемые наклоны одинаковы, их стандартные ошибки сильно различаются. Я полагаю, это неверно.

Может кто поможет правильно указать модель? Или, возможно, моя спецификация верна, а стандартная ошибка оценок должна быть другой?

Заранее спасибо.


person user62037    schedule 25.01.2018    source источник


Ответы (1)


Насколько я понимаю, аргумент weights не представляет веса наблюдений, которые обычно используются для наблюдений. Однако он корректирует совокупные доли рынка или Frequencies of alternatives, и поэтому вы получаете те же оценки.

mlogit обрабатывает otherFrame, как если бы он содержал данные из 57 записей (т.е. length(weights), а не sum(weights)), хотя на самом деле он содержит данные для 1182 записей. Другими словами, информация теряется при агрегировании данных без учета весов наблюдений, что объясняет более высокие стандартные ошибки. Взгляните на vcov матрицу обеих подогнанных моделей.

Умножение t-статистики 2-й модели на _8 _ / _ 9_ дает вам более точную оценку правильной t-статистики. Обратите внимание, что логарифмическая вероятность во второй модели (и, следовательно, значение квадратного квадрата) не будет правильным по тем же причинам.

В другом коммерческом программном обеспечении, таком как Stata и alogit, есть процедуры, учитывающие весовые коэффициенты для моделей дискретного выбора.

Надеюсь, это поможет!

person M_M    schedule 26.01.2018
comment
да! Я действительно заметил это вчера после публикации (т.е. что количество записей было обработано как 57 вместо 1182). Знаете ли вы, что названия подпрограмм в Stata, которые влияют на веса регистров? У R могло быть что-то подобное, что я мог бы выкопать. - person user62037; 26.01.2018
comment
Проверьте: stata.com/manuals13/rmlogit.pdf весы, веса и веса позволил; см. [U] 11.1.6 вес - person M_M; 26.01.2018