Prénoms, départements et analyse en composantes principales (1ère partie)

Le site www.aufeminin.com met à disposition du public des statistiques sur l’usage des prénoms en France entre 1946 et 2006. Les données sont ventilées par département. J’ai écrit un petit script pour récupérer toutes ces données afin de réaliser quelques analyses statistiques à l’aide de R, mon logiciel favori d’analyse de données.

Venant du Pays Basque, une question me vient naturellement à l’esprit : existe-t-il des particularismes régionaux forts ? Les prénoms sont-ils utilisés partout dans les mêmes proportions ou bien existe-t-il des spécificités géographiques ?

Les données

Le fichier obtenu contient 1,8 million d’observations, chacune d’elle correspondant à un prénom, une année et un département. Chaque observation comprend le nombre d’enfants nés durant l’année et dans le département considérés et affublés du prénom en question. Elle comprend également le sexe de l’enfant, ce qui peut être utile pour certains prénoms androgènes, comme Claude ou Dominique. Au total, le fichier comprend un peu plus de 10000 prénoms.

name n sex year dep
1 aadil 3 M 1983 vaucluse
2 aaliyah 8 F 2001 dom-tom
3 aaliyah 4 F 2001 hauts-de-seine
4 aaliyah 3 F 2002 bouches-du-rhone
5 aaliyah 10 F 2002 dom-tom
Cinq premières lignes du fichier obtenu.

À noter que les données de aufeminin.com sont elles-mêmes issues du fichier des prénoms de l’INSEE – édition 2007. Par conséquent, un prénom n’apparait dans la base de données que si :

  • il a été donné au moins trois fois dans un département et une année donnés
  • il a au moins été attribué 20 fois entre 1946 et 2006

Il est donc vraisemblable que les statistiques de certains prénoms rares soient biaisées vers le bas et que certains prénoms très rares n’apparaissent pas du tout.

Dans cet article on ne s’intéresse pas au temps, mais seulement à la répartition géographique des prénoms. On réorganise donc les données sous forme d’un tableau avec en ligne les départements et en colonne les prénoms : on obtient donc un tableau avec 96 observations — une pour chaque département — et plus de dix-mille variables représentant le nombre de personnes nées avec un prénom donné entre 1946 et 2006.

aadil aaliyah aaron ab
ain 0.00 0.00 3.00 0.00
aisne 0.00 0.00 11.00 0.00
allier 0.00 0.00 3.00 0.00
alpes-de-haute-provence 0.00 0.00 0.00 0.00
alpes-maritimes 0.00 0.00 34.00 0.00
Cinq premières lignes et quatre premières colonnes du tableau utilisé dans les analyses suivantes.

Y a-t-il des différences régionales ?

Avant toute chose, commençons par vérifier qu’il existe bien des différences géographiques. Pour cela, on commence par supprimer les prénoms qui ont été enregistrés moins de 100 fois en 60 ans dans toute la France : comme on l’a expliqué plus haut, les prénoms rares sont vraisemblablement mal enregistrés et ils pourraient donc biaiser les résultats. En effet, il faut qu’un prénom apparaisse cinq fois dans un département au cours d’une année pour être enregistré ; il est donc possible qu’un prénom soit correctement enregistré dans les départements fortement peuplés mais pas dans les départements faiblement peuplés où il est rare que cinq enfants portent ce prénom la même année. En utilisant ces prénoms on créerait donc artificiellement une différence entre les zones fortement peuplées et faiblement peuplées.

Une fois ce traitement effectué, on réalise un test du chi-deux pour vérifier qu’il existe des différences entre départements. La valeur associée au test est supérieure à 10 millions et la p-value est à peu près égale à 0. On peut donc conclure sans prendre trop de risque qu’il existe une dépendance entre départements et prénoms utilisés. Néanmoins le test du chi-deux ne nous apporte aucune information sur la nature de cette dépendance : il est possible que seul un prénom soit utilisé dans des proportions différentes selon les départements.

Analyse en composantes principales

Même en supprimant les prénoms rares, les données restent très volumineuses : 100 observations multipliées par 3000 variables, ça fait 300000 chiffres ! Il est impossible de distinguer quoi que ce soit d’un simple coup d’oeil. Pour identifier les sources de différence entre départements, on utilise une analyse en composantes principales.

L’analyse en composantes principales est une méthode mathématique qui utilise les corrélations observées entre les différentes variables pour créer de nouvelles variables appelées “composantes”. Celles-ci sont des combinaisons linéaires des variables initiales, construites de telle sorte que :

  • les composantes sont non corrélées entre elles.
  • la première composante est celle qui capture la plus grande part des différences entre les observations, la deuxième celle qui capture la plus grande partie des différences non prises en compte par la première composante, etc.

L’intérêt de cette méthode est que d’une part, on peut étudier chaque composante indépendamment des autres puisqu’elles ne sont pas corrélées, d’autre part on peut concentrer son analyse sur les premières composantes puisqu’elles capturent la plus grande partie de la variance des données. Dans notre cas, au lieu d’étudier les 3000 variables initiales, on n’étudie que trois composantes !

Prénom des villes, prénom des champs

Avant de calculer les composantes principales, on divise chaque ligne du tableau par le nombre total de personnes nées dans le département. On obtient ainsi la proportion de personnes affublées d’un certain prénom dans un département donné : ce qui nous intéresse, ce n’est pas qu’un grand nombre de personnes portent ou non un nom, mais qu’un prénom soit relativement rare ou non dans une zone géographique.

La première composante capture environ 25% de la variance totale. Mais quelle sorte de différences capture-t-elle exactement ?

Pour répondre à cette question on peut commencer par regarder les corrélations entre la composante et les variables initiales. Voici la liste des 100 prénoms les plus corrélés avec la première composante :

Samy, Yasmine, Amina, Rayane, Adam, Sophia, Mehdi, Soraya, Yacine, Amin, Marwa, Manel, Omar, Sofiane, Elias, Amine, Lina, Kenza, Samia, Anis, Rayan, Ilyes, Iman, Lyna, Sofia, Alia, Hamza, Amir, Asma, Ismael, Amel, Nassim, Walid, Hakim, Sana, Shaima, Ines, Juliana, Riyad, Yasmina, Issam, Farah, Sirine, Rebecca, Nawel, Terence, Ahmed, Lamia, Sara, Syrine, Hana, Sami, Isaac, Oussama, Mohamed-amine, Ryan, Ruben, Mouna, Khaled, Nora, Ilana, Marwane, Djibril, Assia, Naim, Alya, Ranya, Merwan, Soumaya, Malik, Selim, Aya, Sammy, Nabila, Ibrahim, Karim, Jennyfer, Wissam, Anissa, Aicha, Safia, Aaron, Dounia, Eden, Iliana, Kahina, Hanna, Youcef, Aniss, Yanis, Adame, Kim, Halima, Leila, Diana, Karima, Janna, Sephora, Abdel, Lilia

Et la liste des 100 prénoms les plus négativement corrélés :

Gilbert, Gilberte, Odette, Roland, Georgette, Francis, Andree, Pierre, Jeanine, Gilles, Marie-francoise, Marie-christine, Maurice, Elisabeth, Jean-francois, Ghislaine, Rene, Daniele, Marie-france, Gisele, Claudette, Raymond, Marcel, Marie-claire, Liliane, Jeannine, Regine, Pascale, Roger, Patricia, Jean-louis, Lucette, Catherine, Odile, Jean, Raymonde, Jean-pierre, Yolande, Janine, Huguette, Evelyne, Fabienne, Eveline, Veronique, Jean-paul, Andre, Michelle, Marie-claude, Genevieve, Anne-marie, Yvette, Ginette, Jean-claude, Paulette, Michele, Serge, Marie-therese, Dominique, Pierrette, Yves, Joelle, Jean-luc, Eliane, Christiane, Didier, Claudine, Josiane, Viviane, Patrice, Arlette, Danielle, Maryse, Patrick, Joel, Josette, Bernadette, Philippe, Beatrice, Annie, Christine, Thierry, Sylvie, Jacques, Claude, Bernard, Daniel, Colette, Christian, Brigitte, Guy, Gerard, Nadine, Chantal, Nicole, Martine, Monique, Alain, Jacqueline, Francoise, Michel

Il apparaît clairement que la plupart des prénoms positivement corrélés avec la composante sont d’origine étrangère : un grand nombre a l’air d’origine arabe, mais on trouve également des prénoms anglosaxons (Rebecca, Jennyfer, Kim), hébreux (Adam, Elias, Isaac) ou latins (Juliana, Lilia). A l’opposé, les prénoms négativement corrélés sont tous d’origine française, mais pour beaucoup ont l’air plutôt obsolètes : Gilberte, Georgette, Ghislaine, Ginette, etc. La principale composante opposerait donc d’un côté des régions où de nombreuses personnes portent des prénoms d’origine étrangère et d’un autre côté des régions où l’on rencontre des gens aux prénoms traditionnels, mais vieillots.

Représentons à présent la composante principale sur une carte de France.

Valeurs de la première composante. Les zones bleues correspondent à des valeurs fortement positives de la composante et les zones blanches à des valeurs fortement négatives.

On peut remarquer que les zones bleues correspondent aux principales métropoles de France : Paris, Lyon, Marseille, Lille, Strasbourg et Montpellier. La carte suivante représente le logarithme de la densité de population dans chaque département. Elle ressemble terriblement à la carte précédente.

Densité de population en France en 2008. Plus précisément, sur cette carte est représentée la valeur du logarithme de la densité de population. Elle ressemble comme deux gouttes d'eau à la carte précédente. Source des données : Wikipedia

Enfin si on représente le logarithme de la densité de population par rapport à la valeur de la première composante, il apparaît clairement qu’il existe une relation positive entre ces deux variables.

Logarithme de la densité de population en fonction de la valeur de la première composante. Il existe clairement une relation croissante entre les deux variables.

En résumé, la première composante capture essentiellement les différences entre les régions urbaines et les régions rurales. Les grandes villes sont cosmopolites : elles attirent des travailleurs étrangers qui ont tendance à donner à leurs enfants des prénoms d’origine étrangère. Au contraire, les campagnes attirent peu d’étrangers et les enfants qui y naissent se retrouvent affublés de prénoms typiquement français. Par ailleurs, il est possible que les modes se diffusent plus lentement dans les zones rurales, ce qui expliquerait que les prénoms associés paraissent un peu datés.

A suivre…

Dans le prochain épisode, nous étudierons les deux composantes suivantes. Celles-ci ne capturent que 10 % et 5 % de la variance totale mais elles sont néanmoins très intéressantes car elles ont une interprétation claire : culturelle et géographique pour la première, socio-culturelle pour la seconde.

Le code R

Les données initiales peuvent être directement chargées dans R à l’aide de la commande suivante :

load(url("http://francois.guillem.free.fr/data/sourceprenoms.rda"))

Le tableau des prénoms par département utilisé pour l’analyse en composantes principales peut être chargé quant à lui avec cette commande :

load(url("http://francois.guillem.free.fr/data/prenoms.rda"))

Le code utilisé pour le filtrage des données est :

# Suppressions des prénoms rares ou avec valeur manquante

filtre <- sapply(prenoms, function(x) {!is.na(sum(x)) & sum(x) > 100})
prenoms <- prenoms[,which(filtre)]

# Division de chaque ligne par le nombre total de naissances
# Dans un département.
# On le fait sous forme de calcul matriciel pour gagner du temps.

tot <- apply(prenoms, 1, sum)
prenoms[,1:ncol(prenoms)] <- diag(1 / tot) %*% as.matrix(prenoms)

Pour calculer les composantes principales, on peut utiliser la fonction « princomp », mais elle n’est pas très agréable à utiliser. Sauf en cas de besoin spécifique, il vaut mieux utiliser la fonction « PCA » du package « FactoMineR » :

library(FactoMineR)

pca <- PCA(prenoms)

Pour calculer les corrélations entre les composantes et les variables on utilise la fonction « dimdesc » :

des <- dimdesc(pca)
des

# Pour extraire la liste des prénoms :
dimnames(des$Dim.1$quanti)[[1]]

# Pour extraire les corrélations :
des$Dim.1$quanti

Je partagerai le code pour générer des (belles) cartes dans le prochain article.

Cette entrée a été publiée dans Analyse. Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>