Power BI

Power BI : la fonction DAX LINEST

Introduction

Depuis quelques jours, la version de février 2023 de Power BI Desktop est disponible 😃. Cette dernière arrive avec deux nouvelles fonctions DAX : LINEST et LINESTX.

Dans cet article nous allons comprendre à quoi sert la fonction LINEST et comment l’exploiter efficacement pour répondre à un besoin concret. Nous préciserons également la différence entre la fonction LINEST et LINESTX.

Je vais jouer le rôle d’un analyste de données. Ma collègue Julie des ressources humaines s’est rapprochée de moi afin de savoir si je pouvais répondre à une problématique.

En effet, aujourd’hui le département des ressources humaines détient un historique de salaires des employés. Et Julie aimerait savoir si je peux créer un outil permettant d’estimer le salaire en fonction du nombre d’années d’expérience.

Pour traiter ce genre de problématique, il existe une méthode statistique nommée la régression linéaire. Les fonctions LINEST et LINESTX permettent justement assez simplement d’effectuer une régression linéaire avec Power BI.

C’est quoi une régression linéaire ?

Considérons le graphique ci-dessous (il s’agit d’un nuage de points) effectué avec Power BI. Qui ressort la relation entre le salaire et le nombre d’années d’expérience. Chaque point représente un employé.

Graphique : Salaire en fonction du nombre d’années d’expérience.

Nous pouvons rapidement remarquer qu’il existe une relation apparente entre le nombre d’années d’expérience et le salaire. Le salaire augmente avec le nombre d’années d’expérience de façon quasi linéaire. On parle souvent d’une relation de corrélation en statistiques (le salaire est corrélé au nombre d’années d’expérience)

Tout part de ce type d’observation en réalité. La régression linéaire consiste à déterminer une ligne optimale permettant d’estimer le salaire en fonction du nombre d’années d’expérience. Sur Power BI, à date nous pouvons ajouter une ligne de tendance en sélectionnant le visuel et en allant sur le volet Visualisations puis cliquer sur le bouton analyse supplémentaire à votre rapport et enfin activer courbe de tendance.

Le résultat obtenu ci-dessous.

Graphique : Salaire en fonction du nombre d’années d’expérience avec une courbe de tendance.

La ligne optimale que nous recherchons à une équation connue en statistiques qui est :

Salaire = (slope1) * nb années d’expérience + (intercept)

Comme vous pouvez le constater, nous avons le salaire et le nombre d’expériences. Les inconnus sont (slope1) = pente en français et (intercept). Power BI vient désormais à la rescousse en permettant d’obtenir ces inconnus assez facilement. Mes données chargées dans Power BI se présentent comme suit :

Données sources

J’ai deux colonnes : nombre d’années d’expérience et salaire. Je vais utiliser la fonction LINEST afin de déterminer les deux inconnues.

La fonction prend en paramètre plusieurs éléments. La variable que l’on souhaite estimer (ici ce sera le salaire dans notre cas) et en fonction de quelle(s) variable(s) (le nombre d’années d’expérience dans notre cas). Notez qu’on parle d’une régression linéaire simple (estimation d’une variable en fonction d’une autre). Il existe également la régression linéaire multiple et dans ce cas on estime une variable en fonction de plusieurs autres variables. Mais restons dans un cas assez simple.

Terminé la petite leçon de statistiques.

Exemple pratique

La fonction LINEST retourne une table. Je vais donc créer une table calculée avec l’expression DAX ci-dessous :

Prédictions salaires = LINEST( Salaires_Employes[Salaire], Salaires_Employes[AnneesExperience] )

Une fois ma table créer, je peux remarquer que ma table contient plusieurs colonnes. Il s’agit des données retournées par l’application de l’algorithme de régression linéaire. Nous retrouvons deux colonnes principales qui vont nous intéresser : (Slope1) et (intercept).

Image : résultat de la fonction LINEST.

Il s’agit de nos valeurs inconnues énoncées plus haut.

Nous pouvons désormais effectuer une estimation de salaire en fonction du nombre d’années d’expérience. Prenons le cas d’une personne qui a 12 ans d’expérience. Nous allons créer la mesure ci-dessous :

Estimation = 
VAR vAnneesExperience = 12
VAR vSalaire =
    SUM('Prédictions salaires'[Slope1]) * vAnneesExperience + SUM('Prédictions salaires'[Intercept])
RETURN
    vSalaire

L’expression créé deux variables : une première qui stocke le nombre d’années d’expérience. Et une deuxième qui calcule le salaire en fonction de l’équation présenté plus haut et en utilisant les inconnues obtenues précédemment.

Affichons le résultat obtenu. Nous nous rendons compte que d’après la politique salariale de l’entreprise, nous pouvons proposer à la personne un salaire de 139 K€.

Résultat mesure Estimation

Nous pouvons à présent finaliser l’outil d’estimation de salaire. Nous allons permettre à l’utilisateur d’entrer un nombre d’années d’expérience à la volée et d’obtenir une estimation.

Pour cela, nous allons utiliser la fonctionnalité de What-If parameter de Power BI. Je vais créer un nouveau paramètre nommé Années d’expérience.

Création d’un paramètre What-IF

Je vais configurer le paramètre comme suit :

Configuration paramètre

Une segment va être ajouté au rapport. J’aurais un curseur afin de renseigner le nombre d’années d’expérience. Le segment se présente comme suit :

Je vais à présent écrire une expression DAX similaire à la précédente. En remplaçant la valeur douze que j’avais marqué en dur par le paramètre que je viens de créer.

Estimation dynamique = 
VAR vAnneesExperience = 'Nombre d''années d''expérience'[Valeur Nombre d'années d'expérience]
VAR vSalaire =
    SUM('Prédictions salaires'[Slope1]) * vAnneesExperience + SUM('Prédictions salaires'[Intercept])
RETURN
    vSalaire

Je vais à présent ajouter un visuel de carte au rapport en y associant la mesure dynamique créée précédemment. Le résultat final ci-dessous :

Conclusion

En conclusion, les nouvelles fonctions DAX LINEST et LINESTX apporte la puissance de la méthode statistique de régression linéaire à Power BI. Avec une démarche assez simple.

La fonction LINESTX permet d’évaluer l’expression ligne par ligne de façon itérative.

Je reviendrai avec des articles complémentaires à ce sujet, et un cas de régression linéaire multiple.

À bientôt pour de nouvelles histoires data !

N’hésitez pas à laisser des commentaires ci-dessous pour me dire ce que vous pensez de cette fonction. Cette nouvelle fonction vous plait elle ? Voyez vous des cas d’usages ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.