Modèles de choix discret

Référence Principale

  • Bien que cette présentation suive la trame du livre Discrete Choice Analysis with R (Páez and Boisjoly 2022), elle intègre également d’autres sources pour enrichir et diversifier le contenu.
  • Les transparents couvrent non seulement une partie significative du livre, mais incluent aussi des applications pratiques supplémentaires et des articles scientifiques.

Approfondissement du Sujet

  • La présentation intègre également d’autres ouvrages pertinents dans le domaine des modèles de choix discret.
  • Cette approche vise à offrir une compréhension complète et variée du sujet, tout en rendant la présentation autosuffisante et adaptée à l’apprentissage des étudiants.

Installation du Package discrtr

  • Pour suivre les exemples présentés dans cette formation, il est nécessaire d’installer le package discrtr, qui accompagne le livre Discrete Choice Analysis with R.

  • Vous pouvez installer le package directement dans R en utilisant la commande suivante :

install.packages("discrtr")
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
library(discrtr)

Applications des Modèles de Choix Discret - Partie 1

  • Les modèles de choix discret sont essentiels pour analyser et prédire les décisions dans divers domaines.

  • Marketing : Comprendre les préférences des consommateurs et leur comportement d’achat.

  • Systèmes de Recommandation :

    • Le défi Netflix Prize comme exemple d’amélioration des prédictions des préférences des utilisateurs.
  • Économie des Transports : Analyse des choix de mode de transport et de la demande.


Applications des Modèles de Choix Discret - Partie 2

  • Santé Publique : Étude des choix de traitements médicaux et des comportements de santé.

  • Sciences Environnementales : Évaluation des préférences pour la conservation des ressources.

  • Recherche Politique : Analyse des décisions de vote et des opinions politiques.

  • Ces modèles fournissent aux modélisateurs des aperçus clés sur les processus de décision dans une variété de contextes.


Mécanismes de Choix : Maximisation de l’Utilité

  • Un choix est le résultat d’un processus décisionnel qui peut être décrit comme suit :
  1. Le décideur définit le problème nécessitant une décision.

  2. Le décideur identifie les alternatives existantes et évalue chaque alternative en fonction d’un ensemble d’attributs.

  3. Le décideur fait un choix en se basant sur une règle de décision (également appelée mécanisme de choix).


Exemple : Le Choix d’un Étudiant Universitaire - Partie 1

  • Problème de Choix : Décider du mode de transport pour se rendre à l’université.
  • Alternatives Disponibles :
    • Basées sur le réseau de transport (par exemple, offre de transport public) ou les caractéristiques personnelles (possession d’une voiture ou d’un vélo).
    • Exemple concret : Marcher ou utiliser les transports en commun.

Exemple : Le Choix d’un Étudiant Universitaire - Partie 2

  • Caractéristiques des Alternatives :
    • Marcher : Temps de trajet = 25 minutes, Coût = 0 $.
    • Transports en commun : Temps de trajet = 7 minutes, Coût = 3 $.
  • Mécanisme de Choix :
    • Le choix se base sur un mécanisme de décision, comme opter pour le mode le moins cher, le plus rapide, ou un compromis entre coût et temps de trajet.
    • Par exemple, l’étudiant peut être disposé à payer 1 $ pour chaque réduction de 5 minutes du temps de trajet.

Mécanisme de Décision dans la Modélisation du Choix

  • Règle de Décision :
    • La règle de décision fait référence au mécanisme interne ou au processus de pensée utilisé par le décideur pour sélectionner une alternative unique, en utilisant les informations disponibles.
    • Ce mécanisme est central dans la conceptualisation de la modélisation du choix.

Approche de l’Économie Néo-classique

  • Modèle de Choix en Économie Néo-classique :
    • Le modèle se base sur le choix du consommateur.
    • Conceptuellement, repose sur le concept d’utilité.
    • Différentes règles de décision envisageables, avec une littérature proposant diverses règles pour modéliser les choix.
  • Cette approche met en lumière comment les décisions sont prises en tenant compte de l’utilité perçue des différentes alternatives disponibles.

Qu’est-ce que l’utilité ?

  • L’utilité est un indicateur résumant le plaisir, l’utilité, et l’attractivité d’un choix.
  • Considérons une situation de choix simple : continuer à utiliser son téléphone actuel ou acheter un nouveau modèle.

Situation de Choix Simplifiée

  • Le choix entre :
    • Alternative 1 : Garder le téléphone actuel (coût nul, vitesse connue).
    • Alternative 2 : Acheter un nouveau téléphone (coût et vitesse à évaluer).

Fonction d’Utilité et Prise de Décision

  • La fonction d’utilité combine les attributs des alternatives \(X\) et du décideur \(Z\).
  • Objectif du décideur : maximiser l’utilité en tenant compte de son revenu et des coûts et bénéfices de chaque téléphone.
  • Choix basé sur l’utilité maximale perçue.

Vecteurs d’Attributs

  • Chaque alternative est définie par un vecteur d’attributs \(X\) :
    • Pour garder l’actuel : \(X_N = [cost_N, speed_N]\)
    • Pour le nouveau : \(X_B = [cost_B, speed_B]\)
  • Ces attributs incluent le coût et la vitesse de téléchargement, des facteurs décisifs dans le choix.

Comprendre la Décision

  • Le décideur analyse le coût et les avantages de chaque téléphone.
  • La fonction d’utilité quantifie ces attributs en une valeur unique à maximiser.
  • Ainsi, le décideur choisit l’option offrant la plus grande utilité perçue.

Fonction d’Utilité Spécifique

  • Fonction d’utilité spécifique à un décideur \(i\) et une alternative, prenant en compte les attributs des alternatives et la condition du décideur :
    • \(V_{i,N} = V(\text{cost}_N, \text{speed}_N, \text{income}_i)\)
    • \(V_{i,B} = V(\text{cost}_B, \text{speed}_B, \text{income}_i)\)

Règle de Décision Basée sur l’Utilité

  • Le décideur considère l’utilité des alternatives et choisit celle qui lui offre l’utilité la plus élevée.
  • Le décideur i choisira de conserver le téléphone actuel si \(V_{i,N} > V_{i,B}\).
  • S’il choisit le nouveau téléphone, alors \(V_{i,N} < V_{i,B}\).

Rationalité et Processus de Décision

  • Les décideurs se comportent de manière rationnelle en analysant les coûts et les avantages avant de faire un choix.
  • La fonction d’utilité comprend :
    • Une composante systématique : réponse aux attributs observés.
    • Une composante aléatoire : \(\epsilon_N\), \(\epsilon_B\) capturant les aspects inconnus du processus.

Composantes de l’Utilité

  • L’utilité totale \(U\) pour chaque alternative est la somme de sa valeur systématique \(V\) et d’une composante aléatoire \(\epsilon\) :
    • \(U_N = V_N + \epsilon_N\)
    • \(U_B = V_B + \epsilon_B\)
  • La partie aléatoire \(\epsilon\) représente l’utilité aléatoire et les aspects du processus de décision que l’analyste ignore.

Implications de l’Utilité Aléatoire

  • Sans incertitude, si nous connaissions tout sur le processus de décision, il n’y aurait pas de composante aléatoire, donc \(U_N = V_N\) et \(U_B = V_B\).
  • La présence de \(\epsilon_N\) et \(\epsilon_B\) signifie que nous ne pouvons pas être certains de \(U_N > U_B\) ou l’inverse.

Attribution de Probabilités dans l’Utilité Aléatoire

  • Avec les composantes aléatoires, nous pouvons associer une probabilité à chaque décision potentielle.
  • La probabilité de conserver le téléphone existant est celle où son utilité est jugée supérieure à celle d’acheter un nouveau :
    • \(P_N = P(U_N > U_B) = P(V_N + \epsilon_N > V_B + \epsilon_B)\)

Fondement de la Modélisation de l’Utilité dans les Choix Discrets

  • En réarrangeant les termes, nous obtenons :
    • \(P_N = P(\epsilon_B - \epsilon_N < V_N - V_B)\)
  • Cette formule est la base de la modélisation de l’utilité aléatoire en analyse de choix discret.

Fonctions de Densité de Probabilité (PDF)

  • Les termes aléatoires dans l’analyse de choix discrets sont représentés par des fonctions de densité de probabilité.
  • Une PDF est un construct mathématique décrivant l’aléatoire et doit satisfaire :
    • Condition 1: \(f(x) \geq 0\) pour tout \(x\)
    • Condition 2: \(\int_{-\infty}^{\infty} f(x)dx = 1\)

Exemple de Fonction de Densité de Probabilité

  • Considérons l’exemple suivant pour illustrer les propriétés d’une PDF.
  • Nous définirons la fonction suivante pour une distribution uniforme : \[ f(x) = \begin{cases} 0 & \text{si } x \leq -L, \\ \frac{1}{2L} & \text{si } -L < x < L, \\ 0 & \text{si } x \geq L. \end{cases} \]
  • Cette fonction est représentée graphiquement avec \(L = 2\).
# Define a function to return a value of one if # -L>x<=Landzero otherwise
uniform <- function(x, L){
# Logical condition: x greater than minus L and  less than L
 ifelse(x >-L & x <= L,
# Value if true
1/(2 * L), 
# Value if false 
0)
}

Installation du Package tidyverse

  • Le package tidyverse est une collection de packages R pour la science des données, incluant ggplot2, dplyr, tidyr, et plus.
  • L’installation de tidyverse permettra d’accéder à des outils essentiels pour l’analyse et la visualisation des données dans cette présentation.
# Installer le package tidyverse
install.packages("tidyverse")
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
# Charger le package tidyverse
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Tracé d’une Distribution Linéaire avec ggplot2

  • Création d’un cadre de données (data.frame) pour le traçage du graphique.
  • Utilisation de ggplot2 pour tracer la distribution linéaire.
# Define L 
L<-2

# Define parameter L for the distribution
L<-2
# Create a data frame for plotting
# The function `seq()` is used to create a sequence of
# values starting at `from` and ending at `to` with a
# step increase of `by`
df <- data.frame(x=seq(from = -(L+1),
to = L+1, by = 0.01)) %>%
# Mutate the data frame to add a new column with the 
# value of the function 
  mutate(f=uniform(x, L))
# Plot
ggplot(data = df,
# Map column x in the data frame to the x-axis # and column f to the y-axis
aes(x=x,
y=f)) + geom_area(fill = "orange",
alpha = 0.5) +
# Set the limits of the y axis
ylim(c(0, 1/(2 * L) + 0.2 * 1/(2 * L))) +
# Draw a horizontal line for the x axis
geom_hline(yintercept = 0) +
# Draw a vertical line for the y axis
geom_vline(xintercept = 0) +
ylab("f(x)")


Fonction de Répartition Cumulative pour la Distribution Uniforme

  • La fonction de répartition cumulative (CDF) \(F(x)\) est définie comme la probabilité que \(x\) soit inférieur ou égal à \(X\).
  • Pour notre distribution uniforme, la CDF est donnée par : \[ F(x) = \begin{cases} 0 & \text{si } x \leq -L, \\ \frac{x + L}{2L} & \text{si } -L < x < L, \\ 1 & \text{si } x \geq L. \end{cases} \]
  • Cette fonction CDF montre comment la probabilité évolue avec l’intervalle choisi.

Tracé de la Fonction de Répartition Cumulative (CDF) d’une Distribution Uniforme

Nous définissons et traçons la CDF d’une distribution uniforme à l’aide de ggplot2.

# Définir la fonction de répartition cumulative
punif <- function(x, L) {
  ifelse(x <= -L, 
         0, 
         ifelse(x > -L & x <= L, 
                (x + L) / (2 * L), 
                1))
}

# Définir L
L <- 2

# Créer un cadre de données pour le tracé de la CDF
df <- data.frame(x = seq(from = -L-1, to = L+1, by = 0.01)) %>%
  mutate(f = punif(x, L))

# Tracer la CDF avec ggplot2
ggplot(data = df, aes(x = x, y = f)) +
  geom_step(color = "orange") +
  ylim(c(0, 1)) +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0) +
  ylab("F(x)")


Deuxième Exemple de Fonction de Densité de Probabilité (PDF)

Nous allons considérer un second exemple avec la fonction suivante :

\[ f(x) = \begin{cases} 0 & \text{si } x \leq 0, \\ 2x & \text{si } 0 < x < 1, \\ 0 & \text{si } x \geq 1. \end{cases} \]


Visualisation de la PDF de Distribution Linéaire avec ggplot2

# Définition de la fonction pour la distribution linéaire
linear <- function(x) {
  ifelse(x > 0 & x <= 1, 2 * x, 0)
}

# Création du cadre de données pour le tracé
df <- data.frame(x = seq(from = 0, to = 1, by = 0.01)) %>%
  mutate(f = linear(x))

# Tracé avec ggplot2
ggplot(data = df, aes(x = x, y = f)) +
  geom_area(fill = "orange", alpha = 0.5) +
  ylim(c(0, 2)) +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0) +
  ylab("f(x)")

Distribution linéaire et sa densité avec ggplot2

Formulation de la CDF Linéaire

  • La fonction de répartition cumulative (CDF) pour notre distribution linéaire est définie comme suit :

\[ F(x) = \begin{cases} 0 & \text{pour } x \leq 0, \\ x^2 & \text{pour } 0 < x < 1, \\ 1 & \text{pour } x \geq 1. \end{cases} \]

  • Cette CDF indique la probabilité que la variable aléatoire \(x\) soit inférieure ou égale à une valeur \(X\).

Tracé de la CDF Linéaire avec ggplot2

  • Utilisons ggplot2 pour visualiser la CDF de la distribution linéaire que nous avons précédemment définie.
# Définir la fonction pour la CDF de la distribution linéaire
plinear <- function(x) {
  ifelse(x <= 0,
         0,
         ifelse(x > 0 & x <= 1,
                x^2 ,
                1))
}
# Créer un cadre de données pour le tracé
df <- data.frame(x = seq(from = -0.2, to = 1.2, by = 0.001)) %>%
  mutate(F = plinear(x))

# Tracer la CDF avec ggplot2
ggplot(data = df, aes(x = x, y = F)) +
  geom_step(color = "orange") +
  ylim(c(0, 1)) +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0) +
  ylab("F(x)")

Tracé de la fonction de répartition cumulative linéaire

Exercice : Calcul de Probabilités pour une PDF Cubique

Considérez la fonction de densité de probabilité (PDF) suivante, qui implique une courbe plutôt que des lignes droites :

\[ f(x) = \left\{ \begin{array}{ll} 0 & \text{pour } x \leq 0, \\ 4x^3 & \text{pour } 0 < x < 1, \\ 0 & \text{pour } x \geq 1. \end{array} \right. \]

Tâches :

  1. Définissez cette fonction dans R.
  2. Calculez et tracez la fonction de répartition cumulative (CDF) correspondante.
  3. Utilisez ggplot2 pour visualiser la PDF et la CDF.

Calcul Symbolique avec Ryacas en R

  • Une Approche Moderne pour le Calcul Mathématique

  • Contexte Traditionnel Les calculs mathématiques en statistiques et probabilités sont souvent réalisés manuellement ou avec des méthodes numériques, pouvant être complexes et longues.

Innovation avec Ryacas Ryacas offre une alternative pour des calculs symboliques en R :

  • Intégration et Dérivation Automatisées
  • Résolution d’Équations Symboliques
  • Manipulation Algébrique Expressive

Application Pratique Illustration de l’usage de Ryacas pour la fonction de répartition cumulative (CDF) d’une PDF complexe. Cette méthode apporte précision et efficacité, en particulier pour des fonctions non linéaires ou difficiles à traiter classiquement.


Dérivation Symbolique d’une Fonction Composite avec Ryacas0

Dans cet exemple, nous allons au-delà des bases en utilisant Ryacas0 pour dériver une fonction composite plus complexe, \(\exp(x) \cdot x^2 + \cos(x)\). Ce choix de fonction démontre comment Ryacas0 peut facilement gérer des opérations de calcul symbolique sur des fonctions combinant exponentielles, puissances et fonctions trigonométriques. Cette démonstration souligne la capacité de Ryacas0 à traiter des expressions mathématiques variées en R.

install.packages("Ryacas0")
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
# Charger le package Ryacas
library(Ryacas0)

# Définir la fonction symbolique
x <- Sym("x")
fonction <- exp(x)*x^2+cos(x)

# Dérivation de la fonction x^2
derivee <- fonction %>% deriv() 

# Afficher le résultat
derivee
yacas_expression(exp(x) * (2 * x) + exp(x) * x^2 - sin(x))

D’accord, je vais reformuler la synthèse en prenant en compte l’exemple du choix de renouvellement du téléphone, et en clarifiant le rôle de ( N ) dans le modèle. Voici une nouvelle version :


Un Modèle de Choix Discret simplifié pour le Renouvellement d’un Téléphone

  • Reprenons l’exemple où l’individu est confronté à la décision de renouveler son téléphone (option \(N\), pour “new”) ou de ne rien faire (option \(B\), pour “baseline” ou “existing”).

  • La différence d’utilité perçue entre les deux options est modélisée par la distribution des termes aléatoires d’utilité \(\epsilon\), qui suit une loi uniforme \(\mathcal{U}(-L, L)\).

  • Le modèle présenté suppose que la loi de la différence entre les variables d’utilité suit une loi uniforme sur l’intervalle \([-L, L]\).

  • Nous obtenons le même modèle en supposant que chaque terme aléatoire ε suit de manière indépendante une loi uniforme sur l’intervalle \([0, L]\).

  • Il est important de noter que ces deux approches conduisent au même modèle, et ce choix alternatif simplifie la spécification des termes aléatoires tout en préservant la cohérence du modèle global.

  • La probabilité de conserver le téléphone actuel (\(P_B\)) et de choisir la nouvelle option (\(P_N\)) peut être exprimée comme suit :

\[ P_N = P(\epsilon_B - \epsilon_N < V_N - V_B) \]

  • Cette probabilité est ensuite divisée en trois scénarios, dépendant de la valeur relative de \(V_N - V_B\) par rapport à l’intervalle \([-L, L]\) :

\[ P_N = \begin{cases} 0 & \text{si } V_N - V_B < -L, \\ \frac{V_N - V_B + L}{2L} & \text{si } -L \leq V_N - V_B \leq L, \\ 1 & \text{si } V_N - V_B > L. \end{cases} \]

  • Ce modèle simple illustre l’utilisation des distributions de probabilité pour modéliser des décisions dans des contextes d’incertitude et de variabilité des préférences individuelles.

Influence de la Différence d’Utilité Systématique sur la Probabilité de Choix

Nous pouvons décomposer l’expression de la probabilité de choix en fonction de la différence d’utilité systématique entre renouveler un téléphone et ne rien faire :

  1. Utilité du Nouveau Téléphone Supérieure : Si l’utilité systématique d’un nouveau téléphone (\(V_N\)) est supérieure à celle de ne rien faire (\(V_B\)), la différence (\(V_N - V_B\)) est négative. Plus cette valeur est négative, plus la probabilité de ne rien faire est faible. Lorsque cette différence est inférieure à \(-L\), la probabilité de ne rien faire devient nulle.

  2. Utilité des Deux Options Identique : Si l’utilité systématique du nouveau téléphone est identique à celle de ne rien faire, la différence (\(V_N - V_B\)) est nulle. Dans ce cas, la probabilité de ne rien faire est de 0.5, indiquant une chance égale de choisir l’une ou l’autre option.

  3. Utilité du Nouveau Téléphone Inférieure : Lorsque l’utilité systématique du nouveau téléphone est inférieure à celle de ne rien faire, la différence (\(V_N - V_B\)) est positive. Plus cette valeur est positive, plus la probabilité de ne rien faire est élevée. Lorsque la différence dépasse \(L\), la probabilité de ne rien faire atteint 1.

Ces scénarios illustrent comment la probabilité de choisir l’option de ne rien faire varie en fonction de la valeur relative des utilités systématiques des deux options dans le modèle d’utilité aléatoire.


  • La formulation garantit que la somme des probabilités de ne rien faire et de renouveler le téléphone est toujours égale à 1. Cette égalité découle de la nature complémentaire des deux choix : renouveler le téléphone ou ne rien faire. Puisqu’ils sont les seules options possibles et se mutuellement exclusives, leur probabilité combinée doit totaliser 1, reflétant ainsi l’exhaustivité des choix dans le modèle.

\[ P_N + P_B = 1 \]

Synthèse : Modèle de Probabilité Linéaire dans le Choix Discret

  • Modèle Exploré : Modèle de Probabilité Linéaire (Linear Probability Model) - méthode simple de choix discret.
  • Référence : Basé sur (Ben-Akiva and Lerman 1985).
  • Flexibilité du Modèle : Applicable avec différentes fonctions de distribution de probabilité.
  • Principe Clé : Avec une fonction de distribution valide et des utilités systématiques définies, il est possible d’évaluer les choix de manière probabiliste.
  • Portée du Modèle : L’exemple actuel est binaire pour la simplicité, mais les principes s’étendent aux situations de choix multinomial.

Modèle Logit

Package Nécessaire pour ce Chapitre

  • Pour ce chapitre, nous explorerons des solutions plus sophistiquées que les lois uniformes pour modéliser les distributions, ouvrant ainsi la voie à une compréhension plus approfondie des choix discrets.
install.packages("evd")
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
library(evd) # Chargement du package Extreme Value Distributions

Choix des Distributions de l’Utilité Aléatoire

  • Le modèle de choix discret nécessite des hypothèses sur les termes d’utilité aléatoire.
  • Précédemment, nous avons exploré différentes distributions de probabilité, dont la distribution uniforme.
  • La distribution uniforme est utile pour illustrer des concepts de probabilité, mais elle a des limitations pratiques.
  • En réalité, l’utilité est intrinsèquement inobservable, ce qui rend le choix de la distribution aléatoire plutôt pragmatique.
  • Le choix de la distribution prend souvent en compte sa commodité pour l’estimation des paramètres à partir d’un échantillon.
  • Les paramètres incluent ceux utilisés dans la fonction d’utilité systématique Vij et les paramètres spécifiques à la distribution, comme \(a\) et \(b\) dans le cas de la distribution uniforme.
  • Ces paramètres sont utilisés pour déterminer la forme de la distribution.
  • La simplicité de la distribution uniforme réside dans le calcul de l’aire sous la courbe, qui est celle d’un rectangle.
  • Cependant, la distribution uniforme présente des limitations en termes de représentation de certains comportements.

Distribution de Probabilité Extreme Value Type I (EV Type I)**

  • Un choix pratique de distribution est la fonction de distribution de probabilité de type I de la valeur extrême (EV Type I).
  • Cette fonction est définie comme suit :

\[ f(x; μ, σ) = e^{-(x + e^{-(x-μ)/σ})} \]

  • La distribution EV Type I a deux paramètres, \(\mu\) et \(\sigma\), qui déterminent la position (c’est-à-dire le centre) et l’échelle de la distribution, respectivement.
  • La forme de cette distribution est illustrée avec \(\mu = 0\) et \(\sigma = 1\).
# Define parameters for the distribution 
# Location 
mu <- 0 
# Scale 
sigma <- 1

# Create a data frame for plotting; 
df <- data.frame(x=seq(from = -5, to = 5, by = 0.01)) %>%
  # The function `dgumbel()` is the EV Type I distribution 
  mutate(f=dgumbel(x, loc = mu, scale = sigma))

# Plot 
ggplot(data = df, aes(x=x, y=f)) + 
  geom_area(fill = "orange", alpha = 0.5) +
  geom_hline(yintercept = 0) + 
  geom_vline(xintercept = 0) +
  ylab("f(x)")

Exploration Pratique de la Distribution EV Type I

  • Expérimentation avec le Code R : Essayez de modifier les paramètres de la distribution EV Type I pour observer les changements dans son comportement.
  • N’oubliez pas d’ajuster les valeurs de début et de fin de la séquence pour le cadre de données, surtout si vous modifiez le centre de la distribution.
  • Propriété Intéressante de la Distribution EV Type I : La différence entre deux distributions EV Type I suit une distribution logistique. Si \(X \sim EVI(\alpha_X, \sigma)\) et \(Y \sim EVI(\alpha_Y, \sigma)\) et que \(X\) et \(Y\) sont indépendantes, alors la différence \((X - Y)\) suit une distribution logistique avec la fonction de densité suivante :

\[ f(x; \mu, \sigma) = \frac{e^{-(x - \mu)/\sigma}}{\sigma(1 + e^{-(x - \mu)/\sigma})^2} \]

\(\mu =\alpha_X - \alpha_Y\) est le paramètre de localisation et \(\sigma\) est le paramètre d’échelle de la distribution logistique.

  • Cette propriété relie étroitement les distributions EV Type I et logistique, offrant une perspective enrichissante sur la modélisation probabiliste en choix discret.

Le Modèle Logit

  • Interprétation de la Distribution EV Type I : La différence de deux variables aléatoires suivant la distribution EV Type I génère une variable qui suit la distribution logistique.

  • Déclaration de Probabilité pour les Choix : Considérons la formule générale de probabilité pour les choix dans un modèle de choix discret : \[ P_i = P(\epsilon_j - \epsilon_i < V_i - V_j) \]

  • Distribution Logistique à partir de l’EV Type I : Si les termes d’utilité aléatoire \(\epsilon\) suivent la distribution EV Type I, alors leur différence suit la distribution logistique.

  • Fonction de Densité de la Distribution Logistique : La fonction de densité de la distribution logistique résultante est donnée par : \[ f(x; \mu, \sigma) = \frac{e^{-(x - \mu)/\sigma}}{\sigma(1 + e^{-(x - \mu)/\sigma})^2} \]


Comparaison entre la Distribution Logistique et la Distribution Normale

  • Propriétés de la Distribution Logistique : Bien que la distribution EV Type I ne soit pas symétrique, la distribution logistique l’est. - Elle ressemble à la distribution normale mais présente des queues plus épaisses pour les mêmes paramètres de localisation et d’échelle.
# Définition des paramètres pour la distribution
mu <- 0  # Localisation
sigma <- 1  # Échelle

# Création d'un cadre de données pour le traçage
df <- data.frame(x=seq(from = -5, to = 5, by = 0.01)) %>%
  mutate(
    logistic = dlogis(x, location = mu, scale = sigma),
    normal = dnorm(x, mean = mu, sd = sigma)
  )
  • Visualisation des Distributions : Comparaison visuelle de la distribution logistique avec la distribution normale pour les mêmes paramètres.

Comparaison entre la Distribution Logistique et la Distribution Normale

  • Propriétés des Distributions : La distribution logistique, bien que similaire à la distribution normale, présente des queues plus épaisses, indiquant une probabilité plus élevée de valeurs extrêmes.
# Définition des paramètres pour les distributions
mu <- 0  # Localisation
sigma <- 1  # Échelle

# Création d'un cadre de données pour le traçage
df <- data.frame(x=seq(from = -5, to = 5, by = 0.01)) %>%
  mutate(
    logistic = dlogis(x, location = mu, scale = sigma),
    normal = dnorm(x, mean = mu, sd = sigma)
  )

# Tracé comparatif des distributions logistique et normale
ggplot() +
  geom_area(data = df, aes(x = x, y = logistic), fill = "blue", alpha = 0.5) +
  geom_area(data = df, aes(x = x, y = normal), fill = "black", alpha = 0.5) +
  geom_hline(yintercept = 0) + 
  geom_vline(xintercept = 0) +
  ylab("f(x)") +
  ggtitle("Comparison of Logistic and Normal Distributions")

  • Ces graphiques illustrent comment la distribution logistique, avec des queues plus épaisses, a une probabilité plus élevée de valeurs extrêmes par rapport à la distribution normale pour les mêmes paramètres.

Modèle Logit et Distribution Logistique

  • Expression de Probabilité et Utilité Aléatoire : En supposant que les termes d’utilité aléatoire \(\epsilon\) suivent la distribution EV Type I, leur différence (\(\epsilon_n = \epsilon_i - \epsilon_j\)) suit la distribution logistique.

  • Calcul de la Probabilité par Intégration : Pour obtenir une probabilité, il est nécessaire de calculer l’aire sous la courbe de la fonction logistique. Heureusement, cette intégrale a une solution analytique :

\[ F(x; \mu, \sigma) = \frac{1}{1 + e^{-(x - \mu)/\sigma}} \] (avec \(\mu=0\) ici).

  • Solution Analytique et Expression de la Probabilité : La solution analytique représente la valeur exacte de l’intégrale. En conséquence, l’expression de probabilité en termes d’utilités devient :

\[ P_i = P(\epsilon_n < V_i - V_j) = \frac{1}{1 + e^{-(V_i - V_j - \mu)/\sigma}} \]

  • Après manipulation, cette expression peut être réécrite comme :

\[ P_i = P(\epsilon_n < V_i - V_j) = \frac{e^{V_i/\sigma}}{e^{V_i/\sigma} + e^{(V_j + \mu)/\sigma}} \]

  • Modèle Logit et Probabilité Logit : La probabilité de choisir l’alternative \(i\) est l’aire sous la courbe de la fonction de distribution logistique à gauche de \(X = V_i - V_j - \mu\). Cette probabilité est appelée probabilité logit, et le modèle résultant est le modèle logit.

Illustraion du Modèle Logit avec R

# Paramètres de la distribution
mu <- 0  # Localisation
sigma <- 1  # Échelle

# Limite supérieure pour le calcul de la probabilité (équivalent à V_i - V_j)
x <- -2

# Création des cadres de données pour le tracé
df <- data.frame(x = seq(from = -6 + mu, to = 6 + mu, by = 0.01)) %>%
  mutate(y = dlogis(x, location = mu, scale = sigma))

df_p <- data.frame(x = seq(from = -6, to = x, by = 0.01)) %>%
  mutate(y = dlogis(x, location = mu, scale = sigma))

# Tracé de la fonction de distribution et de l'aire sous la courbe
ggplot(data = df, aes(x, y)) +
  geom_area(fill = "orange", alpha = 0.5) +
  geom_area(data = df_p, fill = "orange", alpha = 1) +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0) +
  xlab(expression(paste(V[i] - V[j] - mu))) +
  ylab("f(x)")

Visualisation de la Fonction de Distribution Cumulative Logistique

Bien sûr, voici comment vous pouvez présenter ce graphique basé sur la fonction de distribution cumulative (CDF) de la distribution logistique dans un slide Quarto :


Visualisation de la Fonction de Distribution Cumulative Logistique

  • Paramétrage de la Distribution : Définition des paramètres de localisation et d’échelle pour la distribution logistique.
# Paramètres de la distribution
mu <- 0  # Localisation
sigma <- 1  # Échelle

# Création du cadre de données pour le tracé de la fonction de distribution cumulative
df <- data.frame(x = seq(from = -5 + mu, to = 5 + mu, by = 0.01)) %>%
  mutate(f = plogis(x, location = mu, scale = sigma))
  • Tracé de la Fonction de Distribution Cumulative (CDF) Logistique :
# Tracé de la fonction de distribution cumulative logistique
logit_plot <- ggplot(data = df, aes(x = x, y = f)) +
  geom_line(color = "orange") +
  ylim(c(0, 1)) +
  geom_hline(yintercept = 0) +
  geom_vline(xintercept = 0) +
  xlab(expression(paste(V[i] - V[j] - mu))) +
  ylab(expression(paste(P[i])))

logit_plot

  • Cette visualisation illustre la fonction de distribution cumulative de la distribution logistique. Elle montre comment la probabilité évolue en fonction de la différence entre les utilités systématiques des alternatives dans le modèle logit.

La Forme Sigmoid de la Probabilité Logit et ses Applications

  • Caractéristique de la Fonction Logit : La probabilité logit présente une forme sigmoid, rappelant la lettre “s”. Cette forme est commune à la plupart des modèles de choix discret, reflétant des transitions non linéaires entre les états.

  • Applications Multidisciplinaires des Fonctions Sigmoid : Les fonctions sigmoid sont utiles dans de nombreux domaines, comme l’adoption de technologies (adoption lente initiale, suivie d’une croissance rapide, puis d’une saturation) et la croissance démographique (croissance lente, explosive, puis atteinte d’une capacité limite).

  • Perspectives Politiques en Analyse de Choix Discret : Dans l’analyse des choix de transport, par exemple, cette forme indique que même de grandes augmentations de l’utilité d’une option (comme le transport en commun) peuvent entraîner des gains modestes en probabilité si la probabilité initiale de choisir cette option est faible.

  • Illustration avec le Transport en Commun : Supposons que la courbe logit représente la probabilité de choisir le transport en commun. Si la probabilité initiale est faible, une augmentation identique de l’utilité du transport en commun entraînerait un gain beaucoup plus important en probabilité si la probabilité initiale avait été de 0,5.


Annotation du Graphique Logit pour l’Analyse des Choix de Transport

  • Ajout d’Annotations au Graphique Logit : Utilisation des annotations pour illustrer l’impact des variations d’utilité sur la probabilité de choisir le transport en commun par rapport à la voiture.
# Ajout d'annotations au graphique logit existant
logit_plot +
  xlab(expression(paste(V[transit] - V[car] - mu))) +
  ylab(expression(paste(P[transit]))) +
  annotate("segment", x = -3.75, xend = -2.5, y = 0.024, yend = 0.024, colour = "blue", linetype = "solid") +
  annotate("segment", x = -2.5, xend = -2.5, y = 0.024, yend = 0.075, colour = "blue", linetype = "solid") +
  annotate("segment", x = 0, xend = 1.25, y = 0.5, yend = 0.5, colour = "red", linetype = "dashed") +
  annotate("segment", x = 1.25, xend = 1.25, y = 0.5, yend = 0.77, colour = "red", linetype = "dashed")

  • Ces annotations aident à visualiser comment les changements dans l’utilité perçue de chaque mode de transport influencent la probabilité de choix dans un contexte de choix discret.

Impact des Variations d’Utilité sur la Probabilité de Choisir le Transport en Commun

  • Contexte de la Courbe Logit pour le Choix du Transport en Commun : Imaginons que la courbe logit représente la probabilité de choisir le transport en commun.

  • Effet d’une Faible Probabilité Initiale : Lorsque la probabilité initiale de choisir le transport en commun est basse, même de grandes augmentations de son utilité se traduisent par des gains modestes en termes de probabilité. Ceci est illustré par la ligne bleue solide dans le graphique correspondant.

  • Effet d’une Probabilité Initiale Moyenne : En revanche, si la probabilité initiale de choisir le transport en commun avait été de 0.5, une augmentation identique de son utilité aurait entraîné un gain beaucoup plus important en termes de probabilité. Ceci est démontré par la ligne rouge pointillée dans le graphique correspondant.

Cette analyse met en évidence l’importance de la probabilité initiale dans l’évaluation des effets des changements d’utilité sur les décisions de transport.

Comprendre les Paramètres \(\mu\) et \(\sigma\) dans le Modèle Logit

  • Rôle du Paramètre de Centrage $) : La valeur de \(\mu\) influence la différence systématique entre les utilités \(V_i\) et \(V_j\). Un \(\mu\) positif augmente l’utilité de \(j\), tandis qu’un \(\mu\) négatif augmente celle de \(i\). Il est essentiel de ne pas fixer arbitrairement \(\mu\) à zéro car il contient des informations importantes sur les différences systématiques relatives.

  • Impact du Paramètre d’Échelle $) : Le paramètre \(\sigma\) est commun aux deux fonctions d’utilité dans le modèle logit et peut être arbitrairement fixé à 1. Ceci est dû à la nature ordinale de la règle de décision : choisir une alternative si son utilité est supérieure à celle des alternatives concurrentes.

  • Simplification du Modèle Logit : Pour simplifier la présentation, nous pouvons supposer que l’une des fonctions d’utilité absorbe le paramètre \(\mu\). La probabilité logit peut alors être réécrite sans affecter l’ordinalité des choix :

\[ P_i = \frac{e^{V_i}}{e^{V_i} + e^{V_j}} \]

  • Probabilité de Choix dans le Cas Binomial : Dans un scénario à deux alternatives, la probabilité de choisir \(j\) est simplement \(P_j = 1 - P_i\).

Je m’excuse pour l’erreur. Voici la correction avec les bullet points tels que vous les avez formatés :


  • Extension au Modèle Multinomial : Le modèle logit multinomial étend le cadre binaire pour gérer plusieurs alternatives.

  • La probabilité de choisir une alternative \(i\) dans un scénario avec plusieurs options est donnée par : \[ P_i = \frac{e^{V_i}}{\sum_{j=1}^{J} e^{V_j}} \]\(J\) représente le nombre total d’alternatives.

  • Cette formule garantit que la somme des probabilités de toutes les alternatives est égale à 1.

  • Chaque \(V_j\) est une fonction d’utilité pour l’alternative \(j\), influencée par les paramètres du modèle tels que \(\mu\) et \(\sigma\).

  • Interprétation des Résultats : L’analyse des résultats dans le modèle multinomial implique de comparer les probabilités de choix entre différentes alternatives, offrant ainsi un aperçu des préférences des individus ou des facteurs influençant le choix.


  • Propriétés du Modèle Logit : Le modèle est central dans l’analyse de choix discrets grâce à sa simplicité calculatoire, évitant l’évaluation numérique des intégrales.

  • Pour les modèles multinomiaux, on calcule un volume sous la surface plutôt qu’une aire.

  • Rapport des Cotes : Le rapport des probabilités \(\frac{P_i}{P_k}\) se réduit à \(\frac{e^{V_i}}{e^{V_k}}\), montrant la dépendance uniquement sur la différence d’utilité \(V_i - V_k\).

  • Contrainte de Normalisation : La somme des probabilités pour toutes les alternatives est contrainte à 1 : \[ P_1 + P_2 + \ldots + P_J = 1 \]

  • Indépendance des Cotes Relatives : L’indépendance des cotes relatives signifie que le rapport des probabilités entre deux choix est constant, indépendant des autres alternatives. Cette proprtiété est connume comme independant from irrelevant alternatives (IIA).

  • Indépendance des Cotes Relatives : La propriété d’IIA (Independence from Irrelevant Alternatives) indique que le rapport de probabilités de choix entre deux alternatives reste inchangé, indépendamment de la présence d’autres options.

  • Cela suggère que l’ajout ou la suppression d’options supplémentaires n’altère pas les rapports de cotes entre toutes les paires d’alternatives existantes dans le modèle logit multinomial.

Paradoxe de l’IIA

Introduction et Contexte - Étude de choix entre trois produits : margarine de “Naturally” et deux types de beurre (salé et faible en sodium) de “Happy Farms”. - Probabilités initiales de choisir chacun des produits : \[ P^{0}_{m} = \frac{1}{3}, \quad P^{0}_{sb} = \frac{1}{3}, \quad P^{0}_{lb} = \frac{1}{3} \]

Changement dû à la Modification du Prix du Beurre Salé - Effet d’une baisse de prix sur le beurre salé de Happy Farms. - Nouvelle probabilité de choisir le beurre salé (sb) après la modification : \[ P^{1}_{sb} = \frac{1}{2} \]

Réajustement des Probabilités pour les Autres Produits - Suite à la modification, réajustement nécessaire des probabilités pour que leur somme totalise 1 : \[ P^{1}_{m} + P^{1}_{sb} + P^{1}_{lb} = 1 \] - En déduisant les nouvelles probabilités : \[ P^{1}_{m} = P^{1}_{lb} = \frac{1 - P^{1}_{sb}}{2} = \frac{1 - \frac{1}{2}}{2} = \frac{1}{4} \] - Les nouvelles probabilités sont donc : \[ P^{1}_{m} = \frac{1}{4}, \quad P^{1}_{sb} = \frac{1}{2}, \quad P^{1}_{lb} = \frac{1}{4} \]

Implication sur la Part de Marché et IIA

  • Examen de la part de marché de Happy Farms suite à la modification du prix du beurre salé.
  • Impact de la propriété IIA sur les modèles de substitution entre les produits.
  • L’augmentation de la probabilité de choisir le beurre salé de \(1/3\) à \(1/2\) a réduit la probabilité totale des autres produits (margarine et beurre faible en sodium) de \(2/3\) à \(1/2\). Cela représente une diminution globale de 25% pour ces deux produits ensemble.
  • Cette réduction globale de 25% est le résultat d’une diminution combinée des probabilités de la margarine et du beurre faible en sodium, qui, lorsqu’elle est répartie, correspond à une réduction de la part de marché de chacun des deux produits.
  • Remarquez que l’augmentation de la probabilité de choisir le beurre salé puise proportionnellement dans les autres alternatives (c’est-à-dire, le beurre faible en sodium et la margarine) - en fait, 12,5% de chacun.
  • Ce résultat a-t-il du sens ?
  • Quelle est désormais la part de marché de la gamme de beurres de la marque Happy Farms ? »

Second Exemple Illustrant l’IIA

  • Dans cet exemple supplémentaire, nous observons les effets de l’IIA sur les probabilités de choix entre les trois produits.
  • Les probabilités initiales sont les suivantes : \(P^0_m = 0.5\) pour la margarine, \(P^0_{sb} = 0.3\) pour le beurre salé, et \(P^0_{lb} = 0.2\) pour le beurre faible en sodium.
  • Si la probabilité de choisir le beurre salé est augmentée à \(P^1_{sb} = 0.5\), les probabilités des autres produits doivent être ajustées pour que la somme des probabilités reste égale à 1.
  • En utilisant le principe de l’IIA, la nouvelle probabilité pour la margarine devient \(P^1_m = 5/14\) et pour le beurre faible en sodium \(P^1_{lb} = 2/14\), reflétant un ajustement proportionnel découlant de l’augmentation de la probabilité pour le beurre salé.

Conclusion sur les Problématiques du Modèle Logit

  • Les patterns de substitution proportionnelle observés dans le modèle logit sont le résultat de l’hypothèse d’indépendance entre les utilités des alternatives.

  • Cependant, cette hypothèse peut ne pas tenir dans des cas où les alternatives ont des similitudes, comme le beurre salé et le beurre faible en sodium, qui sont plus substituables entre eux que par rapport à un troisième produit distinct, la margarine.

  • Un attribut manquant, tel que le goût ou la santé, peut être nécessaire pour une discrimination plus précise entre les alternatives, suggérant ainsi que le modèle logit est idéal seulement quand toutes les utilités systématiques sont complètement spécifiées.
  • Si les utilités systématiques ne sont pas entièrement définies, cela peut mener à des patterns de substitution peu réalistes ou illogiques.

Pour pallier ces limites, deux approches sont suggérées :

  1. Veiller à ce que les fonctions d’utilité systématique soient complètement spécifiées.
  2. Modifier l’appareil de modélisation pour intégrer les corrélations entre les utilités aléatoires.

Spécification Linéaire des Utilités et Choix de Transport

Contexte Examinons le choix quotidien entre deux modes de transport : un nouveau train (N) et un bus (B). Chaque mode présente des caractéristiques telles que le coût et la vitesse, influençant les décisions d’un individu.

Fonctions d’Utilité Pour un individu \(n\), les utilités pour chaque mode de transport sont : Nouveau train (N) : \(U_{n,N} = V(\text{cost}_N, \text{speed}_N, \text{income}_n) + \epsilon_{n,N}\) Bus (B) : \(U_{n,B} = V(\text{cost}_B, \text{speed}_B, \text{income}_n) + \epsilon_{n,B}\)

Forme Linéaire des Utilités Systématiques La fonction d’utilité systématique \(V\) est spécifiée de manière linéaire : Pour le nouveau train : \(V(\text{cost}_N, \text{speed}_N, \text{income}_n) = \beta_1 \times \text{cost}_N + \beta_2 \times \text{speed}_N + \beta_3 \times \text{income}_n\) Pour le bus : \(V(\text{cost}_B, \text{speed}_B, \text{income}_n) = \mu + \beta_1 \times \text{cost}_B + \beta_2 \times \text{speed}_B + \beta_3 \times \text{income}_n\)

Compensation entre attibuts Ce modèle illustre comment des coûts plus élevés peuvent être compensés par une vitesse plus grande, par exemple. Conclusion Cette spécification linéaire offre un moyen simple et intuitif de modéliser l’impact de divers attributs sur les choix individuels, crucial pour comprendre et prévoir les comportements de choix dans divers contextes.


Formats de Données : Long vs Large

Introduction

Nous sommes maintenant prêts à travailler avec un exemple pratique. Bien que brièvement mentionné précédemment, il est utile de souligner que les tables de données pour l’analyse des choix discrets peuvent prendre deux formes : longue ou large.

Format Large

Dans un cadre de données en format large, chaque ligne représente un décideur, et les informations sur les alternatives sont dispersées : le même attribut peut apparaître dans plusieurs colonnes, une pour chaque alternative pour laquelle l’attribut a été mesuré.


Illustration avec un Exemple Concret

Format Long

Dans un cadre de données en format long, chaque ligne représente une alternative : les attributs apparaissent seulement dans une colonne, mais le décideur sera répété sur plusieurs lignes, une fois pour chaque alternative parmi lesquelles il pourrait choisir.

Exemple des Modes de Transport

Pour illustrer la différence, nous utiliserons un ensemble de données sur les modes de transport utilisés par les étudiants pour se rendre à l’Université McMaster au Canada. Cet ensemble de données est en format large. Nous pouvons le voir en affichant les premières lignes du cadre de données, en sélectionnant les colonnes avec l’ID des répondants, leur choix, et toutes les variables qui commencent par “time”, puis en filtrant une sélection de lignes par ID de décideur.

Ensemble de Données mc_commute_wide: Introduction

  • Origine : Enquête de mobilité, automne 2010.
  • Sujet : Modes de transport des étudiants à l’Université McMaster, Hamilton, Canada.
  • But : Examiner les choix de transport, les options disponibles, et les caractéristiques des trajets et répondants.

Structure de l’Ensemble de Données

  • Format : Large, chaque ligne représente un individu.
  • Nombre de Variables : 74, incluant des informations sur les choix et les caractéristiques des trajets et des individus.

Modes de Transport

  • choice: Mode de transport choisi (Cycle, Walk, HSR (bus local), Car).
  • available.*: Disponibilité de chaque mode (Yes/No).
  • time.*: Temps de trajet pour chaque mode (en minutes).

Temps d’Accès et d’Attente

  • access.*: Temps d’accès à chaque mode de transport.
  • wait.*: Temps d’attente à chaque mode de transport.

Caractéristiques des Répondants

  • Informations démographiques telles que gender, age.
  • Variables sur le mode de vie et le logement des étudiants, par exemple shared, family, child.

Préférences et Perceptions

  • Mesure des préférences par rapport au confort des véhicules, au plaisir du trajet, et à la qualité des infrastructures de transport.
  • Variables incluant PersonalVehComf_*, Fun_*, ActiveNeigh_*, UsefulTrans_*, etc.

example_wide <- mc_commute_wide %>%
# Select columns from the table
select(id, choice, starts_with("time")) %>%
# Filter three decision-makers by their `id`
# Here the symbol `|` is for "or", so this reads
# filter rows with id == 566910139 OR id == 566873140 OR id == 566872636
filter(id == 566910139 |
id == 566873140 | id == 566872636)

Interprétation des Données Manquantes

Dans cette table en format large, la variable de temps (pour le temps de trajet) apparaît dans quatre colonnes. On remarque que cette variable n’a pas été mesurée pour chaque alternative : cela est dû au fait que certains utilisateurs n’avaient pas de vélo ou de voiture ; pour d’autres, l’école pouvait être trop éloignée pour aller à pied. Lorsque des attributs sont manquants, cela est interprété comme une situation où l’alternative n’était pas disponible pour le décideur.


Exemples de Disponibilité des Alternatives

  • Le décideur avec l’ID “566872636” n’avait que deux alternatives disponibles : marcher et HSR (transport public).
  • Le décideur avec l’ID “566873140” avait trois alternatives disponibles (marcher, HSR, voiture).
  • Le décideur avec l’ID “566910139” avait le choix complet de quatre alternatives.

Ces exemples illustrent comment les données reflètent la disponibilité des options de transport pour chaque décideur, et comment l’absence de données pour une alternative spécifique indique que cette option n’était pas disponible.


Transformation de Table Large en Table Longue

La transformation d’une table de données de format large à format long permet une meilleure manipulation et analyse dans certains types d’analyses statistiques, notamment l’analyse des choix discrets.

Utilisation de pivot_longer()

example_wide %>%
  pivot_longer(
    cols = starts_with("time."),
    names_prefix = "time.",
    names_to = "alternative",
    values_to = "time"
  )
# A tibble: 12 × 4
          id choice alternative  time
       <dbl> <fct>  <chr>       <dbl>
 1 566872636 HSR    Cycle       NA   
 2 566872636 HSR    Walk        21.3 
 3 566872636 HSR    HSR          5   
 4 566872636 HSR    Car         NA   
 5 566873140 HSR    Cycle       NA   
 6 566873140 HSR    Walk        12.8 
 7 566873140 HSR    HSR         10   
 8 566873140 HSR    Car          2   
 9 566910139 Walk   Cycle        4.37
10 566910139 Walk   Walk        15   
11 566910139 Walk   HSR         20   
12 566910139 Walk   Car          5   

Observation après Transformation

Après avoir utilisé pivot_longer() pour transformer la table, notez comment :

  • Le même identifiant (ID du décideur) est répété sur quatre lignes, reflétant chaque mode de transport envisagé par le décideur.
  • La variable time, qui indique le temps de trajet, est maintenant consolidée dans une seule colonne.

Cette structure facilite l’analyse des données en alignant tous les temps de trajet dans une colonne unique, permettant ainsi des comparaisons directes et une manipulation plus simple des données liées à chaque décideur et chaque mode de transport.


Avantages du Format Long

  • Clarté : Chaque ligne représente désormais une option de transport spécifique pour un décideur, rendant les comparaisons entre options directes et intuitives.
  • Simplicité : Les opérations telles que le filtrage, la sélection, et l’agrégation deviennent plus simples et plus puissantes, car elles peuvent être appliquées directement sur des données structurées de manière cohérente.
  • Flexibilité : Cette forme est particulièrement utile pour l’analyse statistique et la modélisation, où chaque observation (ligne) peut être traitée de manière indépendante.

Préparation des Données pour {mlogit}

Pour utiliser le package {mlogit} pour la modélisation logit multinomiale, nous convertissons les données du format large au format long. {mlogit} nécessite que les données soient en format long, car il est conçu pour analyser les choix discrets où chaque observation représente une option de choix pour un individu.

  • Variables Varying : Dans notre cas, les variables qui varient par alternative et nécessitent une transformation sont : le temps de voyage (time), le temps d’accès (access - le temps nécessaire pour atteindre un arrêt de bus HSR), le temps d’attente (wait - temps d’attente pour le bus HSR), et le nombre de transferts (transfer - spécifique au HSR).

  • Remarque : Les variables access, wait, et transfer sont spécifiques au mode HSR (bus local) et sont mises à zéro pour les autres modes de transport (“Car”, “Cycle”, “Walk”), car elles ne s’appliquent pas.

Cette étape de conversion est cruciale pour aligner l’ensemble de données avec les exigences de {mlogit} et permet une analyse précise des préférences de transport des décideurs.


library(mlogit)
Loading required package: dfidx

Attaching package: 'dfidx'
The following object is masked from 'package:stats':

    filter
example_long <- mc_commute_wide %>%
# Filter three decision-makers by their `id`
# Here the symbol `|` is for "or", so this reads
# filter rows with id == 566910139 OR id == 566873140 OR id == 566872636
filter(id == 566910139 |
id == 566873140 | id == 566872636) %>%
mlogit.data(shape="wide",
# Name of column with the choices 
choice = "choice", 
# Numbers of columns with attributes that vary by alternative
varying = 3:22)

Data Frame Indexé dans {mlogit}

Le résultat de la conversion des données pour l’usage avec {mlogit} est un data frame indexé, qui se compose de deux parties :

  1. Table Principale : Contient les données principales où chaque ligne représente une alternative de choix plutôt qu’un individu.
  2. Table d’Index : Un complément à la table principale qui aide à indexer les observations.

Structure de la Table Principale

Dans la table principale obtenue après transformation :

  • Chaque ligne représente une situation de choix (ou une alternative) disponible pour un décideur.
  • Cela diffère du format large où chaque ligne représentait un individu avec toutes ses alternatives.

Examiner les Données Transformées

Pour observer comment les données sont structurées dans la table principale :

data.frame(example_long) %>%
  select(id, choice, alt, starts_with("time"), idx)
          id choice   alt      time    idx
1  566872636  FALSE   Car        NA  1:Car
2  566872636  FALSE Cycle        NA 1:ycle
3  566872636   TRUE   HSR  5.000000  1:HSR
4  566872636  FALSE  Walk 21.314387 1:Walk
5  566873140  FALSE   Car  2.000000  2:Car
6  566873140  FALSE Cycle        NA 2:ycle
7  566873140   TRUE   HSR 10.000000  2:HSR
8  566873140  FALSE  Walk 12.788632 2:Walk
9  566910139  FALSE   Car  5.000000  3:Car
10 566910139  FALSE Cycle  4.371118 3:ycle
11 566910139  FALSE   HSR 20.000000  3:HSR
12 566910139   TRUE  Walk 15.000000 3:Walk

Structure des Données et Choix des Alternatives

Dans notre analyse, chaque ligne représente une alternative de choix pour un individu donné, avec quatre alternatives disponibles par décideur. En examinant les colonnes choice et alt, nous identifions le choix de chaque individu :

  • choice indique si l’alternative a été choisie.
  • alt identifie l’alternative spécifique.

Par exemple, l’individu avec l’ID “566872636” a choisi l’alternative HSR, tandis que “566910139” a choisi de marcher.


L’Indexation et la Table d’Index

Notre ensemble de données inclut une colonne d’index (idx) qui renvoie à une table d’index spécifique. Cette table d’index est essentielle pour notre analyse, car elle contient deux informations clés pour chaque observation :

  • L’identifiant de l’individu.
  • L’alternative choisie.
# Pour voir la structure de la table d'index :
# print(data.frame(mc_commute_long$idx))

Introduction au Modèle de Choix

Le premier pas vers le développement d’un modèle de choix est de spécifier les fonctions d’utilité désirées. Le package mlogit s’appuie sur Formula pour créer ces fonctions, permettant la construction de formules multi-composantes.


Fonctions d’Utilité avec mlogit et Formula

Les fonctions d’utilité dans mlogit peuvent avoir de multiples composants, tirant parti de la flexibilité offerte par Formula :

  • Alternative-specific vars with generic coefficients
  • Individual-specific vars
  • Alternative-specific vars with specific coefficients

Structure des Formules dans mlogit

Les formules pour mlogit sont définies en trois parties :

  1. Variables spécifiques à l’alternative avec coefficients génériques : choice ∼ alternative-specific vars with generic coefficients
  2. Variables spécifiques à l’individu : individual-specific vars
  3. Variables spécifiques à l’alternative avec coefficients spécifiques : alternative-specific vars with specific coefficients

Identification des Variables pour l’Analyse

Pour déterminer quelles variables sont disponibles pour l’analyse dans notre ensemble de données, nous pouvons lister les noms des colonnes :

colnames(example_long)
 [1] "id"                        "choice"                   
 [3] "parking"                   "vehind"                   
 [5] "gender"                    "age"                      
 [7] "shared"                    "family"                   
 [9] "child"                     "street_density"           
[11] "sidewalk_density"          "LAT"                      
[13] "LONG"                      "PersonalVehComf_SD"       
[15] "PersonalVehComf_D"         "PersonalVehComf_A"        
[17] "PersonalVehComf_SA"        "Fun_SD"                   
[19] "Fun_D"                     "Fun_A"                    
[21] "Fun_SA"                    "ActiveNeigh_SD"           
[23] "ActiveNeigh_D"             "ActiveNeigh_A"            
[25] "ActiveNeigh_SA"            "UsefulTrans_SD"           
[27] "UsefulTrans_D"             "UsefulTrans_A"            
[29] "UsefulTrans_SA"            "BusComf_SD"               
[31] "BusComf_D"                 "BusComf_A"                
[33] "BusComf_SA"                "TravelAlone_SD"           
[35] "TravelAlone_D"             "TravelAlone_A"            
[37] "TravelAlone_SA"            "Shelters_SD"              
[39] "Shelters_D"                "Shelters_A"               
[41] "Shelters_SA"               "Community_SD"             
[43] "Community_D"               "Community_A"              
[45] "Community_SA"              "personal_veh_comfortable" 
[47] "getting_there_fun"         "like_active_neighborhood" 
[49] "commute_useful_transition" "buses_comfortable"        
[51] "prefer_travel_alone"       "shelter_good_quality"     
[53] "sense_community"           "numna"                    
[55] "alt"                       "available"                
[57] "time"                      "access"                   
[59] "wait"                      "transfer"                 
[61] "chid"                      "idx"                      

Définition de Fonctions d’Utilité Simples

Nous commençons par définir une formule très simple qui considère uniquement le temps de trajet. Cette approche nous permet d’introduire les concepts de base des fonctions d’utilité dans le contexte des modèles de choix.


Utilisation de mFormula

La fonction mFormula() permet de définir des formules à plusieurs parties de la forme y ~ x | z | w. Dans notre contexte, cela se traduit par :

  • choice ~ alternative vars. with generic coefficients
  • individual vars. with specific coefficients
  • alternative vars. with specific coefficients

Pour cet exemple, nous nous concentrons sur le temps de trajet (time) comme variable principale.


Exemple Pratique avec mFormula

Considérons le temps de trajet comme la seule variable influençant le choix de transport. Nous définissons notre formule comme suit :

f1 <- mFormula(choice ~ time)

Exploration de la Formule avec model.matrix

La fonction model.matrix nous permet d’examiner comment la formule est appliquée aux données. En convertissant la matrice de modèle en data.frame, nous pouvons ensuite afficher les premières lignes pour un aperçu rapide :

# Assumant que f1 contient notre formule et example_long nos données
f1%>%model.matrix(data = example_long)
  (Intercept):Cycle (Intercept):HSR (Intercept):Walk      time
1                 0               1                0  5.000000
2                 0               0                1 21.314387
3                 0               0                0  2.000000
4                 0               1                0 10.000000
5                 0               0                1 12.788632
6                 0               0                0  5.000000
7                 1               0                0  4.371118
8                 0               1                0 20.000000
9                 0               0                1 15.000000

Fonctions d’Utilité pour le Preneur de Décision

Rappelez-vous que le premier décideur de ce sous-ensemble de la table n’avait que deux alternatives dans son ensemble de choix : HSR et marche. Par conséquent, les deux premières lignes correspondent à eux. La matrice de modèle n’inclut pas d’alternatives qui ne font pas partie de l’ensemble de choix. De plus, nous voyons que la formule inclut par défaut les coefficients spécifiques à l’alternative. Les fonctions d’utilité de ce décideur peuvent s’écrire comme suit :

\[ \begin{aligned} V_{\text{HSR}} &= 0 + \mu_{\text{HSR}} + 0 + \beta_{1} \text{time}_{\text{HSR}} \\ V_{\text{walk}} &= 0 + 0+ \mu_{\text{walk}} + \beta_{1} \text{time}_{\text{walk}} \end{aligned} \]

\(\beta_{1}\) est le coefficient générique pour le temps de voyage.


Spécification d’une Formule avec Variable Spécifique à l’Individu

Définissons maintenant une formule qui intègre une variable spécifique à l’individu, comme la densité des trottoirs au lieu de résidence, et appelons-la f2.

# La fonction `mFormula()` est utilisée pour définir des formules multi-parties.
# Dans cette formule, `time` est l'une des variables x et `sidewalk_density` est l'une des variables z.
f2 <- mFormula(choice ~ time | sidewalk_density)

Construisons la matrice de modèle avec l’ensemble de données example_long

f2 %>% model.matrix(data = example_long)
  (Intercept):Cycle (Intercept):HSR (Intercept):Walk      time
1                 0               1                0  5.000000
2                 0               0                1 21.314387
3                 0               0                0  2.000000
4                 0               1                0 10.000000
5                 0               0                1 12.788632
6                 0               0                0  5.000000
7                 1               0                0  4.371118
8                 0               1                0 20.000000
9                 0               0                1 15.000000
  sidewalk_density:Cycle sidewalk_density:HSR sidewalk_density:Walk
1                0.00000             22.63322               0.00000
2                0.00000              0.00000              22.63322
3                0.00000              0.00000               0.00000
4                0.00000             39.64003               0.00000
5                0.00000              0.00000              39.64003
6                0.00000              0.00000               0.00000
7               26.06793              0.00000               0.00000
8                0.00000             26.06793               0.00000
9                0.00000              0.00000              26.06793

Fonctions d’Utilité Incluant la Densité des Trottoirs

Définissons un modèle plus complexe qui prend en compte la densité des trottoirs au lieu de résidence de l’individu. Les fonctions d’utilité avec des coefficients spécifiques pour cette variable sont exprimées comme suit :

\[ \begin{aligned} V_{n,\text{car}} &= 0+0+0 + \beta_1 \text{temps}_{n,\text{car}} + 0 +0+0 \\ V_{n,\text{vélo}} &= \mu_{\text{cycle}}+0+0 + \beta_1 \text{time}_{n,\text{cycle}} + \gamma_1 \text{swd}_{n} +0+0\\ V_{n,\text{HSR}} &= 0 + \mu_{\text{HSR}} + \beta_1 \text{time}_{n,\text{HSR}} + 0 + \gamma_2 \text{swd}_{n}+0 \\ \end{aligned} V_{n,\text{marche}} &= 0 +0+ \mu_{\text{walk}}+ \beta_1 \text{time}_{n,\text{walk}} + 0+0+\gamma_3 \text{swd}_{n} \]

\(\beta_1\) représente le coefficient générique pour le temps de trajet et \(\gamma_1\), \(\gamma_2\), \(\gamma_3\) sont des coefficients spécifiques à l’individu pour la densité des trottoirs.


Formule avec Coefficients Spécifiques à l’Alternative

Ici, nous testons une formule différente où le temps possède des coefficients spécifiques à chaque alternative plutôt que des coefficients génériques, et nous nommons cette formule f3.

# Nous indiquons explicitement qu'il n'y a pas de variables spécifiques à l'alternative avec des coefficients génériques en utilisant '0'.
f3 <- mFormula(choice ~ 0 | sidewalk_density | time)

Construction de la matrice de modèle avec l’ensemble de données example_long

f3%>%model.matrix( data = example_long)
  (Intercept):Cycle (Intercept):HSR (Intercept):Walk sidewalk_density:Cycle
1                 0               1                0                0.00000
2                 0               0                1                0.00000
3                 0               0                0                0.00000
4                 0               1                0                0.00000
5                 0               0                1                0.00000
6                 0               0                0                0.00000
7                 1               0                0               26.06793
8                 0               1                0                0.00000
9                 0               0                1                0.00000
  sidewalk_density:HSR sidewalk_density:Walk time:Car time:Cycle time:HSR
1             22.63322               0.00000        0   0.000000        5
2              0.00000              22.63322        0   0.000000        0
3              0.00000               0.00000        2   0.000000        0
4             39.64003               0.00000        0   0.000000       10
5              0.00000              39.64003        0   0.000000        0
6              0.00000               0.00000        5   0.000000        0
7              0.00000               0.00000        0   4.371118        0
8             26.06793               0.00000        0   0.000000       20
9              0.00000              26.06793        0   0.000000        0
  time:Walk
1   0.00000
2  21.31439
3   0.00000
4   0.00000
5  12.78863
6   0.00000
7   0.00000
8   0.00000
9  15.00000

Passage sur l’Estimation

Nous allons omettre la section détaillée sur la méthode d’estimation par le maximum de vraisemblance, utilisée pour obtenir les coefficients des fonctions d’utilité.

  • Processus d’Estimation : Utilise un échantillon statistique pour dériver des coefficients qui maximisent la probabilité d’observer les données que nous avons.
  • Critère Optimal : La vraisemblance est un critère courant pour l’estimation dans les modèles de choix discrets, assurant les meilleurs coefficients possibles pour notre modèle compte tenu des données.

Nous poursuivrons directement avec l’application des formules et des matrices de modèle précédemment définies.

References

Ben-Akiva, Moshe E, and Steven R Lerman. 1985. Discrete Choice Analysis: Theory and Application to Travel Demand. Vol. 9. MIT press.
Páez, Antonio, and Geneviève Boisjoly. 2022. Discrete Choice Analysis with r. Use r! Springer International Publishing: Springer.