Etude des choix de marque dans un contexte de données de panel-Modèle MLOGIT : Cas des données YOGURT

Author

Linda AIT ELHADJ et Oumou Salamata BARRY


Introduction

Le jeu de données “Yogurt” du package Ecdat est une collection de données utilisée pour l’analyse économétrique, portant sur le choix de marque de yaourts aux États-Unis. Il s’agit d’une étude transversale comprenant 2412 observations individuelles. Chaque observation contient plusieurs variables, notamment :

  • id : identifiant de l’individu
  • choice : choix de la marque de yaourt (yoplait, dannon, hiland, weight watcher)
  • feat.z : présence d’une publicité dans les journaux pour la marque z
  • price.z : prix de la marque z

Ces données ont été initialement analysées dans l’étude de Jain, Vilcassim et Chintagunta en 1994, qui appliquait un modèle logit à coefficients aléatoires pour étudier les choix de marque dans un contexte de données de panel​ (R Package Documentation)​​ (RDocumentation)​​ (PMagunia)​.

Le jeu de données est particulièrement utile pour des analyses de marché et des modèles de choix discrets, permettant d’examiner comment les variables comme le prix et les publicités influencent les décisions des consommateurs.

Chargement des données

Code
# Charge le jeu de données "Yogurt" depuis le package "Ecdat"
data("Yogurt",package = "Ecdat")

# Sélectionne les 20 premières lignes du jeu de données "Yogurt"
premiere_ligne<- head(Yogurt,20)

kable(premiere_ligne, align = "c", font_size = 11)%>%
kable_styling(full_width = FALSE, position = "center") %>%
  add_header_above(c("DATA Yogurt : 20 premières lignes" = 10))%>% # Ajoute un en-tête au-dessus du tableau
  row_spec(0, bold = TRUE )%>% #  la première ligne du tableau doit être en gras
scroll_box(width = "100%", height = "200px") # Crée une boîte de défilement autour du tableau
DATA Yogurt : 20 premières lignes
id feat.yoplait feat.dannon feat.hiland feat.weight price.yoplait price.dannon price.hiland price.weight choice
1 0 0 0 0 10.8 8.1 6.1 7.9 weight
1 0 0 0 0 10.8 9.8 6.4 7.5 dannon
1 0 0 0 0 10.8 9.8 6.1 8.6 dannon
1 0 0 0 0 10.8 9.8 6.1 8.6 dannon
1 0 0 0 0 12.5 9.8 4.9 7.9 dannon
1 0 0 0 0 10.8 9.2 5.0 7.9 dannon
1 0 0 0 0 10.3 8.1 4.9 7.9 dannon
1 0 0 0 0 10.8 8.6 5.4 7.9 weight
2 0 0 0 0 10.8 9.8 5.0 7.9 yoplait
2 0 0 0 0 10.8 9.8 5.0 7.9 yoplait
2 0 0 0 0 10.8 9.8 5.0 7.9 yoplait
2 0 0 0 0 10.8 9.8 5.0 7.9 yoplait
2 0 0 0 0 10.8 8.1 5.0 8.6 weight
2 0 0 0 0 10.8 8.1 5.0 8.6 weight
2 0 0 0 0 10.8 8.1 5.0 7.9 weight
2 0 0 0 0 10.8 8.1 5.0 7.9 weight
2 0 0 0 0 10.8 8.1 5.0 7.9 weight
2 0 0 0 0 10.8 8.1 5.0 7.9 weight
2 0 0 0 0 10.8 8.1 5.0 7.9 weight
2 0 0 0 0 10.8 8.1 5.0 8.1 weight

‘EXPLORATION DES DONNEES’

Code
# Capturer les informations de structure dans une chaîne de caractères
str_info <- capture.output(str(Yogurt)) # capture.output recupère les données en sortie de str pour les mettre dans str_info

# Créer un tableau kable avec les informations de structure
kable(data.frame(Structure = str_info), align = "l", caption = "Structure des données Yogurt")
Structure des données Yogurt
Structure
‘data.frame’: 2412 obs. of 10 variables:
$ id : num 1 1 1 1 1 1 1 1 2 2 …
$ feat.yoplait : num 0 0 0 0 0 0 0 0 0 0 …
$ feat.dannon : num 0 0 0 0 0 0 0 0 0 0 …
$ feat.hiland : num 0 0 0 0 0 0 0 0 0 0 …
$ feat.weight : num 0 0 0 0 0 0 0 0 0 0 …
$ price.yoplait: num 10.8 10.8 10.8 10.8 12.5 10.8 10.3 10.8 10.8 10.8 …
$ price.dannon : num 8.1 9.8 9.8 9.8 9.8 …
$ price.hiland : num 6.1 6.4 6.1 6.1 4.9 …
$ price.weight : num 7.9 7.5 8.6 8.6 7.9 …
$ choice : Factor w/ 4 levels “yoplait”,“dannon”,..: 4 2 2 2 2 2 2 4 1 1 …

PREPARATION DES DONNEES: MODELE MLOGIT

Transformation des données en format long afin d’utiliser le modèle MLOGIT.

Code
# Convertir les données au format mlogit
mlogit_yogurt <- mlogit.data(data = Yogurt, choice = "choice", shape = "long", varying = 2:9)


# Renommer la troisième colonne en "Brand"
names(mlogit_yogurt)[3]=c("Brand")

head(mlogit_yogurt)
~~~~~~~
 first 10 observations out of 9648 
~~~~~~~
   id choice   Brand feat price chid    idx
1   1  FALSE  dannon    0   8.1    1 1:nnon
2   1  FALSE  hiland    0   6.1    1 1:land
3   1   TRUE  weight    0   7.9    1 1:ight
4   1  FALSE yoplait    0  10.8    1 1:lait
5   1   TRUE  dannon    0   9.8    2 2:nnon
6   1  FALSE  hiland    0   6.4    2 2:land
7   1  FALSE  weight    0   7.5    2 2:ight
8   1  FALSE yoplait    0  10.8    2 2:lait
9   1   TRUE  dannon    0   9.8    3 3:nnon
10  1  FALSE  hiland    0   6.1    3 3:land

~~~ indexes ~~~~
   chid     alt
1     1  dannon
2     1  hiland
3     1  weight
4     1 yoplait
5     2  dannon
6     2  hiland
7     2  weight
8     2 yoplait
9     3  dannon
10    3  hiland
indexes:  1, 2 

MARKET SHARE

En examinant la donnée ‘Market share’ (part de marché) de chaque marque nous pourrons évaluer la popularité de celle-ci et les préférences des consommateurs au sein de notre échantillon.

Repartition des choix et représentation graphique

Code
# Création de la table de fréquences
Market_share <- table(Yogurt$choice)



# Affichage du tableau avec kable
kable(Market_share,col.names = c("Brand", "Effectif"), caption = "Table des effectifs des choix de yaourt")
Table des effectifs des choix de yaourt
Brand Effectif
yoplait 818
dannon 970
hiland 71
weight 553

Il ressort de cette analyse que la marque Dannon occupe la part de marché la plus importante observée dans cet échantillon.

Code
ggplot(Yogurt, aes(x = "", fill = choice)) +
  geom_bar(width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(round(after_stat(count)/sum(after_stat(count)) * 100), "%")), stat = "count", position = position_stack(vjust = 0.5)) +
  labs(fill = "Choice", title = "Proportion des choix de yogurt") +
  theme_void() +
  theme(legend.position = "right") 

Moyenne et ecart-type Market Share

On observe dans le tableau ci-dessous que Dannon a la part de marché moyenne la plus élevée parmi les quatre marques avec environ 40%.Cela suggère qu’il y a une preference pour le choix de cette marque par rapport aux autres, elle est la plus fréquemment choisie mais son écart-type de 0,4904 est relativement élevé ce qui indique qu’il y a une dispersion importante dans le choix des consommateurs pour cette marque.

Tandis que Hiland a la moyenne de part de marché la plus basse d’environ 2,9%.Cette marque est beaucoup moins populaire parmi les autres marques.Son écart-type de 0.1691 est le plus bas parmi les quatre marques. Bien que peu de consommateurs choisissent Hiland, ceux qui le font ont des opinions plus homogènes sur cette marque.

Code
ms_tab=summarise( group_by(mlogit_yogurt,Brand), mean= round(mean(choice), 5), sd = round(sd(choice), 5)) 

kable(ms_tab, caption = "Yogurt data Market Share", align = "c") %>%
                        kable_styling(full_width = FALSE) %>%
                        row_spec(0, bold = TRUE)  # Rendre la première ligne en gras
Yogurt data Market Share
Brand mean sd
dannon 0.40216 0.49043
hiland 0.02944 0.16906
weight 0.22927 0.42045
yoplait 0.33914 0.47351

FEATURE

La variable ‘feature’ enregistre la présence de publicités pour chaque marque de yaourt. Cette information nous permet d’explorer l’impact potentiel de la publicité sur les choix des consommateurs et sur les parts de marché des différentes marques.

Repartition des publicités

Code
# Calculer les proportions pour chaque colonne
proportions <- colSums(Yogurt[, c("feat.yoplait", "feat.dannon", "feat.hiland", "feat.weight")])


kable(proportions, col.names = c("Brand", "Effectif"),caption= "Table des effectifs des feat")
Table des effectifs des feat
Brand Effectif
feat.yoplait 135
feat.dannon 91
feat.hiland 89
feat.weight 91

Représentation graphique

Il ressort de cette analyse que la marque Yoplait a bénéficier de plus de publicité que les autres marques mais également que la marque Hiland a fait plus de publicité (89) qu’il n’y ait eu de choix pour cette marque par les consommateurs(71).

Code
# Création des données
marques <- c("yoplait", "dannon", "hiland", "weight")
effectifs_marques <- c(818, 970, 71, 553)
effectifs_feat <- c(135, 91, 89, 91)

# Création d'un dataframe
df <- data.frame(
  Marque = marques,
  Effectif_Marque = effectifs_marques,
  Effectif_Feat = effectifs_feat
)

# Calcul des parts de marché et des proportions des features
total_observations <- 2412
df <- df %>%
  mutate(Part_Marque = Effectif_Marque / total_observations * 100,
         Proportion_Feat = Effectif_Feat / total_observations * 100)

# Transformation des données pour ggplot
df_long <- df %>%
  select(Marque, Part_Marque, Proportion_Feat) %>%
  pivot_longer(cols = c(Part_Marque, Proportion_Feat), names_to = "Type", values_to = "Valeur") %>%
  mutate(Type = recode(Type, Part_Marque = "Part de Marché", Proportion_Feat = "Proportion des Features"))

# Graphique à barres 
ggplot(df_long, aes(x = Marque, y = Valeur, fill = Type)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Part de marché des marques et proportion des features",
       x = "Marque",
       y = "Pourcentage (%)") +
  scale_fill_manual(values = c("Part de Marché" = "blue", "Proportion des Features" = "red")) +
  theme_minimal()

Moyenne et ecart-type feature

Les moyennes et écarts-types des features (publicités) pour chaque marque de yaourt nous fournissent des indications sur la fréquence et la variabilité de la publicité associée à chaque marque . Ces mesures nous aident à comprendre le niveau d’exposition des consommateurs à la publicité pour chaque marque, ce qui peut influencer leurs décisions d’achat et, par conséquent, les parts de marché des différentes marques.

On observe dans le tableau ci-dessous que la marque Yoplait a une exposition publicitaire plus élevée que les autres marques, tandis que Dannon, Hiland et Weight présentent des niveaux de publicité similaires mais plus faibles. Malgré celà la marque Dannon a été la plus choisi.

Hiland semble investir dans la publicité mais ces efforts ne se traduisent pas encore par une augmentation significative des choix des consommateurs. Son écart type est relativement faible (0.18855) ce qui montre que les consommateurs ont une perception assez homogène de la publicité de Hiland, bien que cette perception soit globalement neutre ou négative.

Code
# Calculer les moyennes et les écarts types pour chaque marque
All_Features <- mlogit_yogurt %>%
  group_by(Brand) %>%
  summarise(mean = round(mean(feat), 5), sd = round(sd(feat), 5))

# Ajouter une colonne "Variable" pour la première ligne seulement
All_Features <- All_Features %>%
  mutate(Variable = if_else(row_number() == 1, "Feature", "")) %>%
  select(Variable, everything())

# Créer le tableau avec kable et appliquer les styles avec kableExtra
kable(All_Features, caption = "Table : Yogurt data Feature", align = "c") %>%
  kable_styling(full_width = FALSE)
Table : Yogurt data Feature
Variable Brand mean sd
Feature dannon 0.03773 0.19058
hiland 0.03690 0.18855
weight 0.03773 0.19058
yoplait 0.05597 0.22991

PRICE

La variable “Price” représente les prix des différents produits de yaourt. Son analyse nous éclaire sur les écarts de prix entre les marques, un aspect crucial dans les choix des consommateurs et dans la dynamique concurrentielle du marché des yaourts.

Tableau de statistiques Price

Code
# Résumé des prix pour chaque marque de yaourt
summary_dannon <- summary(Yogurt$price.dannon)
summary_hiland <- summary(Yogurt$price.hiland)
summary_weight <- summary(Yogurt$price.weight)
summary_yoplait <- summary(Yogurt$price.yoplait)

# Création d'un tableau
summary_table <- data.frame(
  Marque = c("Dannon", "Hiland", "Weight", "Yoplait"),
  Min = c(summary_dannon["Min."], summary_hiland["Min."], summary_weight["Min."], summary_yoplait["Min."]),
  Q1 = c(summary_dannon["1st Qu."], summary_hiland["1st Qu."], summary_weight["1st Qu."], summary_yoplait["1st Qu."]),
  Median = c(summary_dannon["Median"], summary_hiland["Median"], summary_weight["Median"], summary_yoplait["Median"]),
  Mean = c(summary_dannon["Mean"], summary_hiland["Mean"], summary_weight["Mean"], summary_yoplait["Mean"]),
  Q3 = c(summary_dannon["3rd Qu."], summary_hiland["3rd Qu."], summary_weight["3rd Qu."], summary_yoplait["3rd Qu."]),
  Max = c(summary_dannon["Max."], summary_hiland["Max."], summary_weight["Max."], summary_yoplait["Max."])
)

# Affichage du tableau
kable(summary_table)
Marque Min Q1 Median Mean Q3 Max
Dannon 1.9 8.1 8.6 8.163474 8.6 11.1
Hiland 2.5 5.0 5.4 5.362935 6.1 8.6
Weight 0.4 7.9 7.9 7.949088 8.6 10.4
Yoplait 0.3 10.3 10.8 10.682131 11.5 19.3

Représentation graphique

une visualisation sous forme de boîte à moustaches (boxplot) offre une perspective visuelle sur la distribution des prix. Cette représentation graphique permet de mieux comprendre la variabilité des prix pour chaque marque, mettant en évidence les tendances centrales et les valeurs aberrantes éventuelles.

Code
# Création de la boîte à moustaches avec des modifications de style
ggplot(mlogit_yogurt, aes(x = Brand, y = price, fill = Brand)) +
  geom_boxplot() +
  labs(title = "Distribution des prix par marque de yaourt",
       x = "Marque",
       y = "Prix") +
  theme(
    text = element_text(size = 12),  # Modifier la taille du texte
    plot.title = element_text(size = 16, face = "bold"),  # Modifier la taille et le style du titre
    axis.title = element_text(size = 14, face = "bold"),  # Modifier la taille et le style des étiquettes d'axe
    legend.title = element_blank(),  # Masquer le titre de la légende
    legend.text = element_text(size = 12)  # Modifier la taille du texte de la légende
  ) +
  scale_fill_manual(values = c("dannon" = "blue", "hiland" = "green", "weight" = "purple", "yoplait" = "red"))  # Personnaliser les couleurs des marques

Moyenne et ecart-type Price

L’analyse des prix révèle des stratégies distinctes parmi les marques de yaourt. Yoplait a le prix moyen le plus élevé (0.10682), ce qui signifie que, parmi les marques étudiées, Yoplait est généralement plus cher, elle se positionne clairement comme une marque haut de gamme, tandis que Hiland adopte une stratégie de prix bas (0.05363) . Dannon et Weight Watchers se situent dans une gamme intermédiaire, offrant un bon équilibre entre prix et qualité perçue.

Les écarts types des prix pour chaque marque sont relativement faibles, ce qui indique une uniformité des prix au sein de chaque marque. Cela montre une stratégie de prix cohérente et prévisible pour les consommateurs.

Code
# Calculer les moyennes et les écarts types pour chaque marque
Price_yoplait <- Yogurt %>%
  group_by(Brand = 'yoplait') %>%
  summarise(
    Mean = round(mean(price.yoplait) / 100, 5),  # Diviser chaque valeur par 100 et arrondir à 5 chiffres
    Std.Dev = round(sd(price.yoplait) / 100, 5)
  )

Price_dannon <- Yogurt %>%
  group_by(Brand = 'dannon') %>%
  summarise(
    Mean = round(mean(price.dannon) / 100, 5),
    Std.Dev = round(sd(price.dannon) / 100, 5)
  )

Price_weight <- Yogurt %>%
  group_by(Brand = 'weight') %>%
  summarise(
    Mean = round(mean(price.weight) / 100, 5),
    Std.Dev = round(sd(price.weight) / 100, 5)
  )

Price_hiland <- Yogurt %>%
  group_by(Brand = 'hiland') %>%
  summarise(
   Mean = round(mean(price.hiland) / 100, 5),
    Std.Dev = round(sd(price.hiland) / 100, 5)
  )



# Combinez les résultats pour chaque marque
All_Prices <- bind_rows(Price_yoplait, Price_dannon, Price_weight, Price_hiland)%>%
  ungroup() %>%
  mutate(Variable = if_else(row_number() == 1, "Price", "")) %>%
  select(Variable, everything())


# Créer le tableau avec kable et appliquer les styles avec kableExtra
kable(All_Prices, caption = "Yogurt data Price", align = "c") %>%
                        kable_styling(full_width = FALSE) %>%
                        row_spec(0, bold = TRUE)  # Rendre la première ligne en gras
Yogurt data Price
Variable Brand Mean Std.Dev
Price yoplait 0.10682 0.01906
dannon 0.08163 0.01063
weight 0.07949 0.00774
hiland 0.05363 0.00805

FUSIONS DES TABLEAUX MARKET SHARE, FEATURE, ET PRICE

Ci-dessous le tableau Yogurt data représente un récapitulatif des statistiques descriptives de l’ensemble de données Yogurt.

Code
# Créer les trois tables
ms_tab <- summarise(group_by(mlogit_yogurt, Brand), mean = mean(choice), sd = sd(choice))
feat_tab <- summarise(group_by(mlogit_yogurt, Brand), mean = mean(feat), sd = sd(feat))
price_tab <- summarise(group_by(mlogit_yogurt, Brand), mean = round(mean(price)/100, 5), sd = round(sd(price), 5))
 
# Fusionner les tables
combined_table <- bind_rows(ms_tab %>% mutate(Variable = "Market Share (proportion)"),
                            feat_tab %>% mutate(Variable = "Feature (proportion)"),
                            price_tab %>% mutate(Variable = "Price ($ per Oz)"))
 
# Réorganiser les colonnes
combined_table <- combined_table[, c("Variable", "Brand", "mean", "sd")]
 
# Remplacer les valeurs de "Variable" par des chaînes vides après la première occurrence
combined_table$Variable[duplicated(combined_table$Variable)] <- ""
 
# Afficher le tableau avec kable
kable(combined_table, caption = "Yogurt data", align = "c", digits = 5) %>%
  kable_styling(full_width = FALSE) %>%
  row_spec(0, bold = TRUE) 
Yogurt data
Variable Brand mean sd
Market Share (proportion) dannon 0.40216 0.49043
hiland 0.02944 0.16906
weight 0.22927 0.42045
yoplait 0.33914 0.47351
Feature (proportion) dannon 0.03773 0.19058
hiland 0.03690 0.18855
weight 0.03773 0.19058
yoplait 0.05597 0.22991
Price ($ per Oz) dannon 0.08163 1.06289
hiland 0.05363 0.80539
weight 0.07949 0.77350
yoplait 0.10682 1.90626

MODELE LOGIT MULTINOMIAL STANDARD (MNL)

Ce modèle est utilisé pour estimer les probabilités de choix de marques en utilisant l’ensemble de données sur le yaourt.

tableau

Code
# Estimer le modèle MNL
mnl_model <- mlogit(choice ~ price + feat , reflevel='hiland',mlogit_yogurt)


# Résumé des résultats
summary(mnl_model)

Call:
mlogit(formula = choice ~ price + feat, data = mlogit_yogurt, 
    reflevel = "hiland", method = "nr")

Frequencies of alternatives:choice
  hiland   dannon   weight  yoplait 
0.029436 0.402156 0.229270 0.339138 

nr method
6 iterations, 0h:0m:0s 
g'(-H)^-1g = 0.000763 
successive function values within tolerance limits 

Coefficients :
                     Estimate Std. Error  z-value  Pr(>|z|)    
(Intercept):dannon   3.715595   0.145419  25.5510 < 2.2e-16 ***
(Intercept):weight   3.074411   0.145384  21.1468 < 2.2e-16 ***
(Intercept):yoplait  4.450166   0.187118  23.7827 < 2.2e-16 ***
price               -0.366584   0.024366 -15.0449 < 2.2e-16 ***
feat                 0.491433   0.120063   4.0931 4.256e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log-Likelihood: -2656.9
McFadden R^2:  0.062142 
Likelihood ratio test : chisq = 352.09 (p.value = < 2.22e-16)
Code
# Utiliser stargazer pour produire un beau tableau
stargazer(mnl_model, type = "text", column.labels = c("MNL"), keep.stat = c("n", "ll", "aic", "bic"), single.row = TRUE)

===============================================
                        Dependent variable:    
                    ---------------------------
                              choice           
                                MNL            
-----------------------------------------------
(Intercept):dannon       3.716*** (0.145)      
(Intercept):weight       3.074*** (0.145)      
(Intercept):yoplait      4.450*** (0.187)      
price                    -0.367*** (0.024)     
feat                     0.491*** (0.120)      
-----------------------------------------------
Observations                   2,412           
Log Likelihood              -2,656.888         
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

Analysons ces coefficients :

(Intercept)

L’estimation de ce coefficient est de 3.715595, avec une erreur standard de 0.145419. Cela signifie que, toutes choses étant égales par ailleurs, la probabilité de choisir la marque Dannon plutôt que Hiland augmente de 3.715595 unités lorsque toutes les autres variables sont maintenues constantes.

(Intercept)

L’estimation de ce coefficient est de 3.074411, avec une erreur standard de 0.145384. Cela signifie que, toutes choses étant égales par ailleurs, la probabilité de choisir la marque Weight plutôt que Hiland augmente de 3.074411 unités lorsque toutes les autres variables sont maintenues constantes.

(Intercept)

L’estimation de ce coefficient est de 4.450166, avec une erreur standard de 0.187118. Cela signifie que, toutes choses étant égales par ailleurs, la probabilité de choisir la marque Yoplait plutôt que Hiland augmente de 4.450166 unités lorsque toutes les autres variables sont maintenues constantes.

price: L’estimation de ce coefficient est de -0.366584, avec une erreur standard de 0.024366. Cela signifie que, toutes choses étant égales par ailleurs, une augmentation du prix d’une unité est associée à une diminution de 0.366584 unités dans la log-odds de choisir la marque plutôt qu’Hiland.

feat: L’estimation de ce coefficient est de 0.491433, avec une erreur standard de 0.120063. Cela signifie que, toutes choses étant égales par ailleurs, la présence d’une publicité supplémentaire est associée à une augmentation de 0.491433 unités dans la log-odds de choisir la marque plutôt qu’Hiland.

En résumé, tous les coefficients sont statistiquement significatifs (avec des valeurs de p très faibles), ce qui indique que ces variables ont un effet significatif sur le choix des marques de yaourt.

Estimer le modèle MNL :Explication du code

mnl_model <- mlogit(choice ~ price + feat , reflevel=‘hiland’,mlogit_yogurt)

Dans le modèle que vous avez spécifié, vous estimez un modèle de choix discrets multinomial (MNL) en utilisant la fonction mlogit() du package mlogit. Voici ce que chaque partie de votre code signifie :

  • choice ~ price + feat: Cela spécifie le modèle MNL que vous estimez. “choice” est la variable réponse qui représente les choix discrets, tandis que “price” et “feat” sont les variables explicatives qui influencent le choix. Vous modélisez comment les prix et les caractéristiques des produits affectent les choix entre les alternatives.

  • reflevel='hiland': Cela indique que “hiland” est la référence pour la variable de choix. Cela signifie que les coefficients estimés pour les autres alternatives (par exemple, “dannon”, “weight”, “yoplait”) sont interprétés par rapport à “hiland”.

  • mlogit_yogurt: Cela spécifie que les données utilisées pour l’estimation du modèle sont contenues dans l’objet mlogit_yogurt.

En résumé, ce code estime un modèle MNL pour les choix discrets en utilisant les données contenues dans l’objet mlogit_yogurt, en spécifiant “hiland” comme la référence pour la variable de choix.

Conclusion

Notre modèle de régression multinomiale fournit des informations précieuses sur les facteurs qui influencent le choix des marques de yaourt par les consommateurs. Les résultats suggèrent que le prix et les publicités jouent un rôle important dans ce processus. Cette analyse pourrait être utilisée par les entreprises de yaourt pour ajuster leurs stratégies de tarification et de marketing afin de mieux répondre aux besoins et aux préférences des consommateurs. Cela conclut notre analyse des choix de marque de yaourt.

Code
library(glue)

reference <- glue(
  "Référence\n\n",
  "Generalized Reverse Discrete Choice Models.\n",
  "SANJOG MISRA.\n",
  "William E. Simon School of Business, University of Rochester, Rochester, NY 14627."
)

cat(reference)
Référence

Generalized Reverse Discrete Choice Models.
SANJOG MISRA.
William E. Simon School of Business, University of Rochester, Rochester, NY 14627.