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 offre une analyse économétrique sur le choix de marque de yaourts aux États-Unis. Cette collection comprend 2412 observations individuelles dans une étude transversale. Chaque observation comporte diverses variables telles que l’identifiant de l’individu et le choix de la marque de yaourt parmi plusieurs options telles que Yoplait, Dannon, Hiland et Weight Watcher. Ces données, initialement analysées par Jain, Vilcassim et Chintagunta en 1994, ont été étudiées à l’aide d’un modèle logit à coefficients aléatoires pour examiner les choix de marque dans un contexte de données de panel. Elles sont précieuses pour les analyses de marché et les modèles de choix discrets, permettant d’explorer comment des facteurs tels que le prix et la publicité influencent les décisions des consommateurs.
Chargement des données
Code
# Exécute le code R avec l'option de supprimer les messages d'avertissementdata("Yogurt", package ="Ecdat") # Charge le jeu de données "Yogurt" depuis le package "Ecdat"premiere_ligne <-head(Yogurt, 20) # Sélectionne les 20 premières lignes du jeu de données "Yogurt"kable(premiere_ligne, align ="c", font_size =11)%>%# Convertit les données en un tableau avec une mise en forme spécifiquekable_styling(full_width =FALSE, position ="center")%>%# Applique des styles au tableau pour le centrer sur la pageadd_header_above(c("DATA Yogurt : 20 premières lignes"=10))%>%# Ajoute un en-tête au-dessus du tableaurow_spec(0, bold =TRUE )%>%# Spécifie que la première ligne du tableau doit être en grasscroll_box(width ="100%", height ="200px") # Crée une boîte de défilement autour du tableau pour permettre le défilement
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 données
Code
# Capturer les informations de structure dans une chaîne de caractèresstr_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 structurekable(data.frame(Structure = str_info), align ="l", caption ="Structure des données Yogurt")%>%scroll_box(width ="100%", height ="200px")
Transformation des données en format long afin d’utiliser le modèle MLOGIT.
Code
# Transformer les données pour l'analyse mlogitmlogit_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")
Analyse des données pour chaque paramètre
Market share
Bien qu’il soit essentiel de comprendre les choix individuels des familles, une analyse plus approfondie du paysage concurrentiel peut être obtenue en examinant le ‘Market share’ (part de marché) de chaque marque. Cette mesure nous permet d’évaluer la performance relative des marques en termes de popularité et de préférences des consommateurs au sein de notre échantillon.
Repartition des choix
Code
# Création de la table de fréquencesMarket_share <-table(Yogurt$choice)# Affichage du tableau avec kablekable(Market_share, caption ="Table des effectifs des choix de yaourt")
Table des effectifs des choix de yaourt
Var1
Freq
yoplait
818
dannon
970
hiland
71
weight
553
Représentation graphique
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")
Il ressort de cette analyse que la marque Dannon occupe la part de marché la plus importante observée dans cet échantillon.
Moyenne et ecart-type Market Share
Les moyennes et écarts-types du ‘Market share’ fournissent des indicateurs clés sur la répartition et la variabilité des parts de marché des marques de yaourt. En les examinant, nous pouvons obtenir un aperçu rapide de la tendance générale et de la dispersion des préférences des consommateurs.
Code
ms_tab <-summarise( group_by(mlogit_yogurt,Brand), mean=mean(choice), sd=sd(choice) ) 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.4021559
0.4904348
hiland
0.0294362
0.1690607
weight
0.2292703
0.4204506
yoplait
0.3391376
0.4735148
On observe dans ce tableau que Dannon a la part de marché moyenne la plus élevée, tandis que Hiland a la plus petite part de marché moyenne. Les écarts-types indiquent la variabilité des parts de marché autour de la moyenne, avec Dannon et Yoplait montrant une plus grande variabilité que Weight Watcher et Hiland.
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 par marque
Code
# Calculer les proportions pour chaque colonneFeature <-colSums(Yogurt[, c("feat.yoplait", "feat.dannon", "feat.hiland", "feat.weight")])# Créer un data frame avec les noms des colonnesFeature_df <-data.frame(Feat = Feature)# Attribuer le nom 'Effectifs' à la colonnecolnames(Feature_df) <-c("Effectifs")# Afficher le tableau avec kablekable(Feature_df, caption ="Table des effectifs des feat")
Table des effectifs des feat
Effectifs
feat.yoplait
135
feat.dannon
91
feat.hiland
89
feat.weight
91
Représentation graphique
Code
# Calculer les proportions pour chaque colonneproportions <-colSums(Yogurt[, c("feat.yoplait", "feat.dannon", "feat.hiland", "feat.weight")])# Créer un dataframe pour le pie chart data_pie <-data.frame(Feature =names(proportions), Proportion = proportions)# Créer le pie chart avec les étiquettes, le titre et la légendeggplot(data_pie, aes(x ="", y = Proportion, fill = Feature)) +geom_bar(stat ="identity", width =1) +coord_polar("y", start =0) +geom_text(aes(label =paste0(round(Proportion /sum(Proportion) *100, 1), "%")), position =position_stack(vjust =0.5)) +labs(title ="Proportions des pubs par marque dans les yogourts", fill ="Caractéristique") +theme_void() +theme(plot.title =element_text(hjust =0.5),legend.position ="right") # Positionner la légende à droite
Il ressort de cette analyse que la marque Yoplait a bénéficier de plus de publicité que les autres marques.
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.
Code
# Calculer les moyennes et les écarts types pour chaque marqueFeature_tab <-summarise( group_by(mlogit_yogurt,Brand), mean=mean(feat), sd=sd(feat) )kable(Feature_tab, caption ="Yogurt data Feature", align ="c") %>%kable_styling(full_width =FALSE) %>%row_spec(0, bold =TRUE) # Rendre la première ligne en gras
Yogurt data Feature
Brand
mean
sd
dannon
0.0377280
0.1905772
hiland
0.0368988
0.1885525
weight
0.0377280
0.1905772
yoplait
0.0559701
0.2299117
On observe là 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.
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.
Moyenne et ecart-type Price
La mise en lumière des moyennes et écarts-types des prix des yaourts par marque révèle la diversité des tarifs sur le marché. Cette analyse éclaire les différences de positionnement tarifaire entre les marques, offrant ainsi un aperçu éclairant sur la stratégie de prix et l’attrait des produits pour les consommateurs.
Code
# Calculer les moyennes et les écarts types pour chaque marquePrice_tab <-summarise( group_by(mlogit_yogurt,Brand), mean=mean(price), sd=sd(price) )kable(Price_tab, 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
Brand
mean
sd
dannon
8.163474
1.0628862
hiland
5.362935
0.8053910
weight
7.949088
0.7735004
yoplait
10.682131
1.9062646
Ce tableau met en lumière les variations des prix moyens des différentes marques de yaourt. Yoplait se distingue avec le prix moyen le plus élevé, suggérant un positionnement potentiellement haut de gamme ou axé sur la qualité. En revanche, Hiland propose le prix moyen le plus bas, indiquant une stratégie plus économique ou compétitive. Les marques Dannon et Weight se positionnent entre ces deux extrêmes en termes de tarification. Les écarts-types relativement faibles suggèrent une certaine stabilité dans les prix au sein de chaque marque. Ces données fournissent des insights précieux sur la stratégie tarifaire et le positionnement sur le marché des yaourts.
Boite à mouchetache des prix des yaourt sur le marché
Suite à l’analyse des moyennes et écarts-types des prix des différentes marques de yaourt, 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
# Charger les données# Votre dataframedf <- Yogurt# Sélectionner les colonnes spécifiéesprix <- Yogurt[, c("price.yoplait", "price.dannon", "price.hiland", "price.weight")]# Convertir le jeu de données en format longYogurt_long <- tidyr::gather(data = prix, key ="Brand", value ="Price")# Créer le boxplotggplot(Yogurt_long, aes(x = Brand, y = Price)) +geom_boxplot(color ="black", alpha =0.8, ) +# Ajouter une bordure noir autour des boiteslabs(x ="Marque", y ="Prix", title ="Comparaison des prix des yogurt par marque") +theme_economist() +# Utiliser un thème minimal + scale_fill_manual(values =c("blue", "#ff7f0e", "#2ca02c", "#d62728")) # Utiliser des couleurs spécifiques pour chaque marque
La boîte à moustaches montre que la plupart des yogourts ont des prix non nuls, avec des variations importantes entre les marques. Dannon et Yoplait semblent être perçus comme plus chers que Hiland, indiquant une possible qualité supérieure ou un positionnement premium. En somme, le yogourt est globalement considéré comme un produit relativement cher.
Fusions des tableaux Market Share, Feature et Price
Dans cette section, nous présentons une analyse combinée des données de marché, des caractéristiques et des prix des yaourts. Pour ce faire, nous avons calculé les moyennes et écarts types pour chaque variable : la part de marché (Market Share), les caractéristiques (Feat) et les prix (Price). En fusionnant ces informations dans un seul tableau, nous obtenons une vue globale des tendances et variations des données. Chaque ligne de ce tableau représente une marque de yaourt, avec les moyennes et écarts types correspondants pour chaque variable. Cette approche nous permet de comparer facilement les performances des marques sur différents aspects, tout en évitant la redondance d’informations.
Code
# Créer les trois tablesms_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 tablescombined_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 colonnescombined_table <- combined_table[, c("Variable", "Brand", "mean", "sd")]# Remplacer les valeurs de "Variable" par des chaînes vides après la première occurrencecombined_table$Variable[duplicated(combined_table$Variable)] <-""# Afficher le tableau avec kablekable(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
En consolidant les moyennes et écarts types des parts de marché, des caractéristiques et des prix des yaourts, nous avons pu obtenir une vision globale et comparative de ces données. Cette analyse nous a permis de mieux comprendre les tendances du marché des yaourts, ainsi que les variations dans les préférences des consommateurs. Ces informations sont essentielles pour les décideurs dans l’industrie alimentaire pour ajuster leurs stratégies de marketing et de production afin de mieux répondre aux besoins du marché.
Estimation du modele de specification
Chargement des packages necessaires
Please cite as:
Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
Estimation du model MNL
Le Modèle Logit Multinomial (MNL) analyse les choix discrets entre plusieurs alternatives. Il permet de comprendre comment des variables comme le prix et la publicité influencent les décisions des consommateurs, offrant des insights précieux pour les analyses de marché et les stratégies marketing.
Code
# Estimer le modèle MNLmnl_model <-mlogit(choice ~ price + feat , reflevel='hiland',mlogit_yogurt)# Résumé des résultatssummary(mnl_model)
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, qui semble être un objet de données mlogit.
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.
Interpretation des resultats obtenus
Résultats :
(Intercept):dannon: Dannon a une forte préférence de base, statistiquement significative.
(Intercept):weight: Weight Watchers a également une forte préférence de base, mais légèrement moins que Dannon, avec une fiabilité élevée.
(Intercept):yoplait: Yoplait est la marque la plus préférée de base, avec une fiabilité élevée.
price: Le prix a un effet négatif sur le choix de la marque, avec une fiabilité élevée.
feat: La publicité a un effet positif sur le choix de la marque, avec une fiabilité élevée.
Statistiques du Modèle : Observations: 2,412 individus ont participé au choix du yaourt. Log Likelihood: Mesure de la qualité de l’ajustement du modèle.
Note sur la Significativité : Les étoiles (, , ) indiquent le niveau de fiabilité des résultats.
En conclusion : Le prix influence négativement le choix du yaourt : plus il est élevé, moins il est choisi.
La publicité a un effet positif sur le choix du yaourt : les marques qui font de la publicité sont plus souvent choisies.
Yoplait est la marque la plus préférée, suivie de Dannon et de Weight Watchers, par rapport à Hiland.
Conclusion
Notre analyse du marché des yaourts aux États-Unis nous a permis de comprendre divers aspects influençant les choix des consommateurs. Nous avons constaté que le prix et la publicité jouent un rôle significatif dans les décisions d’achat. Plus précisément, les yaourts moins chers et ceux bénéficiant de publicités ont tendance à être préférés. Cependant, les préférences de base varient également entre les marques, avec Yoplait en tête, suivie de Dannon et de Weight Watchers.
Ces conclusions offrent des perspectives précieuses pour les entreprises cherchant à optimiser leurs stratégies de marketing et de tarification. En comprenant les dynamiques du marché, les entreprises peuvent ajuster leurs produits et leurs campagnes publicitaires pour mieux répondre aux besoins et aux préférences des consommateurs, ce qui peut se traduire par une plus grande fidélité à la marque et une croissance des ventes.