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 Base Discussion :

Calcul d'un coefficient de pondération


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Calcul d'un coefficient de pondération
    Salut à tous,


    J'ai construit une base avec en colonne les résultats du tri à plat d'une variable trimestrielle. J'ai donc comme colonnes:
    Modalités /Pourcentage au trimestre 1 [PERCENT1] /Effectifs au trimestre1[FREQUENCY1]/Effectifs cumulés au trimestre 1[CUMFREQUENCY1]pourcentage au trimestre 2/Effectifs au trimestre 2 etc...

    Pour calculer une moyenne annuelle, il faudrait que je la pondère par le poids de l'effectif total de chaque trimestre par rapport aux autres. Je dois donc faire calculer ce coefficient à SAS en utilisant des infos inclues dans la base qui contient les résultats de mes tris à plat.
    L'idée serait de mettre au point une procédure automatisée: j'ai des dizaines de variables à traiter, et je n'ai pas du tout envie de faire des dizaines de moyennes sous excel

    J'imagine qu'il faudrait utiliser un CALL SYMPUT, mais je n'arrive pas à en sortir quelque chose...

    Merci beaucoup pour le coup de main!

    B/L

  2. #2
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Suggestion pour qu'on puisse plus facilement t'aider.
    Du début de ton explication, j'ai fait une table d'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    data donnees_par_trimestre ;
        input MODALITE $                         
              PERCENT1 FREQUENCY1 CUMFREQUENCY1 
              PERCENT2 FREQUENCY2 CUMFREQUENCY2 
              PERCENT3 FREQUENCY3 CUMFREQUENCY3 
              PERCENT4 FREQUENCY4 CUMFREQUENCY4 ;
        cards ;                           
            A    10 1 1    10 1 2    10 1 3    70 7 10
            B    40 4 4    30 3 7    20 2 9    10 1 10 
            ;
    run ;
    Est-ce que ça correspond à ce que tu décris ?
    Peux tu illuster, de même, la suite de ton problème, avec un exemple "fictif", mais qui tourne sous SAS ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Effectivement, j'aurais du le préciser: CUMFREQ correspond aux pourcentages cumulés en colonne.

    Ce qui fait donc:

    DATA donnees_par_trimestre ;
    input MODALITE $
    PERCENT1 FREQUENCY1 CUMFREQUENCY1
    PERCENT2 FREQUENCY2 CUMFREQUENCY2
    PERCENT3 FREQUENCY3 CUMFREQUENCY3
    PERCENT4 FREQUENCY4 CUMFREQUENCY4 ;
    cards ;
    A 10 1 1 30 6 6 40 8 8 10 1 1
    B 40 4 5 30 6 12 20 4 12 10 1 2
    C 50 5 10 40 8 20 40 8 20 80 8 10
    ;
    run ;


    J'aimerais calculer des pourcentages pondérés par le poids de chaque trimestre dans la population totale.
    Mon coefficient serait donc de la forme:

    COEFF1= (CUMFREQUENCY1 where MODALITE=C) / (CUMFREQUENCY1 where MODALITE=C + CUMFREQUENCY2 where MODALITE=C + ... + CUMFREQUENCY4 were MODALITE=C)
    puisque j'ai la fréquence totale de chaque trimestre dans la colonne CUMFREQUENCY de la ligne correspondant à la dernière modalité.

    Au final, j'utiliserai ce coeff pour créer 4 nouvelles colonnes: WFREQUENCY1, WFREQUENCY2,... WFREQUENCY4.

    Si quelqu'un peut m'aider à coder ce coeff, ça me dépannerait bien...

    Merci!

  4. #4
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Bonjour,

    si j'ai bien compris ton problème, tu souhaites, pour chaque trimestre, sommer toutes les modalités de ta variable, et rapporter cette somme à celle de tous les trimestres et toutes modalités. Merci de préciser ta demande si ce n'est ps le cas. (dans ce as, tu peux aussi préciser la solution que tu veux obtenir pour ton exemple?)

    En utilisant les fréquences cumulées et conservant la dernière ligne de la table créée, une solution est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    proc sql;
    create table COEF as
    select *,  
    	CUMFREQUENCY1/sum(CUMFREQUENCY1,CUMFREQUENCY2,CUMFREQUENCY3,CUMFREQUENCY4) as WFREQUENCY1,
    	CUMFREQUENCY2/sum(CUMFREQUENCY1,CUMFREQUENCY2,CUMFREQUENCY3,CUMFREQUENCY4) as WFREQUENCY2,
    	CUMFREQUENCY3/sum(CUMFREQUENCY1,CUMFREQUENCY2,CUMFREQUENCY3,CUMFREQUENCY4) as WFREQUENCY3,
    	CUMFREQUENCY4/sum(CUMFREQUENCY1,CUMFREQUENCY2,CUMFREQUENCY3,CUMFREQUENCY4) as WFREQUENCY4
    from DONNEES_PAR_TRIMESTRE
    group by MODALITE
    ;
    quit;
    Maintenant je n'utliserais pas les fréquences cumulées, c'est toujours mieux de partir des valeurs brutes..

    Je te propose le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    proc sql;
    create table COEF2 as
    select 
    	sum(FREQUENCY1)/sum(sum(FREQUENCY1),sum(FREQUENCY2),sum(FREQUENCY3),sum(FREQUENCY4)) as WFREQUENCY1,
    	sum(FREQUENCY2)/sum(sum(FREQUENCY1),sum(FREQUENCY2),sum(FREQUENCY3),sum(FREQUENCY4)) as WFREQUENCY2,
    	sum(FREQUENCY3)/sum(sum(FREQUENCY1),sum(FREQUENCY2),sum(FREQUENCY3),sum(FREQUENCY4)) as WFREQUENCY3,
    	sum(FREQUENCY4)/sum(sum(FREQUENCY1),sum(FREQUENCY2),sum(FREQUENCY3),sum(FREQUENCY4)) as WFREQUENCY4
    from DONNEES_PAR_TRIMESTRE
    ;
    quit;
    Manoutz

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    C'est exactement ça! Je cherchais trop loin, et j'ai oublié la bonne vieille SQL

    Merci!

Discussions similaires

  1. Calcul d'un coefficient de diffusivité thermique
    Par Newenda dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 04/08/2010, 16h46
  2. calcul moyene avec coefficient
    Par siham-gh dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/09/2009, 13h06
  3. Calcul moyenne avec coefficient
    Par dharth dans le forum Débuter
    Réponses: 14
    Dernier message: 17/07/2009, 19h10
  4. Calcul de Mel Frequency Cepstral Coefficient mfcc
    Par imene_t1 dans le forum Traitement du signal
    Réponses: 2
    Dernier message: 12/04/2009, 22h43
  5. Calculer les coefficients de distorsion
    Par yan dans le forum OpenCV
    Réponses: 1
    Dernier message: 02/08/2007, 20h28

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