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 :

Proc Format pour une proc logistic


Sujet :

Débutez

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Proc Format pour une proc logistic
    Salut à tous,

    Je suis un petit nouveau (en faite, je regarde et utilise depuis super longtemps le site mais je n'avais jamais sauté le pas)

    Je suis étudiant en math. Je début avec SAS, la documentation d'aide est pas mal faite et j'ai trouvé plusieurs réponses en cherchant sur le forum.

    Mais il y a quelque chose que je n'arrive pas à faire:

    Je fais une proc logistic sur des données de 1000 individu avec 8 variables (quali) avec une réponse binaire. Je voudrais faire un score (genre bancaire)

    Ma sortie logistique est bonne mais certains de mes modalités de variables ont des statistiques de Wald super basse. Je voudrais les regrouper (j'en ai plusieurs à regrouper).

    Par exemple: pour la variable age j'ai un catégorie (moins de 30 ans) qui se comporte comme une autre (celle de plus de 60 ans.... Ne me demande pas pourquoi^^)
    Comme elles sont très proches je voudrais pouvoir regrouper les deux modalités. Il semble que je doive utiliser la proc FORMAT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Proc format;
    value $age_cat
    'age <3','age_>6' ='<3060>';
    run;
    Je vois bien dans mon explorer dans Work mon format apparaitre. Puis je cherche à l'appliquer, et c'est surement là que je me plante:
    ma seule modification est dans format: le $age_cat. (pour utiliser le format)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    proc logistic data=apprent;
    class age_cat job marital education default housing loan euribor3m_cat  y
     / param=glm;
    model y = age_cat job marital education default housing loan  euribor3m_cat  
     / selection=stepwise sle=0.05 sls=0.05 ;
    score data=apprent out=apprent_score;
    score data=valid out=valid_score;
    format $age_cat. job marital education default housing loan euribor3m_cat ;
    run;
    J'ai essayé avec age_cat. ou $age_cat mais je ne trouve pas. Et c'est bien ça qui me déclenche une erreur.

    Est-ce que vous avez une idée? J'ai regardé sur internet et la documentation, je n'arrive pas à trouver une réponse (autre que le age_cat.)

    Je suis assez paumé là...

    En tout cas merci

    Salut

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Proc Format pour une proc logistic
    Bonjour,

    La syntaxe pour appliquer un format est format age_cat $age_cat.; dans une étape proc comme dans une étape data.

    Par ailleurs, attention vous avez écrit 'age <3' avec une espace et 'age_>6' avec un souligné.

    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci à toi mgdondon.

    En faite je viens d'essayer cette commande.

    Effectivement ça lance bien ma proc logistique mais ça n'a pas l'air d'appliquer correctement mes formats.

    Je m'explique: ça fonctionne mais je n'ai plus du tout ma variable age, comme si cela avait tuer ma variable. (Dans mon tableau de class level information ma catégorie age_cat n'a que 2 modalités).

    Est-ce que cela peut venir de ma proc format? ça à l'air d'être ça.
    Voila ce que donne la proc format quand j'ouvre l'explorer.
    Nom : SASformat.png
Affichages : 562
Taille : 8,4 Ko

    Le nombre de valeur semble me donner que 2 modalités. (normalement j'ai 5 modalités, en comptant celles que je veux regroupés)

    Est-ce que j'ai mal fait la commande format? (J'ai bien utilisée celle du premier message).

    Concernant les 'age <3' et 'age_>6' j'ai bien fait une erreur au moment de la saisie de la donnée (je le corrigerais surement une autre fois).

    Merci

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Proc Format pour une proc logistic
    Bonjour,

    Difficile de répondre en ne connaissant pas la structure de votre base. Votre format suppose que vous ayez défini une variable age_cat alphanumérique. Il faut définir un format numérique si vous voulez appliquer le format à une variable age numérique.

    Pouvez-vous fournir une étape data avec quelques observations pour pouvoir vous aider au mieux ?

    Cordialement,

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui bien sur.

    Voila mon étape data (le obs n'est là que pour me permettre de mettre en forme les données):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DATA bank;
    INFILE 'C:\Users\Ordi\Documents\Etude_R\Bank\banktest2.csv' dlm=';';
    INPUT Obs age_cat $ job $ marital $ education $ default $ housing $ loan $ euribor3m_cat $ y $;
    Drop Obs;
    if _N_=1 then delete;
    run;
    Ce qui va me donner des données sous cette forme (c'est bien la forme dans les sorties SAS):

    Nom : SAScat.jpg
Affichages : 417
Taille : 68,6 Ko

    (remarque: pour l'euribor3m_cat les modalités sont différentes mais commence toutes par "indice" par exemple :indice euribor 1.344<>4.857)

    Est-ce que le format est trop long et pose problème pour SAS (genre il ne va lire que les 10premiers caractères)?

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Proc Format pour une proc logistic
    Il n'est pas normal que vous ayez des guillemets. Je pense que vos données ont été mal importées ou votre fichier mal enregistré au format csv.

    Vous pouvez imprimer les 5 premières observations pour vérifier l'import :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    proc print data=bank (obs=5);
    run;
    Vous pouvez vérifier votre fichier csv en l'ouvrant dans un éditeur de texte.

    Pour l'application du format :

    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
    proc format;
      value $age_cat
      'age <3','age >6' ='<3060>';
    run;
     
    data test;
      input age_cat $6.;
      format age_cat $age_cat.;
      cards;
    age_50
    age_40
    age_40
    age <3
    ;
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    age_cat
    age_50
    age_40
    age_40
    <3060>
    Cordialement,

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Re,

    Bon, et bien je suis triste que ce soit aussi simple

    C'était effectivement ça. Il y avait des guillemets en trop.

    Je te remercie mgdondon.

    Bonne soirée.

    (edit: je vais mettre en résolu)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/01/2015, 10h48
  2. Vsualisation de résultat pour une proc logistic
    Par cococmoi dans le forum SAS STAT
    Réponses: 5
    Dernier message: 19/07/2012, 16h33
  3. aide pour une proc sql, occurence
    Par baboubl dans le forum SAS Base
    Réponses: 5
    Dernier message: 08/07/2010, 14h44
  4. array dans une proc report pour surligner certaines cellules
    Par debdev dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 26/06/2009, 15h31
  5. Réponses: 3
    Dernier message: 28/08/2007, 15h21

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