Index de l'article

Calcul d'un indicateur de clientèle potentielle

Nous allons créer un indicateur de clientèle potentielle. Admettons que les clients potentiels d'une chaîne de boutiques de vente de smartphones sont principalement des actifs occupés, d'une tranche d'âge intermédiaire, des familles avec peu d’enfants et des CSP+.

L'idée, discutable, étant que les clients potentiels :

  • ont des besoins de connectivité moderne (soit des actifs occupés).
  • ne sont pas trop jeunes - pour un minimum de moyen - ni trop âgés - pour un minimum d'intérêt à une connectivité moderne (soit une tranche d'âge intermédiaire).
  • ont certains moyens financiers (soit des CSP+).
  • ont un besoin concrêt de budgétisation pour cette connectivité (des familles, mais peu nombreuses).

Nous utiliserons Access et QGIS et travaillerons sur la base des IRIS (pour la disponibilité et précision des chiffres et des géographies). Nous utiliserons uniquement des données en open-source, avec la base Contours...Iris® de l'IGN, les fichiers Couples - Familles - Ménages et Activité des résidents de l'INSEE et la BPE (Base Permanente des Équipements).

Nous respecterons plusieurs étapes/principes :

  • Rapatriement/calcul des variables prises en compte.
  • Agrégation/pondération de ces variables.
  • Neutralisation/substitution des valeurs aberrantes.

Cette fusion nous donnera un indicateur.

Variables

1) Calcul de la 1ère variable var_fam

  • Créez un champ sommant les familles avec 0 ou 1 enfant.
  • Calculez le pourcentage de ce champ avec le nombre total de familles, dans un champ nommé var_fam.

Exemple :

var_fam: ROUND((([C21_NE24F0]+[C21_NE24F1])/[C21_FAM])*100;2)

2) Calcul de la 2nd variable var_actif

  • Calculer le pourcentage d’actifs occupés par rapport à la population de la même tranche d'âge.

Exemple :

var_actif: ROUND(([P21_ACTOCC15P]/[P21_POP15P])*100;2)

3) Calcul de la 3ème variable var_age

Calculer le pourcentage de population de 25 à 54 ans.

Exemple :

var_age: ROUND(([P21_POP2554]/[C21_PMEN])*100;2)

4) Calcul de la 4ème variable var_csp

Calculer le pourcentage de cadres et de professions intermédiaires.

Exemple :

var_csp: ROUND((([C21_ACT1564_CS3]+[C21_ACT1564_CS4])/[C21_ACT1564])*100;2)

Indicateur

Pour n'oublier aucun IRIS dans les futures cartographies et gérer des valeurs éventuellement vides, commencez par exporter un Excel de vos IRIS cartographiques, qui constituera le socle de nos calculs.

Créez, depuis ces IRIS dans Access, une requête joignant les requêtes calculant les variables avec l'équivalent d'un LEFT JOIN

Calculez ensuite un indicateur prenant en compte nos 4 variables tout en minorant la variable var_fam et en majorant la variable var_csp.

Exemple :

indicateur: ROUND((([var_fam]*1) + ([var_actif]*2) + ([var_age]*2) + ([var_csp]*3))/8;2)

Neutralisation/substitution

Mais parfois nous avons des valeurs aberrantes ou vides dans les variables. Exemples :

In ('040500000';'060040113';'060040109';'595080104')

Nous allons d'abord les neutraliser dans les variables :

var_csp: VraiFaux([C21_ACT1564]<>0;Round((([C21_ACT1564_CS3]+[C21_ACT1564_CS4])/[C21_ACT1564])*100;2);Null)
var_actif: IIf([P21_POP15P]<>0;Round(([P21_ACTOCC15P]/[P21_POP15P])*100;2);null)
var_age: IIf([C21_PMEN]<>0;Round(([P21_POP2554]/[C21_PMEN])*100;2);null)
var_fam: IIf([C21_FAM]<>0;Round((([C21_NE24F0]+[C21_NE24F1])/[C21_FAM])*100;2);null)

Puis les neutraliser dans l'indicateur et substituer le diviseur :

pre_indicateur:
IIF(
ISNULL([var_age]);
(([var_fam]*1)+([var_actif]*2)+([var_csp]*3))/6;
IIF(
ISNULL(
[var_actif]);
(([var_fam]*1)+([var_age]*2)+([var_csp]*3))/6;
IIF(
ISNULL(
[var_csp]
);(([var_fam]*1)+([var_actif]*2)+([var_age]*2))/5;
IIF(
ISNULL(
[var_fam]);
(([var_actif]*2)+([var_age]*2)+([var_csp]*3))/7;
(([var_fam]*1)+([var_actif]*2)+([var_age]*2)+([var_csp]*3))/8
))
))

Notez qu'en utilisant un vrai langage de programmation, comme Python, nous aurions pu substituer les variables directement (par... d'autres variables), ou créer un vrai diviseur dynamique... Mais vous avez compris le principe.

Reste donc ici un problème : nous ne gérons pas les cas ou plusieurs variables sont vides.

Valeurs aberrantes

Restent donc des valeurs de l'indicateur supérieures à 100 ou vides. Nous allons les gérer :

indicateur: IIF(ISNULL([pre_indicateur]);0;IIF([pre_indicateur]>100;100;[pre_indicateur]))

Indicateur augmenté

Nous allons maintenant enrichir notre indicateur d'une variable prenant en compte le nombre de commerce spécialisés en téléphonie par IRIS ! Ceci afin d'éviter la cannibalisation entre magasins.

Utilisez la BPE avec les codes B321 et B322 par exemple, pour compter les magasins spécialisés en électronique/communication par IRIS.

Mais si cela est intéressant, c'est un problème, car quand les variables actuelles tirent l'indicateur vers le haut (on parle de corrélation positive), une telle 5ème variable le tirerait vers le bas (corrélation négative). Il nous faudra donc la prendre en compte de façon plus complexe.

Une possibilité serait de diviser l'indicateur simple par une variable corrélée négativement préalablement divisée par son propre maximum : la division par son maximum amène à 1 la valeur la plus forte, ce qui ne fera pas bouger l'indicateur une fois divisé par 1 ; tandis qu'une division par un chiffre inférieur à 1 augmentera l'indicateur. Autrement dit : une faible variable corrélée négativement augmentera l'indicateur, quand une plus forte l'abaissera, le tour est joué.

Exemple en SQL :

SELECT Indicateur.CODE_IRIS,
Indicateur.indicateur,
iris_commerce_communication.nombre AS mag_spe,
 
(SELECT MAX(nombre) FROM iris_commerce_communication) AS max_mag_spe,
 
IIF(ISNULL(mag_spe),
ROUND(((SELECT MIN(nombre) FROM iris_commerce_communication)/max_mag_spe)/2,5),
 
ROUND(mag_spe/max_mag_spe,5)) AS diviseur,
 
ROUND(indicateur/diviseur,2) AS 'Indicateur augmenté'
 
FROM Indicateur
LEFT JOIN iris_commerce_communication
ON Indicateur.CODE_IRIS = iris_commerce_communication.iris ;

Attention à un éventuel maximum aberrant dans la variable corrélée négativement, qui risque de fausser les comparaisons. Idéalement ce maximum doit être lissé par rapport à la répartition des valeurs disponibles. Vous pouvez modifier manuellement les maximums aberrants dans les données brutes et rafraîchir votre calcul jusqu'à satisfaction.

Attention au valeur nulles dans la variables corrélée négativement, ici nous prenons soin de leur attribuer une valeur moitié moindre que le minum calculé (divisée par 2), afin d'avoir une logique dans les comparaisons (en forçant l'indicateur à augmenter fortement quand il n'y a aucun magasin spécialisé dans l'IRIS). Mais ceci est exagéré ! Modifiez la valeur de réduction des valeurs nulles afin d'obtenir quelque chose de plus lisse.

Rationalisation

Nous avons maintenant un indice qu'il nous faut ramener entre 0 et 100. Nous utiliserons un quotient de rationalisation que nous obtiendrons en divisant 100 par le maximum de l'indicateur augmenté.

Une fois obtenu, nous multiplions notre indicateur augmenté par ce quotient :

SELECT CODE_IRIS,
indicateur,
mag_spe,
[Indicateur augmenté],
 
100/(SELECT MAX([Indicateur augmenté]) FROM [Indicateur augmenté]) AS quotient,
 
ROUND([Indicateur augmenté]*quotient,2) AS 'Indicateur rationnalisé'
 
FROM [Indicateur augmenté] ;

Cartographie

Liez vos résultats au shape des IRIS et faites quelques thématiques.

Extrait indicateur

Pour être parfait, nous devrions agrémenter l'indicateur d'une composante géographique, la population complète de l'IRIS, sa taille ou mieux... sa densité.

Vous avez compris le principe, alors à vous de jouer !

 

Liens ou pièces jointes
Accéder à cette adresse URL (https://hg-map.fr/extern/data/Activité des résidents.xlsx)Activité des résidents[Activité des résidents]0 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/shapes/france/BPE.zip)BPE[ ]0 Ko
Accéder à cette adresse URL (http://hg-map.fr/extern/data/shapes/country.zip)country.zip[Countries]0 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/Couples - Familles - Ménages.xlsx)Couples - Familles - Ménages[Couples - Familles - Ménages]0 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/shapes/france/IRIS.zip)IRIS[ ]0 Ko
Télécharger ce fichier (mag_telandcom.zip)mag_telandcom.zip[mag_telandcom]22 Ko
Télécharger ce fichier (soft_customers.xlsx)soft_customers[Clients]4591 Ko
Télécharger ce fichier (soft_orders.xlsx)soft_orders[Commandes effectuées]96 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/shapes/france/TRONCON_HYDROGRAPHIQUE.zip)TRONCON_HYDROGRAPHIQUE[ ]0 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/shapes/france/TRONCON_ROUTE.zip)TRONCON_ROUTE[ ]0 Ko
Accéder à cette adresse URL (https://hg-map.fr/extern/data/shapes/france/TRONCON_VOIE_FERREE.zip)TRONCON_VOIE_FERREE[ ]0 Ko
Télécharger ce fichier (_PourExporterDonnées.sql)_PourExporterDonnées.sql[Pour filtrer/mettre à jour/exporter les données]1 Ko