Implémentation avancée de l’analyse de corrélation des données, Excel VBA

Implémentation avancée de l’analyse de corrélation des données, Excel VBA

Voici une implémentation avancée de l’analyse de corrélation des données dans Excel en utilisant VBA, avec des explications détaillées.
Objectif de la tâche :
L’objectif est de créer un code VBA dans Excel permettant d’analyser et de calculer les corrélations entre plusieurs ensembles de données. Cela impliquera le calcul du coefficient de corrélation de Pearson, qui quantifie la relation linéaire entre deux variables. Le code inclura également une option pour analyser les corrélations de plusieurs colonnes de données, générer une matrice de corrélation et visualiser les résultats à l’aide d’une carte thermique (heatmap).
Étapes impliquées dans l’implémentation :
1. Calcul du Coefficient de Corrélation de Pearson :

  • Le coefficient de corrélation de Pearson (r) mesure la force et la direction de la relation linéaire entre deux variables. La formule du coefficient de Pearson est la suivante :

r = ∑(Xi − Xˉ)(Yi − Yˉ)∑(Xi − Xˉ)2∑(Yi − Yˉ)2
Où :

  • Xi et Yi sont les valeurs individuelles des deux variables.
  • Xˉ et Yˉ sont les moyennes des variables X et Y.

2. Générer une Matrice de Corrélation :

  • Si vous avez plusieurs colonnes de données, la matrice de corrélation affichera le coefficient de corrélation de Pearson pour chaque paire de colonnes.

3. Créer une Carte Thermique pour la Visualisation :

  • Une carte thermique des corrélations permet de visualiser la force et la direction des corrélations entre les variables.

Code VBA pour l’Analyse de Corrélation :

Option Explicit
' Cette fonction calcule la corrélation de Pearson entre deux tableaux de données.
Function PearsonCorrelation(arrX As Range, arrY As Range) As Double
    Dim i As Long
    Dim n As Long
    Dim sumX As Double, sumY As Double
    Dim sumXY As Double, sumX2 As Double, sumY2 As Double
    Dim correlation As Double
    n = arrX.Count
    If n <> arrY.Count Then
        MsgBox "Les plages doivent avoir le même nombre de lignes.", vbCritical
        Exit Function
    End If
    ' Initialisation des sommes
    sumX = 0
    sumY = 0
    sumXY = 0
    sumX2 = 0
    sumY2 = 0
    ' Boucle à travers chaque valeur pour calculer les sommes nécessaires à la formule de Pearson
    For i = 1 To n
        sumX = sumX + arrX.Cells(i, 1).Value
        sumY = sumY + arrY.Cells(i, 1).Value
        sumXY = sumXY + arrX.Cells(i, 1).Value * arrY.Cells(i, 1).Value
        sumX2 = sumX2 + arrX.Cells(i, 1).Value ^ 2
        sumY2 = sumY2 + arrY.Cells(i, 1).Value ^ 2
    Next i
    ' Formule de la corrélation de Pearson
    correlation = (n * sumXY - sumX * sumY) / _
                  Sqr((n * sumX2 - sumX ^ 2) * (n * sumY2 - sumY ^ 2))
    PearsonCorrelation = correlation
End Function
' Cette sous-routine calcule la matrice de corrélation pour une plage de colonnes.
Sub CorrelationMatrixAnalysis()
    Dim dataRange As Range
    Dim i As Long, j As Long
    Dim numColumns As Long
    Dim correlationResult As Double
    Dim matrixRange As Range
    ' Spécifier la plage de données (on suppose que les données commencent en cellule A1)
    Set dataRange = Range("A1").CurrentRegion
    numColumns = dataRange.Columns.Count
    ' En-tête pour la matrice de corrélation
    With dataRange.Worksheet
        ' Créer l'en-tête pour la matrice de corrélation
        Set matrixRange = .Range("G1").Resize(numColumns, numColumns)
        matrixRange.Cells(1, 1).Value = "Matrice de Corrélation"
        ' Boucle à travers chaque combinaison de colonnes pour calculer la corrélation de Pearson
        For i = 1 To numColumns
            For j = 1 To numColumns
                ' Ignorer les éléments diagonaux (la corrélation d'une colonne avec elle-même est toujours 1)
                If i = j Then
                    matrixRange.Cells(i + 1, j + 1).Value = 1
                Else
                    ' Calculer la corrélation de Pearson entre les colonnes i et j
                    correlationResult = PearsonCorrelation(dataRange.Columns(i), dataRange.Columns(j))
                    matrixRange.Cells(i + 1, j + 1).Value = correlationResult
                End If
            Next j
        Next i
    End With
    MsgBox "Matrice de Corrélation Calculée avec Succès"
End Sub
' Cette sous-routine crée une carte thermique colorée pour la matrice de corrélation.
Sub CreateHeatmap()
    Dim matrixRange As Range
    Dim cell As Range
    Dim correlationValue As Double
    Dim color As Long
    ' Définir la plage pour la matrice de corrélation (sortie de CorrelationMatrixAnalysis)
    Set matrixRange = Range("G2").CurrentRegion
    ' Boucle à travers chaque cellule de la matrice et appliquer une couleur en fonction de la valeur de corrélation
    For Each cell In matrixRange
        correlationValue = cell.Value
        ' Appliquer des couleurs en fonction de la valeur de corrélation
        If correlationValue > 0.8 Then
            color = RGB(0, 255, 0) ' Vert pour forte corrélation positive
        ElseIf correlationValue > 0.5 Then
            color = RGB(255, 255, 0) ' Jaune pour corrélation positive modérée
        ElseIf correlationValue < -0.8 Then
            color = RGB(255, 0, 0) ' Rouge pour forte corrélation négative
        ElseIf correlationValue < -0.5 Then
            color = RGB(255, 165, 0) ' Orange pour corrélation négative modérée
        Else
            color = RGB(200, 200, 200) ' Gris pour corrélation faible
        End If
        cell.Interior.Color = color
    Next cell
    MsgBox "Carte Thermique Créée avec Succès"
End Sub

Explication détaillée du code :
1. Fonction PearsonCorrelation :

  • Cette fonction calcule le coefficient de corrélation de Pearson pour deux plages de données (tableaux).
  • Elle vérifie d’abord si les plages de données ont le même nombre de lignes.
  • Elle calcule ensuite les sommes nécessaires (somme de X, somme de Y, somme de XY, somme de X^2 et somme de Y^2).
  • Enfin, elle utilise ces sommes pour calculer la corrélation de Pearson en utilisant la formule mathématique du coefficient de Pearson.

2. Sous-routine CorrelationMatrixAnalysis :

  • Cette sous-routine calcule la matrice de corrélation pour un ensemble de colonnes de données.
  • La plage de données est supposée commencer à la cellule A1 et couvrir toutes les lignes et colonnes adjacentes.
  • Le code parcourt chaque paire de colonnes dans l’ensemble de données, calcule la corrélation pour chaque paire à l’aide de la fonction PearsonCorrelation et stocke le résultat dans une nouvelle plage (commençant à G1).
  • Les éléments diagonaux (corrélations d’une colonne avec elle-même) sont définis à 1, car la corrélation d’une variable avec elle-même est toujours égale à 1.

3. Sous-routine CreateHeatmap :

  • Cette sous-routine applique un code couleur à la matrice de corrélation en fonction des valeurs de corrélation.
  • Le vert est utilisé pour les corrélations positives fortes (supérieures à 0.8), le rouge pour les corrélations négatives fortes (inférieures à -0.8), et différentes nuances de jaune, orange ou gris pour d’autres niveaux de corrélation.
  • Cela permet de visualiser facilement la force et la direction des corrélations entre les colonnes de données.

Utilisation :
1. Exécution de l’analyse :

  • Ouvrez Excel et appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
  • Insérez un nouveau module, puis collez le code dans celui-ci.
  • Pour exécuter l’analyse, appuyez sur F5 lorsque la sous-routine CorrelationMatrixAnalysis ou CreateHeatmap est sélectionnée.

2. Données d’entrée :

  • Les données doivent être organisées en colonnes, chaque colonne représentant une variable ou un ensemble de données différent.
  • Le code calculera les corrélations entre ces variables.

3. Sortie :

  • La matrice de corrélation sera placée dans une nouvelle plage, à partir de la cellule G1.
  • La carte thermique colorée affichera visuellement la force des corrélations entre les colonnes.

Conclusion :
Ce code VBA avancé permet de calculer et de visualiser les corrélations entre plusieurs ensembles de données dans Excel. Il est hautement personnalisable et peut être étendu pour inclure d’autres types de corrélations (par exemple, la corrélation de rang de Spearman) ou ajouter des fonctionnalités de visualisation supplémentaires. La carte thermique est particulièrement utile pour identifier visuellement les relations fortes entre les variables.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x