Effets marginaux d'une régression multinomiale
Bonjour à tous,
Je rencontre un problème concernant l'utilisation de la fonction effects() du package mlogit. Celle-ci permet de calculer les effets marginaux d'une régression multinomiale.
Voici le fonctionnement de la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
m <- mlogit(mode ~ price | income | catch, data = Fish)
# compute a data.frame containing the mean value of the covariates in
# the sample
z <- with(Fish, data.frame(price = tapply(price, index(m)$alt, mean),
catch = tapply(catch, index(m)$alt, mean),
income = mean(income)))
# compute the marginal effects (the second one is an elasticity
effects(m, covariate = "income", data = z)
effects(m, covariate = "price", type = "rr", data = z)
effects(m, covariate = "catch", type = "ar", data = z) |
Passons l'étape mlogit.data qui ne me pose aucun soucis. Je pense que mon problème vient de la spécification de la régression multinomiale.
Ma régression, par exemple pour 3 variables est de la forme : Y ~ 0 | X1 + X2 + X3. Lorsque j'essaie d'estimer les effets marginaux pour un modèle à 2 variables aucun soucis, en revanche pour 3 variables (et quelque soient ces variables) la console R me retourne l'erreur suivante : "Erreur dans if (rhs %in% c(1, 3)) { : l'argument est de longueur nulle"
Pour comprendre d'où venait mon problème j'ai tenté d'effectuer une régression multinomiale de forme similaire sur le jeu de donnée "Fishing", c'est à dire : mode ~ 0 | income + price + catch (même si cette forme n'a aucun sens "économique"). Là encore la console R me retourne la même erreur pour 3 variables mais parvient à estimer ces effets pour un modèle avec deux variables (et ce quelques soient ces variables que j'utilise dans la régression) ...
Ce qui m'amène à penser que mon problème provient bien de la spécification de ma régression multinomiale... Savez vous comment je pourrais trouver une solution à mon problème ?
Merci d'avance pour votre aide :)