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 :

Exporter plusieurs résultats dans un fichier


Sujet :

SAS STAT

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Exporter plusieurs résultats dans un fichier
    Bonjour,

    Dans le cadre d'un projet, j'ai effectué une régression multiple entre chaque fond (au nombre de 2049) et plusieurs indices (11). Ainsi je sais, avec l'option stepwise, quel indice suit le fonds a,b,c, etc. Le problème est que SAS génère 2049 fichiers htm correspondant aux résultats de la régression pour les 2049 fonds. J'aimerais qu'il me génère un seul fichier (htm, txt ou xls) pour éviter d'étudier "à la main" les 2049 fichiers htm.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    %macro regression ;
    %do i = 2 %to 2050 %by 1 ;
    proc reg data=pfe.base11;
      model col&i = col2051 - - col2061 /selection=stepwise;
    run;
    %end ;
    %mend ;
    %regression;
    En vous remerciant par avance.

  2. #2
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    Avec les options de type out tu peux récupérer dans une table les valeurs qui t'intéresse.
    Après tu n'aura plus qu'à fusionner toutes tes tables de résultats.
    Fafabzh

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour l'idée, je n'y avais pas pensé...
    Le code ci-dessous effectue la régression multiple puis enregistre les résultats dans un tableau pfe.res[1..2050] puis je fusionne les 2050 tableaux dans la table pfe.fusion. Le problème maintenant est que je n'arrive pas à récupérer la valeur du r² de chaque indice. En effet, en utilisant l'option ADJRSQ, SAS me retourne la valeur du r² du modèle (contenant plusieurs indices) tandis que j'aimerais avoir la valeur du r² pour chaque indice composant le modèle retenu par la régression. Je pense que c'est possible car les fichiers résultats htm contiennent cette information (pièce jointe : dernier tableau, R carré partiel).

    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
     
    %macro regression ;
    %do i = 2 %to 2050 %by 1 ;
    proc reg data=pfe.base11 outest=pfe.sortie tableout ADJRSQ;
      model col&i = col2051 - - col2061 /selection=stepwise;
      proc sql ;
      	create table pfe.res&i as
    		select * from pfe.sortie where _type_='PARMS' OR _type_='PVALUE';
      quit;
    run;
    %end ;
    %mend ;
    %regression;
     
     
    data pfe.fusion;
    	Merge pfe.res2 pfe.res3;
    	By _DEPVAR_;
    Run;
     
    %macro together;
    %do i = 4 %to 2050 %by 1 ;
    	data pfe.fusion;
    		merge pfe.fusion pfe.res&i ;
    		by _DEPVAR_;
    		run;
    	%end ;
    %mend ;
    %together;
    P.S : J'espère avoir été assez clair...
    Fichiers attachés Fichiers attachés

  4. #4
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    Ce que tu veux c'est récupérer les valeurs te testant la significativité de chacun des paramètres de ton modèle final ou optimal (obtenu par stepwise) où le R² de chacun des modèles testé avec stepwise (par exemple model 1 : Y=ax1+bx2+c, stepwise ->Y=bx2+c ->Stepwise (fin car optimal) => tu aura donc ici 2 R²).
    Personnellement je ne vois pas l'utilité de récupérer les R² générés avec les stepwise, par contre je vois bien l'utilité de récupérer chaque R² (terminaux) des modèles pour sélectionner le meilleur.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je veux récupérer les valeurs de R² pour chaque paramètre du modèle optimal obtenu par la procédure stepwise (ces valeurs sont données dans le fichier htm joint dans le précédent message). Pourquoi? Parce-que je veux seulement le paramètre qui explique le mieux le fond et j'en veux qu'un seul (d'où l'intérêt d'avoir la valeur de R² pour chacun des paramètres car la p_value ne suffit pas à retenir telle ou telle variable).
    Merci.

  6. #6
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    Le R² est un critère globale de qualité d'un modèle et non pas un critère de qualité de chaque paramètre de ton modele.
    Dans ton exemple :

    Etape 1 : y=a11*COL2054 +b1=> R²=0.30
    Etape 2 : y=a21**COL2054 + a21*COL2054 + b2 =>R²=0.43
    D'après la procedure stepwise ton meilleur model est le modèle2 car il s'arrête.

    Retrospectievement :
    Ajout variable1 : R²=0.30
    Ajout variable2: 0.43-0.30=0.13

    Est-on d'accord là dessus!!

    Donc ce que tu veux toi c'est au final pour chaque modèle c'est le R² obtenu ainsi que les paramètres?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui je me suis mal exprimé...
    Je suis d'accord sur le fait que R² est un critère global de qualité d'un modèle.
    Ajout variable1 : R²=0.30
    Ajout variable2 : R²=0.13

    J'aimerais garder le modèle 1 car il ne contient qu'une variable et le R² obtenu par l'ajout de la variable1 est meilleur que lors de l'ajout de la variable2.

    Donc, en effet, je souhaiterai pour chaque modèle le R² obtenu ainsi que les estimations des paramètres.

  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 157
    Points
    16 157
    Par défaut
    Bonjour,
    Il me semble que ton programme doit marcher pour récuperer le R² et les coefficients du modèle en mettant juste :
    where _type_='PARMS'
    Dit moi ça
    a+
    Fafabzh

    PS : Ne pas oublier de cliquer sur Résolu si ça marche!

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Si je mets seulement "where _type_='PARMS'" j'aurais une seule ligne dans la table contenant les paramètres et le R² (en rajoutant _type_='PVALUE' je récupère également les p_values). Le problème est que SAS me retourne ces valeurs seulement pour le modèle optimal (dans mon exemple SAS choisit le modèle 2 qui contient 2 variables mais je voudrais qu'il me retourne chaque modèle et leur R² associé). Ainsi, j'aimerais que SAS me retourne le dernier tableau du fichier htm, celui qui résume la sélection des variables par le stepwise, dans une table.

    Ci joint un imprime écran de ce que j'obtiens pour le moment.
    Images attachées Images attachées  

  10. #10
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Si tu veux que les modèles à une variable pourquoi ne fais-tu pas un truc du style :
    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
     
    %macro regression ;
    %do i = 2 %to 2050 %by 1 ;
    %do j = 2051 %to 2060 %by 1 ;
    proc reg data=pfe.base11 outest=pfe.sortie tableout ADJRSQ;
      model col&i = col&j;
      proc sql ;
      	create table pfe.res&i as
    		select * from pfe.sortie where _type_='PARMS' ;
      quit;
    run;
    %end;
    %end ;
    %mend ;
    %regression;
    PS : J'ai pas testé le code

  11. #11
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Citation Envoyé par alexping77 Voir le message
    Oui je me suis mal exprimé...
    Je suis d'accord sur le fait que R² est un critère global de qualité d'un modèle.
    Ajout variable1 : R²=0.30
    Ajout variable2 : R²=0.13

    J'aimerais garder le modèle 1 car il ne contient qu'une variable et le R² obtenu par l'ajout de la variable1 est meilleur que lors de l'ajout de la variable2.

    Donc, en effet, je souhaiterai pour chaque modèle le R² obtenu ainsi que les estimations des paramètres.

  12. #12
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    J'insiste un peu mais sache que le modèle obtenu par l'ajout de la variable 2 est AU FINAL (0.43) meilleur que le modèle 1 (0.30).

    Bien évidemment le gain de R² entre les deux modèles (0.13) est inférieur à 0.30 (R² une sule variable) car la procédure stepwise cherche la variable la plus discriminante (meilleure R²) en premier puis ajoute les variables les plus discriminates en deux puis en trois ... et ainsi de suite avec une décroissance (relativemenent au modèle précédent) du R² <=> C'est la base de l'algorithme!!

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est vrai que l'algorithme du stepwise fonctionne comme cela mais, dans mon cas, j'ai des fonds OPCVM (produits financiers) et ils sont censés suivre un seul indice de référence c'est pourquoi je voulais seulement la variable dont le R² est optimal. Ton algo peut fonctionner (problème avec la proc sql car les résultats se superposent mais le traitement des R² reste délicat...) donc j'ai tout de même effectué une stepwise en me disant que la variable ayant la plus petite p_value ainsi qu'un R² est correct (valeur déterminée empiriquement) était discriminante. Merci beaucoup pour les différentes pistes que vous m'avez conseillés.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 13/10/2009, 13h53
  2. [QLI] exporter le résultat dans fichier texte ?
    Par SurfingJeff dans le forum Outils
    Réponses: 2
    Dernier message: 17/03/2009, 13h06
  3. exporter plusieurs feuilles dans un même fichier texte
    Par rom05 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/04/2008, 09h21
  4. Réponses: 5
    Dernier message: 07/03/2008, 11h44
  5. Réponses: 1
    Dernier message: 20/08/2007, 10h25

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