Nouveau dans

Modèle logit multinomial là données de panel

Le modèle logit multinomial (MNL) est une méthode populaire pour modéliser les résultats catégoriques qui n’ont pas d’ordre naturel – des résultats tels que la profession, le parti politique ou le choix de restaurant.
Dans les données longitudinales/panel, nous observons une séquence de résultats dans le temps. Supposons que nous observions les choix de restaurant effectués par les individus chaque semaine. Pensez-vous que les choix de restaurant sont indépendants d’une semaine à l’autre ? Probablement pas. Une personne qui aime la cuisine italienne est susceptible de choisir un restaurant italien plusieurs fois. Ces choix sont déterminés par des préférences et des caractéristiques personnelles sous-jacentes, dont certaines ne sont pas observées.
La nouvelle commande xtmlogit de Stata ajuste des modèles MNL à effets aléatoires et à effets fixes conditionnels pour des résultats catégoriels observés dans le temps.
Pour ajuster un modèle logit multinomial à effets aléatoires, nous pouvons taper

. xtset subject
. xtmlogit restaurant age

et d’estimer les coefficients logit multinomiaux standard tenant compte des caractéristiques spécifiques au sujet et invariables dans le temps en incluant des effets aléatoires spécifiques à chaque niveau de résultat.
Avec la commande ci-dessus, les effets aléatoires sont supposés être normalement distribués et indépendants entre les niveaux de résultats (choix de restaurants), mais plusieurs structures de variance-covariance sont supportées, y compris une covariance complètement libre :

. xtmlogit restaurant age, covariance(unstructured)

Si vous pensez que les effets spécifiques au sujet peuvent être corrélés avec l’âge, vous pouvez utiliser un estimateur conditionnel à effets fixes pour en tenir compte:

. xtmlogit restaurant age, fe

Points forts

Modélisation par panel de données de résultats catégoriques non ordonnés

Estimateur à effets aléatoires

  • Choix de la structure de covariance pour les effets aléatoires
    • Indépendant
    • Identique
    • Partagé
    • Échangeable
    • Non structurée

Estimateur conditionnel à effets fixes (FE)

  • Les sous-ensembles de permutation atténuent le fléau de la dimensionnalité.

Estimation bayésienne

Erreurs standard robustes, en grappes et bootstrap

Prise en charge des données d’enquête complexes

Voyons comment cela fonctionne

Nous souhaitons déterminer si les individus sont plus susceptibles d’être en dehors de la population active s’ils ont des enfants de moins de cinq ans dans leur ménage. Nous utiliserons un ensemble de données (fictives) d’hommes et de femmes qui ont été interrogés sur leur situation professionnelle tous les deux ans.

. use https://www.stata-press.com/data/r17/estatus
(Fictitious employment status data)

Voici un extrait de l’ensemble de données, montrant l’historique d’emploi de trois personnes :

. list id year estatus hhchild age in 22/41, sepby(id) noobs

id year estatus hhchild age
5 2002 Employed Yes 38
5 2004 Employed No 40
5 2006 Employed No 42
5 2008 Employed No 44
5 2010 Out of labor force No 46
5 2012 Out of labor force No 48
5 2014 Unemployed No 50
6 2002 Unemployed Yes 31
6 2004 Employed Yes 33
6 2006 Out of labor force Yes 35
6 2008 Unemployed Yes 37
6 2010 Out of labor force Yes 39
6 2012 Unemployed No 41
7 2002 Out of labor force Yes 33
7 2004 Employed Yes 35
7 2006 Employed Yes 37
7 2008 Out of labor force Yes 39
7 2010 Employed No 41
7 2012 Employed No 43
7 2014 Employed No 45

Le résultat qui nous intéresse est le statut d’emploi (estatus), qui comporte trois niveaux : Employé, Chômeur (mais à la recherche d’un emploi), et Hors de la population active (ne cherche pas d’emploi). Notre prédicteur d’intérêt, hhchild, indique s’il y a des enfants de moins de cinq ans dans le ménage au moment de l’interview.
Avant de pouvoir ajuster notre modèle, nous devons spécifier notre variable d’identification du panel, id, en utilisant xtset.

. xtset id

Panel variable: id (unbalanced)

Nous pouvons maintenant utiliser xtmlogit pour modéliser la probabilité de chaque type d’emploi par hhchild tout en contrôlant les effets de l’âge, du revenu annuel du ménage (hhincome) et de la présence d’un autre membre significatif dans le ménage (hhsigno). Nous commencerons par un modèle à effets aléatoires (par défaut) et utiliserons l’option rrr pour obtenir des coefficients exponentiels qui peuvent être interprétés comme des ratios de risque relatif.

. xtmlogit estatus i.hhchild age hhincome i.hhsigno, rrr

Fitting comparison model ...

Refining starting values:

Grid node 0:   log likelihood = -4504.5591
Grid node 1:   log likelihood = -4538.6352

Fitting full model:

Iteration 0:   log likelihood = -4504.5591
Iteration 1:   log likelihood =  -4495.871
Iteration 2:   log likelihood = -4490.5098
Iteration 3:   log likelihood = -4490.4197
Iteration 4:   log likelihood = -4490.4196

Random-effects multinomial logistic regression       Number of obs    =  4,761
Group variable: id                                   Number of groups =    800

Random effects u_i ~ Gaussian                        Obs per group:
                                                                  min =      5
                                                                  avg =    6.0
                                                                  max =      7

Integration method: mvaghermite                      Integration pts. =      7

                                                     Wald chi2(8)     = 199.25
Log likelihood = -4490.4196                          Prob > chi2      = 0.0000

estatus RRR Std. err. z P>|z| [95% conf. interval]
Out_of_labor_force
hhchild
Yes 1.579937 .1513905 4.77 0.000 1.309414 1.906349
age .9947946 .0065832 -0.79 0.430 .981975 1.007781
hhincome .9954927 .0018251 -2.46 0.014 .9919221 .9990762
hhsigno
Yes 1.642859 .1550291 5.26 0.000 1.365452 1.976625
_cons .4949307 .1392991 -2.50 0.012 .2850836 .859244
Unemployed
hhchild
Yes .9607243 .1148148 -0.34 0.737 .7601038 1.214296
age 1.004257 .008211 0.52 0.603 .9882918 1.02048
hhincome .9696874 .0025722 -11.60 0.000 .964659 .9747421
hhsigno
Yes 1.099323 .1310654 0.79 0.427 .8702452 1.388701
_cons .8078165 .280628 -0.61 0.539 .4088963 1.595924
Employed (base outcome)
var(u1) .8573133 .1083915 .6691459 1.098394
var(u2) .7378532 .1388652 .5102376 1.067008
Note: Estimates are transformed only in the first 3 equations to relative-risk ratios. Note: _cons estimates baseline relative risk (conditional on zero random effects). LR test vs. multinomial logit: chi2(2) = 227.68 Prob > chi2 = 0.0000 Note: LR test is conservative and provided only for reference.

Les deux premières sections du résultat montrent les estimations du ratio de risque relatif de nos prédicteurs par rapport à la catégorie de base Employé. La dernière section montre les variances estimées des effets aléatoires. Par défaut, les effets aléatoires ne sont pas corrélés, mais leur structure de covariance peut être modifiée en utilisant l’option covariance(). Par exemple, les corrélations entre les effets aléatoires peuvent être estimées en utilisant covariance(unstructured), ou chaque catégorie peut partager un effet aléatoire commun en utilisant covariance(shared).
Après ajustement pour l’âge, le revenu du ménage et le fait d’avoir une personne significative à la maison, le risque relatif d’être en dehors de la population active pour les individus ayant au moins un enfant de moins de 5 ans dans le ménage par rapport à ceux n’ayant aucun enfant de moins de 5 ans dans le ménage est 1,6 fois plus important que le risque relatif d’emploi (IC 95% [1,3, 1,9]). Pour comprendre ces effets en termes de probabilités, nous pouvons utiliser la commande margins.

. margins hhchild

Predictive margins                                       Number of obs = 4,761
Model VCE: OIM

1._predict: Pr(estatus==Out_of_labor_force), predict(pr outcome(1))
2._predict: Pr(estatus==Unemployed), predict(pr outcome(2))
3._predict: Pr(estatus==Employed), predict(pr outcome(3))

Delta-method
Margin std. err. z P>|z| [95% conf. interval]
_predict#hhchild
1#No .3025675 .0131546 23.00 0.000 .276785 .32835
1#Yes .3912476 .0120405 32.49 0.000 .3676486 .4148466
2#No .1628713 .0101131 16.11 0.000 .1430501 .1826925
2#Yes .1398537 .0079462 17.60 0.000 .1242794 .1554279
3#No .5345612 .0136994 39.02 0.000 .5077108 .5614116
3#Yes .4688987 .0116594 40.22 0.000 .4460468 .4917507

Pour un individu sans enfant, la probabilité attendue d’être en dehors de la population active (étiqueté 1#No) est de 0,30, la probabilité attendue d’être au chômage (2#No) est de 0,16, et la probabilité attendue d’être employé est de 0,53 (3#No). Nous constatons également que les personnes ayant des enfants dans le ménage augmentent de 9 points de pourcentage leur probabilité de ne pas faire partie de la population active. Nous pourrions voir comment ces probabilités changent en fonction du revenu du ménage en utilisant une commande supplémentaire margins et visualiser les résultats en utilisant marginsplot.

. quietly margins hhchild, at(hhincome=(20(20)100))

. marginsplot, by(_predict, label("Out of labor force" "Unemployed" "Employed"))
byopts(rows(1) title("Marginal probabilities of employment status"))
legend(order(4 "Child under 5 at home" 3 "No child under 5 at home"))

Pour obtenir des graphiques séparés pour chaque résultat, nous avons utilisé l’option by(_predict) dans marginsplot. Le reste des options ajoute des titres et des étiquettes.
En comparant les lignes au sein de chaque catégorie d’emploi, nous voyons que le fait d’avoir un enfant à la maison n’a pas beaucoup d’impact sur la probabilité d’être au chômage, mais influence la décision de travailler ou d’être en dehors de la population active.
Dans le modèle que nous venons d’ajuster, nous avons utilisé des effets aléatoires pour tenir compte des caractéristiques non observées des individus de notre ensemble de données. Les modèles à effets aléatoires exigent que les effets aléatoires soient non corrélés avec les prédicteurs, et le modèle MNL à effets aléatoires ne fait pas exception. Une alternative largement utilisée est l’estimateur à effets fixes. Pour ajuster notre modèle avec des effets fixes conditionnels, nous ajoutons simplement l’option fe.

. xtmlogit estatus i.hhchild age hhincome i.hhsigno, fe rrr
note: 80 groups (451 obs) omitted because of no variation in the outcome variable over time.

Computing initial values ...

Setting up 26,168 permutations:
....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%

Fitting full model:

Iteration 0:   log likelihood = -2154.4175
Iteration 1:   log likelihood = -2154.2058
Iteration 2:   log likelihood = -2154.2057

Fixed-effects multinomial logistic regression        Number of obs    =  4,310
Group variable: id                                   Number of groups =    720

                                                     Obs per group:
                                                                  min =      5
                                                                  avg =    6.0
                                                                  max =      7

                                                     LR chi2(8)       =  67.42
Log likelihood = -2154.2057                          Prob > chi2      = 0.0000

estatus RRR Std. err. z P>|z| [95% conf. interval]
Out_of_labor_force
hhchild
Yes 1.784236 .2237128 4.62 0.000 1.395488 2.28128
age .9977834 .0146507 -0.15 0.880 .9694778 1.026915
hhincome .9895225 .0086923 -1.20 0.231 .9726318 1.006707
hhsigno
Yes 1.658753 .1654425 5.07 0.000 1.364217 2.016878
Unemployed
hhchild
Yes 1.181866 .1933766 1.02 0.307 .8576197 1.628702
age 1.004991 .0194887 0.26 0.797 .967511 1.043924
hhincome .9717411 .0116616 -2.39 0.017 .9491514 .9948684
hhsigno
Yes 1.11936 .1454154 0.87 0.385 .8677426 1.443939
Employed (base outcome)

Les résultats sont similaires à ceux de l’estimateur à effets aléatoires. Et ils peuvent être interprétés de la même