2017-07-04 2 views
2

J'essaie d'utiliser Mlogit dans R, je suis un peu nouveau pour les logits, et j'ai du mal à mettre en place mon problème dans le framework Mlogit. Je ne suis pas vraiment entièrement sûr que mlogit est la bonne approche. Voici un problème analogue. Considérons un jeu de données de baseball, avec une variable de résultat qui prend "out" "single" "double" "triple" et "homerun." Pour les variables explicatives, nous avons le nom du batteur, le nom du lanceur et le stade. Il y a des centaines d'observations pour chaque batteur, y compris beaucoup avec la pâte qui fait face au même lanceur. J'ai pensé que c'était définitivement un logit multinomial parce que j'ai plusieurs résultats catégoriques, mais je ne suis pas sûr parce que toute la documentation semble traiter des "choix" entre les alternatives, ce qui n'est pas vraiment le cas. J'ai essayé de démarrer mon modèle logit en ayant une variable de facteur pour le frappeur, une autre pour le lanceur, et une autre pour le stade. Quand j'ai essayé cela en R, je reçoisMise en place d'un Mlogit en R avec de nombreuses observations pour chaque catégorie

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

Avec googling je pense peut-être qu'il attend qu'une seule observation pour chaque combinaison de frappeurs, le lanceur et le parc? Peut être pas? Qu'est-ce que je fais mal? Comment dois-je mettre cela en place?

Edit: Exemple de données ici

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

+0

Veuillez inclure un [exemple reproductible] (https://stackoverflow.com/q/5963269/1222578) de vos données et de votre code, ou il est difficile pour les gens de savoir ce qui se passe. – Marius

+0

J'aimerais ajouter des données, mais comment puis-je faire cela? Puis-je utiliser un lien vers une feuille Google? –

Répondre

1

Voici quelques suggestions sur la façon dont vous pouvez commencer à analyser vos données.

# 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 

Plus de détails sur l'estimation des modèles logistiques multinomiaux en R sont disponibles here.

+0

Merci, pourriez-vous me dire pourquoi vous avez mis en place la formule avec le lanceur de frappeur et placer à droite du "|" J'ai de la difficulté à comprendre mon problème dans le cadre «alternatif», «indivudal», «choix» que veut Mlogit. –

+0

La documentation dit: "Les ensembles de données utilisés pour l'estimation de logit multinomial traite de quelques individus, qui font un ou un choix séquentiel d'une alternative parmi un ensemble de plusieurs alternatives." Mon jeu de données n'a évidemment pas de choix du tout, est-il approprié d'utiliser ces modèles? Et comment devrais-je penser à l'intégrer dans ce cadre? –

+0

@SamAsin Je me rends compte que cela semble plutôt étrange mais je suis sûr que c'est la bonne façon d'estimer un modèle logistique multinomial en utilisant 'mlogit' dans le paquet' mlogit'. Comme alternative, vous pouvez utiliser la fonction 'mlogit' plus facile de' globaltest'. La formule est «résultat ~ frappeur + lanceur + lieu». –