IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Valeurs aberrantes et valeurs manquantes


Sujet :

Macro

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Par défaut Valeurs aberrantes et valeurs manquantes
    Bonsoir les amis,

    j'ai besoins de detecter les valeurs aberrantes par une procédure par la méthode des boites à moustaches, j'aimerais ajouter une colonne à ma table de départ qui indique si la la valeur est aberrante ou pas, pour se faire j'ai besoins d'une fonction qui calcule les quartiles et l'écart interquartile et les stock dans une variable, comme ça je pourrais voir ligne par ligne pour chaque variable colonne celles qui sont aberrantes, est ce qu'il existe une telle fonction??
    une autre petite question s'il vous plais, est ce qu'il existe une procédure qui réalise une ACP en tenant en compte que j'ai des valeurs manquantes?

    merci pour votre aide.

  2. #2
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    %macro recuper(data=,Var=);/*Je calcule d'abord Q1 et Q3*/
    proc means data=&Data q1 q3 noprint;
    var &var;
    output q1=Q1 Q3=Q3 out=sortie;
    run;
    /*Je récupère le premier et le troisième quatile*/
    data _null_;
    set sortie;
    call symput ("Q1",Q1);
    call symput ("Q3",Q3);
    run;
    %let Ecart=%sysevalf(&Q3-&Q1);
    %let A1=%sysevalf(&Q1 - 1.5*&Ecart);
    %let A2=%sysevalf(&Q3 + 1.5*&Ecart);
    data &Data;
    set &data;
    if &Var ge &A1 and &Var le &A2 then _Abberante_="NON";
    else _Abberante_="OUI";
    run;
    %mend;
    Ce code crée une macro de non recuper. Donc il suffit de mettre le nom de la table et la variable concernée. Elle te crée dans la table une nouvelle variable _Abberante_ qui prend la valeur "Oui" lorsque l'individu est détecté comme valeur atypique et "NON" sinon. La méthode utilisée est celle des boites à moustaches pour détecter les outliers.
    Pour exécuter la macro, voici le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %recuper(data=essai, var=x);
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  3. #3
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    Non il faudra imputer les valeurs manquantes avant d'effectuer ton ACP

    Cordialement,
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Par défaut
    merci pour votre réponse Haache ^^

  5. #5
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    Il faut tester et confirmer si ça marche
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Par défaut
    Citation Envoyé par Haache Voir le message
    Il faut tester et confirmer si ça marche
    oui je viens de tester et ça marche très bien, s'il vous plais, j'ai encore une petite question, j'ai fait une petite modification chaque fois qu'il y a une val aberrante je vais la supprimer, pour l'imputer ensuite avec les autres valeurs manquantes, maintenant je voudrais faire ce truc avec toutes les variables une à une est ce que je peut mettre mes var dans un tableau par ex et utiliser une boucle pour appeler la macro recuper pour chaque element du tableau.

    merci pour votre précieuse aide.
    cordialement.

  7. #7
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    C'est bien possible mais on va faire une petite modification pour que tu listes les noms de toutes les variables dans VAR. Sinon tu vas trop souffrir à appeler la macro. Imagine qu'on a 1000 variables

    D'abord ma question est la suivante... Par quelle méthode tu veux imputer les valeurs manquantes???
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Par défaut
    Bonjour,

    Je ne sais pas encore avec quelle méthode je vais imputer les valeurs, je voudrais juste les supprimer pour l'instant, est ce qu'il ya pas moyen de faire ce truc, si on la met dans une boucle par exemple. merci pour votre aide

    cordialement.

  9. #9
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    oui tu peux le faire avec une boucle
    Mais je te propose une autre macro. J'ai changé un peu


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    %macro recuper(data=,Var=);/*J dupplique la table*/
    Data resultat;
    set &Data;
    run;
    /*Je récupère la liste et le nombre de variables*/
    proc transopose data=&Data out=_transpose_;
    var &var;
    data _null_;
    set _transpose_;
    call symput (compress("V"||_n_),_NAME_); 
    call symput ("NB",_N_);
    run;
     
     
    %do i=1 %to &NB;
    /*Je calcule d'abord Q1 et Q3 et j'applique la méthode pour chaque variable*/
    proc means data=&Data q1 q3 noprint;
    var &&V&i;
    output q1=Q1 Q3=Q3 out=sortie;
    run;
    /*Je récupère le premier et le troisième quatile*/
    data _null_;
    set sortie;
    call symput ("Q1",Q1);
    call symput ("Q3",Q3);
    run;
    %let Ecart=%sysevalf(&Q3-&Q1);
    %let A1=%sysevalf(&Q1 - 1.5*&Ecart);
    %let A2=%sysevalf(&Q3 + 1.5*&Ecart);
    data Resultat;
    modify Resultat;
    if &&V&i ge &A1 and &&V&i le &A2 then &&V&i=&&V&i;
    else &&V&i=.;
    run;
    %end;
    proc datasets lib=work nolist;
    delete Sortie _transpose_;
    run;
    %mend;
    Je suppose donc que j'ai la table suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    data essai;input A B C D @@;
    Cards;
    1 2 1 4
    1 0 4 5
    2 1 4 8 
    1 5 0 8 
    100 0 4 15
    2 50 5 1000
    1 1 1 15 
    2 2 2 4
    4 5 7 0
    100 58 47 0
    2 1 4 14
    2 4 8 17
    0 0 1000 -100
    4 5 4 0
    2 4 7 47
    1 2 4 10
    ;
    run;
    Dans la table essai j'ai 4 variables. Je vais appeler la macro sur cette table pour que les valeur atypiques soient supprimées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %recuper(data=essai,Var=A--D)
    L'intérêt ici est que je mets VAR=A--D. C'est pour dire les variables de A à D en suivant l'ordre dans la table. Dans la tables l'ordre c'est A B C D. Donc A--D signifie A B C D. Si les variables étaient VAR1 VAR2 VAR3 .... ON peut mettre VAR=VAR1-VAR100 Cela signifie VAR1 VAR2 ... VAR100. Toutefois, on peut citer les variable (exemple VAR=PIB PNB COUT PRIX).
    Cette fois ci, je n'ai pas apporter de modification à la table initiale. C'est une autre table que je crée dans la librairie Work. C'est la table Résultat. Donc si tu appliques la macro, tu vas voire la sortie dans la librairie Work table resultat.

    Teste et confirme si ça marche.
    Cordialement
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  10. #10
    Membre émérite
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Billets dans le blog
    8
    Par défaut
    J'ai oublié, il faut changer le nom de la macro, sinon tu écrasera l'autre. Tu peut décider de l'appeler Atypique.

    Donc au début du code source tu changes %MACRO Atypique(Data=,Var=);

    Si tu as aimé les macros, tu peux les stocker de manière permanente. Parce que là, chaque fois quand tu ouvres SAS tu vas compiler le code source une fois d'abord avant l'utilisation..
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

Discussions similaires

  1. Détection de valeurs aberrantes
    Par jeff6868 dans le forum R
    Réponses: 9
    Dernier message: 27/04/2014, 19h01
  2. Réponses: 4
    Dernier message: 19/02/2014, 14h28
  3. Réponses: 3
    Dernier message: 18/08/2009, 15h24
  4. Détection des valeurs aberrantes
    Par Boolbola dans le forum R
    Réponses: 3
    Dernier message: 15/01/2009, 10h36
  5. Valeur aberrante
    Par _debutant dans le forum SAS Base
    Réponses: 7
    Dernier message: 19/02/2008, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo