Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 13h32   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2011
Messages : 94
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 94
Points : 13
Points : 13
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
takout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h41   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
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?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h07   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
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 :
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
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 17h33   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2011
Messages : 94
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 94
Points : 13
Points : 13
Bonjour,

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

Cordialement Takout
takout est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h46.


 
 
 
 
Partenaires

Hébergement Web