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

SAS STAT Discussion :

Faire une Typologie SAS


Sujet :

SAS STAT

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Faire une Typologie SAS
    Bonjour,
    Pour le compte d'un stage je dois effectuer une typologe de client. Le problème est que je suis novice sur sas. En fait, je pense avoir le bon cheminement pour réaliser cette typologie mais j'ai l'impression que mon implémentation sous SAS n'est pas correct et je n'arrive pas à avoir quelque chose de satisfaisant.
    Dans mes données j'ai plus de 380000 individus, ce qui complexifie le travail, voici mon cheminement :
    1)discrétisation de variables
    2)classification des individus par kmeans (proc fastclus)
    3)autre classification à partir des classes précédemments réalisées :CAH (proc cluster)
    4)Couper l'arbre en plusieurs classes
    5)FAire une Analyse discriminante




    Le problème c'est que j'obtient plein de tableau dont je ne comprend la signification (j'avais l'habitude de travailler sous SPAD), et lorsque je regarde lenombre d'individu qu'il y a (dans colonne frequence) j'en retrouve seulement une centaine sur les 380000...

    Donc pouvez vous m'aider à comprendre mes erreurs, et à me conseiller sur mon implémentation.

    Merci d'avance

  2. #2
    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 Gorgious.
    C'est ton ACM qui ne va pas : avec TABLES et l'option MCA, tu ne fais une ACM que dans l'espace des variables, et donc dans ta table en sortie, tu as une observation par modalité, pas par individu. Dans la Log, tu dois voir que c'est après CORRESP que ta table a subitement rétréci au lavage !
    Pour bien faire, il faudrait que tu crées des indicatrices (proc Transreg) pour avoir un tableau disjonctif complet, puis une proc Corresp sans MCA et avec VAR au lieu de TABLES (écris VAR &_trgind ; et tu auras automatiquement la liste des indicatrices créées par Transreg). OUTC crée alors une table avec tous tes individus (peut-être un peu plus, même, je ne sais plus ; il faut ouvrir la table et vérifier).
    Attention aussi aux valeurs manquantes : s'il y en a une seule dans l'observation, c'est toute la ligne qui saute !
    Par contre, je pensais que tu ferais ta CAH sur les classes de K-means (méthode mixte de Wong) : pour le moment ce n'est pas le cas. Regarde la doc de la proc CLUSTER, option METHOD=TWOSTAGE, il y a des exemples bien faits.

    Bon courage pour ton stage.
    Olivier
    Bon courage.
    Olivier

  3. #3
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Comme cela ne me semble jamais évident et que c'est un petit peu un détournement de l'objectif de la proc transreg (ie. elle ne sert pas qu'à créer des dummies), je t'oriente vers MODEL CLASS avec l'option DESIGN pour la création des indicatrices.

    http://support.sas.com/documentation...sreg.trgclaopt


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    proc transreg design noprint;
    model  class (x1 y2/ zero=none);
    output  out=b;
    run;
    Stéphane.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci de vos réponses, je vais essayer ça dès lundi en espérant que ca m'aide à avancer. Je vous tiens au courant des résultats.

    Bonnes soirée

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Après avoir suivi vos conseils j'ai remodelé mon programme, afin de créer le tableau disjonctif complet avec la proc transreg, et j'ai refait mon ACM (avec ma proc corresp) (pour l'instant, la suite avec la CAH est mise de coté car je n'ai pas réussi à faire fonctionner ces deux procédures)...
    En effet, lorsque j'éxécute le programme, le temps est (selon moi) anormalement long, puisque après avoir interrompu après plus d'1h de reflexion du logiciel, j'obtiens toujours dans mon tableau disjonctif 0 individus (par contre les classes sont bien représentées pour chaque modalités)

    Voici les erreurs que SAS me retourne (après un arret manuel cette fois ci au bout de seulement 5min de réflexion du logiciel):

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    497  /*******************************************************
    498      PROC transreg
    499      => création d'un tableau disjonctif complet
    500  *******************************************************/
    
    NOTE:  363844 observations copiées de la table PROJ_LIB.ORIGINE.
    NOTE: La table PROJ_LIB.ORIGINE a 363844 observations et 14 variables.
    NOTE: L'étape DATA a utilisé (Durée totale du processus) :
          temps réel                   2.70 secondes
          temps processeur   0.32 secondes
    
    
    501  PROC transreg data=proj_lib.origine design noprint;
    502  model  class (cl_ANNEE depart_residence cl_AGE code_prof situ_fami sexe frac_paiemen nb_voiture cl_CORPO cl_MAT/ zero=none);
    503  output out=proj_lib.tdc;
    504  run;
    
    NOTE: Une table disque utilitaire a été utilisée.==>C'est à ce niveau là que ca reste "bloqué" jusqu'à ce que j'arrete manuellement
    ERREUR: User asked for termination
    NOTE: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
    NOTE:  363844 observations copiées de la table PROJ_LIB.ORIGINE.
    AVERTISSEMENT: La table PROJ_LIB.TDC est peut-être incomplète. Lorsque cette étape a été stoppée, il y avait 0 observations et
                   176 variables.
    AVERTISSEMENT: Table PROJ_LIB.TDC non remplacée car cette étape a été interrompue.
    NOTE: La procédure TRANSREG a utilisé (Durée totale du processus) :
          temps réel                   4:59.89
          temps processeur   28.75 secondes
    
    505
    506  /*******************************************
    507            PROC MEANS :
    508  ********************************************
    509  PROC MEANS
    510  data=proj_lib.origine;
    511  run;*/
    512
    513
    514
    515  /*****************************************
    516    Proc CORRESP :
    517     >>>>>> ACM
    518     > DIMENS : nombre d'axes
    519  *******************************************/
    
    
    520  PROC corresp
    521  data=proj_lib.tdc;
    522  outc=proj_lib.corresp
         ----
         180
    ERREUR 180-322: Instruction incorrecte ou mal utilisée.
    523  noprint;
    524  DIMENS=5;
         ------
         180
    ERREUR 180-322: Instruction incorrecte ou mal utilisée.
    525  VAR &_trgind;
    526  run;
    Donc si vous voyez des erreurs dans mon programme n'hésitez pas à me le signaler.
    Votre aide est très importante pour moi, et je vous remercie d'avance pour le temps que vous consacrerez à me répondre.
    En effet, mon maitre de stage n'étant pas présent pour m'aider, il est pour moi très frustrant de rester bloquer à ce niveau là (et oui j'ai trop l'habitude de travailler sous SPAD), c'est pourquoi je fais appel à vous.

    Merci d'avance.

    Bonne fin de journée.

    Gorigous

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Si vous souhaitez consulter la base sur laquelle je travail (si cela peut vous aider à me répondre), demandez la moi et je vous l'enverrai en MP ou par mail.

    Cordialement,

    Gorgious

  7. #7
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Comme tu stoppes le programme nous voyons ERREUR: User asked for termination, donc le reste n'est pas utile.

    Ton serveur est peu puissant ou très chargé ?

    Essaie sur 10% puis 30% de ta table juste pour voir l'inflation de la consommation CPU et en espace disque.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bon,
    j'ai essayer avec 27000 individus, ce que j'ai fais marche, donc ca doit être mon pc qui n'est pas assez puissant, je vais essayer de passer par le serveur de mon école pour traiter la totalité des observations.
    Maintenant que je sais que le programme marche pour les proc transreg et corresp, je vous tiens au courant pour la suite et pour la cah...

    Merci encore.

    Bonne soirée.
    Cordialement,

    Gorgious

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Suite à nos conversations précédentes et à votre aide concernant l'implémentation de la proc corresp, je me suis lancé aujourd'hui dans la classification de mes individus (je rappel que mon objectif est de faire une typologie de ceux ci).
    Olivier.Decourt me conseillait de faire une proc cluster method=twostage, mais je souhaitera tout de même faire une proc fastclus avant car ma base de données est très importante. Cependant je ne sais pas ce que je dois mettre comme variable pour ma fastclus, voici mon code actuel :


    Tout d'abord, dois je mettre quelques chose pour variables? En effet, vu qu'on utilise pour fastclus le tableau créé après la corresp dans lequel on ne retrouve pas les variables....mais seulement les "dim" "sqcos"...
    Dois je mettre mes variables que j'ai tout au début dans le input?
    Ou celle obtenue après discretisation?
    Ou celle obtenue après la proc transreg?


    Meric d'avance

    Cordialement,

    Gorgious

  10. #10
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Je mettrai celles après la discrétisation car elles sont homogènes il me semble.

    Sinon il faut réduire les initiales par la procédure STANDARD ou la procédure STDIZE, qui permet de remplacer les valeurs manquantes par la moyenne ou la médiane.

    Pour les indicatrices, elles servent à caractériser les classes d’individus en les représentant dans le plan factoriel des variables.

    Note que l’option DRIFT permet d’opter pour les k-means plutôt que les centres mobiles.

    Par contre, j'avais appris que le nombre de classes intermédiaires était égal à N^0.3, avec N = le nombre d'individus (critères de Wong). La valeur se met dans MAXC (ie. cela ne fera pas 100), sachant que ce nombre n’est pas forcément atteint avec DELETE = ? qui supprime les centres de classes auxquels sont rattachés un nombre ≤ à ? observations...

    Bonne soirée.

    PS : On ne fait pas une étape DATA par discrétisation. Tu peux toutes les regrouper.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    En fait j'ai testé les différentes solutions, et il ne fallait pas mettre les variables (par défaut SAS prenait ce qu'il fallait).

    Pour la proc cluster je n'ai eu aucun soucis, idem pour la proc discrim.

    Par contre pour la proc logistic, j'ai un petit probleme.
    En effet, je souhaite prédire les risques d'accidents corporel (nb_sin_cor), donc je suppose qu'il me faut obtenir le tableau permettant d'avoir la sensabilité, la spécificité ainsi que l taux de faux positifs et faux négatifs, mais je ne vois pas du tout comment organiser ma procédure.

    Merci d'avance.

    Cordialement,

    Gorgious

Discussions similaires

  1. Comment faire une PLS-DA sous SAS ?
    Par pantouflebdv dans le forum SAS STAT
    Réponses: 2
    Dernier message: 19/11/2012, 13h01
  2. Réponses: 4
    Dernier message: 20/06/2011, 15h36
  3. [EG] Faire une boucle dans SAS
    Par concalite dans le forum Outils BI
    Réponses: 2
    Dernier message: 17/03/2011, 20h22
  4. Faire un backup d'une table sas
    Par tropik972 dans le forum SAS Base
    Réponses: 7
    Dernier message: 07/03/2011, 16h27
  5. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 13h45

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