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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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
Partager