Настройка Mlogit в R с множеством наблюдений для каждой категории

Я пытаюсь использовать Mlogit в R, I ' m немного новичок в logits, и у меня проблемы с настройкой моей проблемы в среде Mlogit. На самом деле я не полностью уверен, что mlogit - это правильный подход. Вот аналогичная проблема.

Рассмотрим набор данных о бейсболе с переменной результата, которая принимает "out" "single" "double", "triple" и "homerun". В качестве независимых переменных у нас есть название отбивающего, имя питчера и стадион. Существуют сотни наблюдений для каждого жидкого теста, в том числе многие, когда тесто обращено к одному и тому же кувшину.

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

Error in row.names<-.data.frame(*tmp*, value = value) : invalid 'row.names' length

С некоторым поиском в Google я думаю, может быть, ожидается только одно наблюдение для каждой комбинации нападающего, питчера и парка? Может быть нет? Что я делаю неправильно? Как мне это настроить?

Изменить: пример данных здесь

https://docs.google.com/spreadsheets/d/19fiq_QEMj4nAPcTqIRxeaYNPgqeHxKAEuPrfHMeIJ7o/edit?usp=sharing


person Sam Asin    schedule 04.07.2017    source источник
comment
Включите воспроизводимый пример ваших данных и кода, иначе людям будет сложно понять, что происходит.   -  person Marius    schedule 04.07.2017
comment
Я бы хотел добавить данные, но как я могу это сделать? Могу ли я использовать ссылку на таблицу Google?   -  person Sam Asin    schedule 04.07.2017


Ответы (1)


Вот несколько советов, как начать анализировать свои данные.

# Your dataset
dts <- structure(list(outcome = c(1L, 1L, 2L, 3L, 1L, 3L, 2L, 3L, 3L, 
3L, 3L, 1L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 
2L, 2L, 1L, 1L, 2L, 3L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 3L, 3L, 3L, 
2L, 1L, 1L, 1L, 2L, 3L, 2L, 1L), hitter = structure(c(3L, 3L, 
3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("james", 
"jill", "john"), class = "factor"), pitcher = structure(c(3L, 
3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 1L, 
2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 
3L, 2L, 1L, 1L, 2L, 2L, 1L, 3L, 3L, 1L, 2L, 2L, 1L, 1L, 2L, 2L
), .Label = c("bill", "bob", "brett"), class = "factor"), place = structure(c(3L, 
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 5L, 
5L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L
), .Label = c("ca", "co", "dc", "ny", "tn"), class = "factor")), .Names = c("outcome", 
"hitter", "pitcher", "place"), class = "data.frame", row.names = c(NA, 
-49L))

# Estimation of a multinomial logistic regression model
library(mlogit)
dts.wide <- mlogit.data(dts, choice="outcome", shape="wide")
fit.mlogit <- mlogit(outcome ~ 1 | hitter+pitcher+place, data=dts.wide)

# Results
library(stargazer)
stargazer(fit.mlogit, type="text")

# Model coefficients with standard errors and statistical significance (stars)
==========================================
                   Dependent variable:    
               ---------------------------
                         outcome          
------------------------------------------
2:(intercept)            19.456           
                       (3,056.626)        

3:(intercept)            35.179           
                       (4,172.540)        

2:hitterjill             -17.543          
                       (3,056.625)        

3:hitterjill             -33.117          
                       (4,172.540)        

2:hitterjohn             -0.188           
                         (0.996)          

3:hitterjohn             -1.410           
                         (1.056)          

2:pitcherbob             -0.070           
                         (1.005)          

3:pitcherbob             -1.270           
                         (1.091)          

2:pitcherbrett           -0.908           
                         (1.063)          

3:pitcherbrett           -2.284*          
                         (1.257)          

2:placeco                -1.655           
                         (1.557)          

3:placeco                -17.688          
                       (2,840.270)        

2:placedc                -19.428          
                       (3,056.626)        

3:placedc                -34.479          
                       (4,172.540)        

2:placeny                -18.802          
                       (3,056.625)        

3:placeny                -32.873          
                       (4,172.540)        

2:placetn                -18.885          
                       (3,056.626)        

3:placetn                -32.140          
                       (4,172.540)        

------------------------------------------
Observations               49             
R2                        0.155           
Log Likelihood           -44.605          
LR Test             16.388 (df = 18)      
==========================================
Note:          *p<0.1; **p<0.05; ***p<0.01

Более подробная информация об оценке полиномиальных логистических моделей в R доступна здесь .

person Marco Sandri    schedule 04.07.2017
comment
Спасибо, не могли бы вы объяснить мне, почему вы установили формулу с нападающим питчером и разместили справа от |? У меня проблемы с пониманием моей проблемы в альтернативной, индивидуальной структуре выбора, которую хочет Mlogit. - person Sam Asin; 04.07.2017
comment
В документации говорится: Наборы данных, используемые для оценки полиномиального логита, имеют дело с некоторыми людьми, которые делают один или последовательный выбор одной альтернативы из набора нескольких альтернатив. В моем наборе данных, очевидно, вообще нет человека, делающего выбор, уместно ли вообще использовать эти модели? И как мне подумать о том, чтобы вписать это в эту структуру? - person Sam Asin; 04.07.2017
comment
@SamAsin Я понимаю, что это кажется довольно странным, но я уверен, что это правильный способ оценить полиномиальную логистическую модель, используя mlogit в пакете mlogit. В качестве альтернативы вы можете использовать более простую mlogit функцию globaltest. Формула outcome ~ hitter+pitcher+place. - person Marco Sandri; 04.07.2017