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 :

Données manquantes : répartition aléatoire de deux modalités


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Points : 95
    Points
    95
    Par défaut Données manquantes : répartition aléatoire de deux modalités
    Bonjour à tous,

    Pour traiter des données manquantes je suis obligé de faire une imputation.
    J'aimerai savoir comment lorsque l'on a les proportions de deux modalités d'une variables, les répartir aléatoirement dans cette variable selon ces proportions ?
    Par exemple j'ai une variable sexe à deux modalités garçon et fille. tel que les proportions sont respectivement 45 % et 55 %. Si l'effectif de la variable sexe est de 100 avoir 45 garçons et 55 filles répartis aléatoirement. SVP

  2. #2
    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
    Juste pour être sur de bien comprendre: tu disposes d'une variable catégorielle à deux catégories comportant des données manquantes. Tu souhaites affecter une catégorie aléatoirement aux données manquantes en se basant sur les fréquences des données non manquantes. Est ce bien cela?

  3. #3
    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
    Salut.
    Une petite proposition parmi d'autres solutions : faire dénombrer les répartitions par une procédure Freq et ensuite créer un format qui habillera l'intervalle [0;1] pour faire correspondre aux différentes modalités, à partir de la répartition cumulée.
    On applique au final ce format à un générateur aléatoire, genre RAND ou RANUNI.
    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
    DATA work.class_trous ;
      SET sashelp.class ;
      IF sex="F" AND RAND("UNIFORM")>.4 THEN sex="" ;
      IF sex="M" AND RAND("UNIFORM")>.6 THEN sex="" ;
    RUN ; 
    /*****************************************************/
    %LET table = work.class_trous ;
    %LET var = sex ;
    ODS EXCLUDE ALL ;
    ODS OUTPUT oneWayFreqs = work.frequences ;
    PROC FREQ DATA=&table ;
      TABLE &var ;
    RUN ;
    ODS SELECT ALL ;
    DATA work.frequences (KEEP=fmtname start end type label) ;
      SET work.frequences ;
      RETAIN start ;
      fmtname = COMPRESS("&var._impute") ;
      type = "N" ;
      label = &var ;
      cumPercent = cumPercent / 100 ;
      IF _N_=1 THEN start = 0 ;
      end = cumPercent ;
      OUTPUT ;
      start=cumPercent ;
    RUN ;
    PROC FORMAT CNTLIN=work.frequences ;
    /*******************************************/
    /* Application pour imputer                                       */
    RUN ;
    DATA work.class ;
      SET work.class_trous ;
      IF MISSING(sex) THEN sex = PUT(RAND("UNIFORM"), sex_impute.) ;
    RUN ;
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Je vous remercie car votre programme a été pour moi une source d'inspiration.

    Cordialement Takout

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/05/2015, 18h16
  2. Répartition aléatoire de données
    Par lolo1960 dans le forum Access
    Réponses: 11
    Dernier message: 20/02/2014, 12h31
  3. [MySQL-5.1] Comparer deux BDD et mettre à jour les données manquantes
    Par flyght dans le forum Administration
    Réponses: 7
    Dernier message: 26/07/2013, 13h54
  4. Réponses: 0
    Dernier message: 31/05/2011, 19h13
  5. Remplacement données manquantes
    Par HurtMarley dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2006, 11h36

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