Implémenter une analyse de régression avancée, Excel VBA
Voici un code détaillé en VBA Excel pour implémenter une analyse de régression avancée. Ce code effectue une régression linéaire et fournit des résultats tels que les coefficients (pente et intercept) ainsi que la valeur R-squared (coefficient de détermination), parmi d’autres statistiques importantes.
Objectifs du Code :
1. Préparation des données : Il est nécessaire de disposer de deux ensembles de données : l’une pour la variable indépendante (X) et l’autre pour la variable dépendante (Y).
2. Analyse de régression linéaire : Utilisation de la fonction LINEST d’Excel via VBA pour effectuer l’analyse de régression.
3. Résultats : Le code extrait les coefficients de la régression (pente et intercept), la valeur R-squared et d’autres statistiques, puis les affiche dans la feuille Excel.
Voici le code détaillé en VBA pour implémenter l’analyse de régression avancée :
Code VBA Excel :
Sub AnalyseRegressionAvancee() ' Déclaration des variables Dim PlageX As Range Dim PlageY As Range Dim PlageResultats As Range Dim ResultatsRegression As Variant Dim Intercept As Double Dim Pente As Double Dim RCarre As Double Dim ErreurStandard As Double Dim FStatistique As Double Dim DegrésLiberté As Double ' Définir les plages pour X (variable indépendante) et Y (variable dépendante) Set PlageX = Range("A2:A100") ' Supposons que les données X sont dans la colonne A Set PlageY = Range("B2:B100") ' Supposons que les données Y sont dans la colonne B ' Vérifier si les plages X et Y ont le même nombre de lignes If PlageX.Rows.Count <> PlageY.Rows.Count Then MsgBox "Les plages X et Y doivent avoir le même nombre de points de données", vbCritical Exit Sub End If ' Effectuer la régression linéaire en utilisant la fonction LINEST d'Excel ResultatsRegression = Application.WorksheetFunction.LinEst(PlageY, PlageX, True, True) ' Extraire les résultats de la fonction LINEST Intercept = ResultatsRegression(1, 2) ' Intercept (b) Pente = ResultatsRegression(1, 1) ' Pente (m) RCarre = ResultatsRegression(3, 1) ' Valeur R-squared ErreurStandard = ResultatsRegression(2, 1) ' Erreur standard de la régression FStatistique = ResultatsRegression(1, 3) ' Statistique F DegrésLiberté = ResultatsRegression(2, 3) ' Degrés de liberté pour la régression ' Afficher les résultats de la régression sur la feuille de calcul Set PlageResultats = Range("D2") ' Cellule de départ pour l'affichage des résultats PlageResultats.Offset(0, 0).Value = "Intercept (b) :" PlageResultats.Offset(0, 1).Value = Intercept PlageResultats.Offset(1, 0).Value = "Pente (m) :" PlageResultats.Offset(1, 1).Value = Pente PlageResultats.Offset(2, 0).Value = "R-Squared :" PlageResultats.Offset(2, 1).Value = RCarre PlageResultats.Offset(3, 0).Value = "Erreur Standard :" PlageResultats.Offset(3, 1).Value = ErreurStandard PlageResultats.Offset(4, 0).Value = "Statistique F :" PlageResultats.Offset(4, 1).Value = FStatistique PlageResultats.Offset(5, 0).Value = "Degrés de Liberté :" PlageResultats.Offset(5, 1).Value = DegrésLiberté MsgBox "Analyse de régression terminée !", vbInformation End Sub
Explication détaillée du code :
1. Définition des plages de données :
Set PlageX = Range("A2:A100") et Set PlageY = Range("B2:B100")
définissent les plages de données pour la variable indépendante (X) et la variable dépendante (Y). Vous pouvez ajuster ces plages en fonction de la taille de vos données.
2. Fonction LINEST :
ResultatsRegression = Application.WorksheetFunction.LinEst(PlageY, PlageX, True, True)
exécute la régression linéaire. Cette fonction retourne une matrice contenant plusieurs statistiques importantes, telles que les coefficients de régression, la valeur R-squared, l’erreur standard, etc.
3. Extraction des résultats :
-
- Après avoir exécuté la régression, les résultats sont extraits de la matrice retournée par LINEST :
- Intercept (b) : L’ordonnée à l’origine (intercept) de la droite de régression.
- Pente (m) : La pente de la droite de régression.
- R-Squared : Le coefficient de détermination, qui mesure la qualité de l’ajustement de la droite de régression aux données.
- Erreur Standard : L’erreur standard de l’estimation de la régression.
- Statistique F : La statistique F qui permet d’évaluer la significativité globale du modèle.
- Degrés de Liberté : Les degrés de liberté utilisés dans les tests statistiques associés à la régression.
- Après avoir exécuté la régression, les résultats sont extraits de la matrice retournée par LINEST :
4. Affichage des résultats :
- Les résultats sont affichés à partir de la cellule D2 dans la feuille de calcul, en utilisant la méthode Offset. Chaque statistique est clairement étiquetée pour faciliter la compréhension.
5. Gestion des erreurs :
- Avant de procéder à la régression, le code vérifie que le nombre de données dans la plage PlageX est le même que dans la plage PlageY à l’aide de la condition
If PlageX.Rows.Count <> PlageY.Rows.Count
. Si les tailles des plages ne correspondent pas, un message d’erreur s’affiche et l’exécution du code est arrêtée.
6. Message de confirmation :
- Après l’exécution de l’analyse, une boîte de message informe l’utilisateur que l’analyse est terminée.
Personnalisation Avancée :
- Régression Multiple : Si vous avez plusieurs variables indépendantes (par exemple, les données dans les colonnes A, C, D, etc.), vous pouvez modifier la plage PlageX pour inclure ces colonnes supplémentaires.
Exemple :
Set PlageX = Range("A2:D100") ' Pour plusieurs variables indépendantes
- Affichage de la droite de régression sur un graphique : Après avoir effectué la régression, vous pouvez créer un graphique en nuage de points (scatter plot) et y ajouter la droite de régression. Vous pouvez utiliser les coefficients extraits (pente et intercept) pour afficher cette droite.
- Autres Statistiques : La fonction LINEST peut également retourner d’autres statistiques détaillées, comme les p-values, qui peuvent être utilisées pour évaluer la significativité statistique du modèle de régression.
Conclusion :
Ce code VBA permet d’effectuer une analyse de régression linéaire avancée dans Excel. En utilisant la fonction LINEST, il extrait des statistiques essentielles comme les coefficients de régression et la valeur R-squared, et les affiche clairement dans la feuille de calcul. Cela permet de mieux comprendre la relation entre les variables et d’évaluer la qualité du modèle de régression.