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

Débutez Discussion :

[AFC] Croiser les combinaisons possibles de couple de variables


Sujet :

Débutez

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Egypte

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Février 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut [AFC] Croiser les combinaisons possibles de couple de variables
    en faite je dispose d'une table disposant de plusieurs variables , j'aimerais bien croiser les combinaisons possibles de couple de variables .
    le problème c 'est que dans le corps de la procédure je dois citer le nom de deux variables . Pourriez vous m'aider . MERCI



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc corresp observed DATA=matable;
    TABLES V1*V2 ;
    run;

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Je n'utilise jamais la PROC CORRESP et je ne pense donc pas être d'une grande aide.
    Vous avez trop de variables dans la table et vous voulez toutes les analyser en une seule procédure ?

    Une solution pour alléger le programme SAS serait éventuellement une macro toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    %macro analyse (var1=, var2=);
    proc corresp observed DATA=matable;
    TABLES &var1.*&var2. ;
    run;
    %mend;
    Le but est de ne plus avoir à écrire la procédure dans son entièreté à chaque nouvelle analyse mais uniquement appeler la macro et ses deux seuls paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %analyse(var1=nom_variable1, var2=nom_variable2);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Egypte

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Février 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    quant à moi j'ai jamais travaillé avec des macro , mais en appliquant votre solution , à chaque fois on se trouve obligé de spécifier var1 , var2 , alors que j'ai comme objectif "ambitieux " de générer toutes les combinaisons possibles sans recours à un saisi manuel

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    La méthode d'alex est une première solution.

    Ce que je ferais :
    - je stockerais la liste de variables sous une macro variable via un PROC SQL ; select DISTINCT variable into : macro SEPARATED BY ' ' ; ...
    - je compterais le nombre de variables soit via un count, via un end (après un set )
    - je ferais deux boucles du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    data _null_ ; 
     do i = 1 to nb_variables 
       var1 = scan(liste,&i.) ; 
         do j = 1 to nb_variables ; 
         var2 = scan(liste,&j.) ; 
          call execute('%analyse('||var1||','||var2||'') ; 
         end ; 
       end ; 
    run ;
    Après, j'avoue que je n'ai pas vraiment compris le pbm.
    De mémoire, dans un proc CORRESP, il faut que tu listes juste TOUTES les variables dans l'option TABLE pour avoir un tableau de BURT qui fera les combinaisons entre chaque variable ...
    ( bjr au temps de calcul lol)

    Cdt
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Egypte

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Février 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    salut lelensoi et Alex
    pour que vous compreniez le probléme que je cherche à résoudre
    je veux appliquer une ACM ou bien Une AFC , j'ai comme objectif de tirer les relations entres les variables d'ou je cherche à obtenir tous les graphiques possibles qui projettent la relation entre les modalités des variables c'est pour cela que je veux générer tous les couples possibles .
    Si non je vais tester votre solution et celle de Alex . Merci infiniment .

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Je ne sais pas combien tu as de variables à croiser ainsi, mais je ne sais pas s'il est vraiment opportun de toutes les croiser 2 à 2. Pourquoi ne pas faire une ACM de l'ensemble de tes variables ?
    Si tu veux des croisements 2 à 2, autant les choisir parmi les variables qui ont le plus de liens ; on pourrait les trier par V de Cramer décroissant, par exemple. Et ça fournirait la base pour automatiser l'édition des AFC via un CALL EXECUTE (voir ici la doc de Géraldine sur le sujet).
    Un code du genre (non testé)
    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
    ODS EXCLUDE ALL ; /* plus de sorties texte */
    PROC FREQ DATA=tableSAS ;
      TABLE _all_ * _all_ / CHISQ ;
      ODS OUTPUT chisq = work.cramer (WHERE=(UPCASE(statistic) CONTAINS "CRAMER"
                                          AND SCAN(table,2," *") > SCAN(table,3," *"))) ;
    RUN ;
    PROC SORT DATA=work.cramer ;
      BY DESCENDING value ;
    RUN ;
    ODS SELECT ALL ;
    ODS GRAPHICS ON ;
    DATA _NULL_ ;
       SET work.cramer (OBS=10) ;
       LENGTH var1 var2 $ 32 ;
       var1 = SCAN(table,2," *") ;
       var2 = SCAN(table,3," *") ;
       CALL EXECUTE("PROC CORRESP DATA=tableSAS MCA SHORT OBSERVED ; TABLES ") ;
       CALL EXECUTE(var1) ;
       CALL EXECUTE(" * ") ;
       CALL EXECUTE(var2) ;
       CALL EXECUTE("; RUN ;") ;
    RUN ;
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Egypte

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Février 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut ACM
    Pouvez vous me dire comment faire pour avoir une ACM ? et les graphiques ensuite ?

  8. #8
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    Oui effectivement vous devez faire une ACM !
    Le code SAS est quasi identique à celui d'une AFC, seule change l'option TABLES ou vous citer toutes les variables que vous allez mettre dans l'ACM.
    La proc SAS à utiliser est donc le procédure CORRESP.
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/06/2007, 20h52
  2. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  3. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29
  4. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11
  5. Sortir d'un tableau les combinaisons possibles
    Par juelo dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 26/03/2006, 17h11

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