Pourquoi payer des impôts si c’est pour faire la gueule ?
Le Seum-Score : L'Europe à bout de nerfs
Pourquoi payer des impôts si c'est pour faire la gueule ?
Scrollez pour lire↓
Bienvenue dans l’analyse la plus honnête du modèle européen.
Il y a une question qui taraude tout contribuable européen un lundi matin pluvieux.
“Je paye pour des trains à l’heure, des écoles rutilantes et un système de santé aux petits oignons. Pourtant, en regardant mon bulletin de paie, je ressens cette petite brûlure familière…”
C’est le Seum.
Et on l’a mesuré.
Avant de construire notre indicateur, nous avons voulu comprendre comment toutes ces données interagissent. Est-ce que les dépenses de l’État font vraiment grimper le bonheur ?
Voici notre matrice de corrélation.
Les variables commençant par be sont issues du fichier bien_etre.
Tandis que les variables commençant par dep sont issues du fichier depenses_euro.
Chaque carré représente le croisement entre deux variables.
Le bleu vif montre ce qui marche main dans la main (une corrélation positive forte). Le rouge vif indique les variables qui s’opposent catégoriquement.
C’est ici que l’on commence à deviner les fissures de l’Europe. Mais avant de plonger dans les détails, comment résumer ces 20 variables sans s’y perdre ?
html`<style> .custom-legend { display: flex; flex-direction: column; align-items: flex-end; /* Aligne le bloc à droite */ margin-bottom: 20px; width: 750px; /* Même largeur que ton graphique pour l'alignement */ font-family: sans-serif; font-size: 11px; color: #475569; } .legend-bar { width: 180px; /* Garde le format compact */ height: 8px; background: linear-gradient(to right, #67001f, #f7f7f7, #053061); border-radius: 20px; } .legend-labels { width: 180px; /* Aligné sur la barre */ display: flex; justify-content: space-between; margin-top: 5px; font-weight: 500; }</style><div class="custom-legend"> <div style="font-weight: 700; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;"> Intensité de la corrélation </div> <div class="legend-bar"></div> <div class="legend-labels"> <span>-1</span> <span>0</span> <span>1</span> </div></div>`
data_corr =FileAttachment("corr_data.csv").csv({typed:true})Plot.plot({width:Math.min(width,750),height:Math.min(width,750),padding:0,marginLeft: width <600?110:180,marginBottom: width <600?110:180,x: { axis:"bottom",tickRotate: width <600?-90:-45,label:null },y: { label:null },color: {type:"diverging",scheme:"RdBu",domain: [-1,1],legend:false// ON DESACTIVE LA LEGENDE INFAME },marks: [ Plot.cell(data_corr, {x:"var1",y:"var2",fill:"correlation",inset:0.5,// Utiliser l'inset plutôt que le stroke blanc pour un look plus fintip: {format: {x:true,y:true,fill: d => d.toFixed(2) } } }) ],style: {backgroundColor:"transparent",fontFamily:"sans-serif",fontSize:"11px" }})
C’est là qu’intervient l’éboulis des valeurs propres.
Il nous montre la quantité d’informations capturée par nos nouveaux axes de lecture. Les premières barres bleues représentent l’essentiel de ce qui différencie les pays européens : on y retrouve la quasi-totalité de notre Seum.
data_eig =FileAttachment("pca_eig.csv").csv({typed:true})Plot.plot({width:Math.min(width,750),height: width <600?350:500,marginLeft: width <600?35:50,marginTop:40,x: { label:"Dimensions (Composantes)",domain: data_eig.map(d => d.dimension),tickRotate: width <600?-45:0 },y: { label:"Information résumée (%)",grid:true,domain: [0,40] // <-- 2. AJOUT : On force l'axe à monter jusqu'à 60 pour faire de la place au texte },marks: [// Les barres de l'histogramme (légèrement transparentes pour faire ressortir la courbe) Plot.barY(data_eig, {x:"dimension",y:"variance_percent",fill: d => d.variance_percent>10?"#1e3a8a":"#94a3b8",fillOpacity:0.8,rx:4 }),// La ligne rouge pour visualiser le coude Plot.lineY(data_eig, {x:"dimension",y:"variance_percent",stroke:"#F44336",strokeWidth:3 }),// Les points sur la courbe pour bien marquer chaque dimension Plot.dot(data_eig, {x:"dimension",y:"variance_percent",fill:"#F44336",stroke:"white",strokeWidth:1,r:5 }), Plot.ruleY([0]),// Les étiquettes de pourcentages (légèrement remontées pour ne pas chevaucher les points) Plot.text(data_eig, {x:"dimension",y:"variance_percent",text: d =>`${d.variance_percent.toFixed(1)}%`,dy:-15,fontWeight:"bold",fill:"#333" }) ],style: { backgroundColor:"transparent",fontFamily:"sans-serif",fontSize:"12px" }})
Nous avons passé ces 25 indicateurs à la moulinette d’une Analyse en Composantes Principales.
L’ACP, c’est un peu comme passer l’Europe au détecteur de mensonges : on oublie les discours politiques et on regarde où va vraiment l’argent, et surtout, ce qu’il en reste dans le cœur des gens.
Regardez l’axe horizontal : c’est la ligne de partage du Seum.
Les flèches bleues qui pointent vers la droite sont les vents porteurs. Plus un pays glisse dans cette direction, plus son indice de bonheur décolle.
À l’opposé, les flèches rouges tirent vers la gauche. C’est le paradoxe : là où l’État injecte le plus d’argent, le sentiment de satisfaction a tendance à s’essouffler. C’est ici que le Seum s’enracine.
Enfin, l’axe vertical sépare les visions politiques.
En bas, les flèches plongent vers la Défense et la Sécurité : l’État régalien dans toute sa rigueur.
En haut, elles s’élèvent vers la Protection Sociale. Deux manières de dépenser, mais pas toujours le même sourire à l’arrivée.
data_vars =FileAttachment("pca_vars_full.csv").csv({typed:true})Plot.plot({width:Math.min(width,600),height:Math.min(width,600),grid:true,inset: width <600?35:10,x: { domain: [-1.1,1.1],label:"← Seum | Sérénité →" },y: { domain: [-1.1,1.1],label:"← Protection | Croissance →" },marks: [// 1. Le cercle de corrélation (Rayon = 1) Plot.geo(d3.geoCircle().center([0,0]).radius(90)(), { // 90° sur une sphère = rayon 1 sur planstroke:"#ccc",strokeWidth:1,strokeDasharray:"5,5" }),// 2. Les axes centraux Plot.ruleX([0], {strokeOpacity:0.3}), Plot.ruleY([0], {strokeOpacity:0.3}),// 3. Les flèches des variables (Vecteurs) Plot.link(data_vars, {x1:0,y1:0,// Départ du centrex2:"x",y2:"y",// Arrivée aux coordonnées de la variablestroke: d => d.x>0?"#1e3a8a":"#F44336",strokeWidth:2,markerEnd:"arrow" }),// 4. Les étiquettes de texte (avec un petit décalage pour ne pas être sur la flèche) Plot.text(data_vars, {x:"x",y:"y",text:"label",dy: d => d.y>0?-15:15,// Évite de chevaucher la flèchedx: d => d.x>0?5:-5,fontSize:11,fontWeight:"bold",fill: d => d.x>0?"#1e3a8a":"#F44336",stroke:"white",// Halo de lisibilitéstrokeWidth:3 }) ],style: { backgroundColor:"transparent",fontFamily:"sans-serif" }})
Une fois les ingrédients identifiés, nous avons regroupé les pays qui se ressemblent via une Classification Ascendante Hiérarchique (CAH). Le logiciel a naturellement découpé l’Europe en 4 grandes familles psychologiques.
Le Club des Sereins 🟢 : Ce sont les bons élèves. Souvent situés à droite du graphique, ces pays (généralement nordiques) ont trouvé la formule magique. Leurs prélèvements fiscaux se transforment efficacement en satisfaction citoyenne.
Le Ventre Mou 🟡 : On se décale un peu vers le centre. Ici, le système fonctionne honorablement, mais la machine commence à grincer. La satisfaction est là, mais elle demande des efforts financiers conséquents.
La Zone d’Inconfort 🟠 : L’alerte rouge clignote. Les dépenses publiques sont massives, mais les indicateurs de bien-être refusent de décoller. Le citoyen sent que son argent n’a pas le rendement social espéré.
Le Seum Intégral 🔴 : C’est la fracture totale entre l’investissement public et la réalité vécue. Un climat d’insécurité, de précarité, et un sentiment tenace que l’impôt part en fumée.
C’est ce grand écart géographique, économique et psychologique qui définit notre classement final.
inds =FileAttachment("pca_inds.csv").csv({typed:true})Plot.plot({grid:true,inset: width <600?20:40,width:Math.min(width,800),height: width <600?400:600,x: { label:"← Axe du Seum | Axe de la Sérénité →" },y: { label:"← Protection | Croissance →" },color: {domain: [1,2,3,4],range: ["#FF9800","#F44336","#1a531f","#FFC107"] },marks: [ Plot.ruleX([0], {strokeOpacity:0.1}), Plot.ruleY([0], {strokeOpacity:0.1}),// 1. L'ELLIPSE (HULL) : Englobe les pays par cluster Plot.hull(inds, {x:"x",y:"y",fill:"cluster",fillOpacity:0.15,// Un peu plus prononcé pour bien voir les zonesstroke:"cluster",strokeWidth:2,strokeDasharray:"5,5",// Pointillés pour un look "zone délimitée"curve:"catmull-rom"// Arrondit les angles pour faire une belle ellipse }),// 2. LE ROND DE COULEUR (Base du drapeau) Plot.dot(inds, {x:"x",y:"y",fill:"cluster",r:12,fillOpacity:1 }),// 3. LES DRAPEAUX (Pas de texte comme demandé) Plot.image(inds, {x:"x",y:"y",src:"flag_url",width:20,preserveAspectRatio:true,tip:true// L'infobulle est cruciale ici car on n'a plus le texte ! }) ],style: { backgroundColor:"transparent",fontFamily:"system-ui, sans-serif" }})
Nous avons traduit cette frustration en une note universelle, de A à D, directement sur la carte.
Le Grade A 🟢 : C’est l’excellence européenne. Une gestion saine des deniers publics qui se traduit par un sourire aux lèvres.
Le Grade D 🔴 : Le Seum intégral. Un système où l’argent public coule à flots, mais où la frustration sociale est à son comble. L’argent rentre, le sourire ne sort pas.
Alors, faut-il déménager à Helsinki pour retrouver le sourire ?
Car si la France est championne du monde du Seum-Score, c’est peut-être aussi parce qu’on adore ça. Râler après l’État tout en lui demandant de tout gérer : c’est notre sport national, notre yoga à nous.
L’argent ne fait pas le bonheur, et visiblement, l’impôt non plus. Mais au moins, avec ce score, vous avez enfin une preuve statistique à brandir devant votre écran de télévision.
Si vous avez le seum, c’est que vous êtes profondément Européen.
P.S. : Si vous habitez en Finlande et que vous n’êtes pas content, merci de ne pas nous contacter. On ne peut plus rien pour vous.
🛠️ Dans les coulisses de cette Dataviz
Ce projet a été entièrement codé et designé de manière reproductible. Voici la pile technique (stack) qui a permis de donner vie au Seum-Score :
Traitement des données (R) : Les données brutes ont été nettoyées et analysées via R. L’Analyse en Composantes Principales (ACP) et le clustering ont été réalisés grâce aux packages FactoMineR et factoextra. La préparation géographique a été gérée via sf.
Édition et Rendu (Quarto) : Le document complet est généré par Quarto, un système de publication scientifique open-source.
Scrollytelling (Closeread) : L’effet narratif au défilement (le texte qui pilote l’apparition et le zoom des graphiques) est propulsé par l’extension Quarto Closeread.
Visualisation Interactive (Observable JS) : Tous les graphiques et la carte choroplèthe ne sont pas de simples images : ce sont des rendus vectoriels interactifs codés en JavaScript via la librairie Observable Plot. Ils sont générés dynamiquement par le navigateur pour s’adapter à toutes les tailles d’écrans.
Remerciements : Je tiens à remercier François Sémécurbe et Bastien Perrin-Zen pour leur regard critique et leurs précieux conseils statistiques, qui m’ont permis d’affiner la méthodologie de ce projet.
Dataviz créée par Faustin LAFAGE, avec l’aide précieuse de Gemini.