|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Damien GuiavarchÉtudiant Inscription : avril 2011 Messages : 19 ![]() |
Bonjour,
Je voudrais supprimer les variables les plus corrélés entre elles. Pour connaitre les corrélations j'utilise la proc corr, mais après je bloque. Un exemple pour plus de précision: si deux variables ont un coefficient de corrélation de 0,9 alors je voudrais en supprimer une des deux, afin d'éviter les doublons dans mon analyse. Est ce que quelqu'un pourrait m'aider? Merci |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour Damien.
Pourquoi automatiser un tel procédé ? Il n'est pas équivalent de choisir l'une ou l'autre des variables hautement corrélées : l'une peut avoir plus d'importance métier que l'autre. Généralement je fais ce genre de choses manuellement ; c'est chiant mais on contrôle ce qu'on fait. Accessoirement, on peut avoir des corrélations très élevées alors que les variables ont peu liées, à cause d'observations atypiques. On a alors des résultats très divergents selon le type de corrélation utilisée (Spearman ou Pearson ?). Cela dit, voici un détecteur de couples de variables très corrélées. Il est très simple de s'en sortir avec l'ODS OUTPUT et l'indispensable option RANK dans la proc CORR qui range les couples de variables par corrélation décroissante (en valeur absolue). Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Damien GuiavarchÉtudiant Inscription : avril 2011 Messages : 19 ![]() |
Merci pour vos codes.
J'aurais voulu automatiser le processus car je suis en train de réaliser une première analyse qui sera mise à jour 3 fois par ans. Par conséquent j'aurais voulu trouver une méthode permettant de supprimer les variables inutiles en lançant seulement la macro et non regarder en détails les coefficients de corrélations. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Bonjour Damien,
Suivant le contexte il est peut être envisageable d'automatiser. Mais je suis d'accord avec Olivier, il est important de s'adapter au contexte (et non l'inverse!). d'autant plus que si tu ne lances ton code 3 fois par an, tu peux simplement copier coller ton précédent code et faire qq modifs, ce n'est pas très long.. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Bon courage à toi pour l'automatisation!
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Damien GuiavarchÉtudiant Inscription : avril 2011 Messages : 19 ![]() |
J'ai trouvé une méthode (elle vaut ce qu'elle vaut).
Après avoir créer la matrice des corrélations, je compte pour chaque variables le nombre de fois qu'elles dépassent mon seuil de coefficient de corrélation (par exemple 0,9), cela me donne les variables les plus corrélés avec d'autres. Puis pour en avoir qu'une seule, je somme les coefficients de corrélations. Et enfin je supprime la variable qui a la plus grande somme. Je relance ma proc corr et je réitère cette méthode. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Je savais que c'etait pas possible en une seule passe
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com