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 :

Scoring avec une regression linéaire


Sujet :

SAS STAT

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Scoring avec une regression linéaire
    Bonjour,

    Ma question peut paraitre simple mais je bloque.
    J'ai deux échantillon un d'apprentissage et un de validation. Je veux, parmi d'autre régressions, effectuer une régression linéaire. La variable cible est binéaire et les variables explicatives sont catégorielle.

    La proc reg ne marche pas puisque qu'elle ne prends pas en compte les variables catégorielles (ou alors il faudrait recoder manuellement).

    Il me reste la proc glm ou la proc GENMOD qui permettent de créer un tableau disjonctif automatiquement avec l'option class.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    proc genmod data = panel2Appr;
    class x1 x2 x3;
    Model y = x1 x2 x3;
    output out = sortielin p=predlin;
    run;
     
    proc glm data = panel2Appr outstat = out;
    class x1 x2 x3;
    Model y = x1 x2 x3;
    output out = sortielin2 p=predlin;
    run;

    Pour faire un scoring sur ma base de validation je passe par un proc score. Et problème le proc score ne marche par avec la proc Genmod. Et a priori la proc score ne marche pas avec les variables catégorielle (l'option class n'est pas possible).

    J'ai trouvé l'astuce ci dessous sur internet :

    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 one_two; 
    SET one /* dataset to compute coefficients */ two(in=jj) /*dataset to be scored */ ; 
    KEEP dsn y x1 x2 x3 ; 
    dsn='1'; 
    if jj=1 then DO; 
    dsn='2'; 
    y = .; 
    END;
     
    ods output obstats=obst; 
    ods exclude obstats ;
     
    PROC GENMOD DATA=one_two ; 
    CLASS dsn; * enter here so that it will appear in the obst dataset; 
    MODEL y = x1 x2 x3 / dist=normal obstats; 
    RUN;
     
    PROC PRINT DATA=obst ; 
    VAR dsn x1 x2 x3 y xbeta pred;
     RUN;

    Mais cela reste une astuce et je voudrais savoir si vous connaissez une solution plus propre à mon problème.

    Merci d'avance

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    J'ai à peu près le même problème et je me demandais quelles tables utilisez-vous dans l'astuce?
    Aussi, si vous avez trouvé une meilleure solution, je suis preneuse
    Merci

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    As tu essayé avec une proc PLM pour faire ton score après la GLM?
    Un code du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Proc GLM data=.....;
    class .....;
    model ....;
    store table_score;
     
    Proc PLM restore = table_score;
    score data=ta_table_de_validation out=resultat;
    run;
    Il y'a la proc GLMSELECT aussi qui peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Proc Glmselect data=.....;
    class .....;
    model .....;
    score data=ta_table_de_validation out=resultat p=pred r=residual;
    run;quit;

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Je travaille avec SAS 9.2 et malheureusement, la fonction store utilisée dans proc plm est sortie dans SAS 9.22...
    Pour ce qui est de l'option store dans proc glmselect, je crois qu'elle a aussi été développée plus tard, car lorsque je l'inclus dans ma procédure, elle est écrite en rouge et je n'ai pas de sortie.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    Hum c'est balo :p

    Si c'est dans SAS 9.2 ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    proc glmselect data=apprentissage valdata=validation testdata=table_test;
    class ....;
    model ...;
    output out ....;
    run;quit;
    En tout cas je l'espère !

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Quelles tables dois-je mettre pour valdata et testdata?

    Merci

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Dans data tu mets ta table d'apprentissage, dans Valdata tu mets ta table de validation et dans testdata tu mets ta table test (si toutefois tu en as une ! )

    Bonne journée

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup

Discussions similaires

  1. Calcul d'un score après une regression logistique
    Par pistol22 dans le forum SAS STAT
    Réponses: 18
    Dernier message: 16/09/2015, 12h17
  2. Regression linéaire avec incertitudes en x et y
    Par oliverjack dans le forum R
    Réponses: 0
    Dernier message: 17/03/2012, 20h40
  3. Score sur une regression logistique
    Par Just07 dans le forum SAS STAT
    Réponses: 0
    Dernier message: 19/05/2011, 11h14
  4. Réponses: 23
    Dernier message: 04/11/2010, 16h36
  5. Réponses: 0
    Dernier message: 21/03/2008, 13h51

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