|
info-dec.com
Pays:
| Inscrit le: 29 Oct 2006 |
| Messages: 174 |
| Localisation: France |
|
 |
| Posté le: Dim 08 Avr, 2007 02:33 |
|
 |
 |
 |
 |
Voilà une macro pour faire de l'échantillonnage stratifié:
Cette macro est prise de cette page web du blog de BI de M. Renaud Harduin
http://bi-art.over-blog.com/article-60861.html
/*******************************************************************/
/* NOM/NAME : ECH_ALEA.SAS */
/* */
/* TYPE : MACRO */
/* */
/* OBJET/OBJECT : + Tirer un ecantillon stratifié */
/* en suivant une ou des variables */
/* de classification. */
/* + To get a stratified sample using */
/* class variables. */
/* */
/* PARAMETRES/PARAMETERS : */
/* + DATA : - Table en entrée. */
/* - Input dataset. */
/* */
/* + OUT : - Table en sortie contenant l échantillon. */
/* - Output dataset containing the sample. */
/* */
/* + LEVEL : - Nombre d observation dans la table de sortie */
/* - Number of obsevations in the output dataset */
/* */
/* + CLASS : - Liste de variables constituant les strates */
/* - Variables list constituting strats. */
/* */
/* OBSERVATION : - Seul CLASS est un paramètre optionnel */
/* - Only CLASS parameter is optional */
/* */
/* DATE : 10 NOV 1999 */
/* */
/* EX : %ECH_ALEA ( data = SASUSER.CRIME , */
/* out = WORK.DEMO , */
/* level = 100 , */
/* class = COUNTRY */
/* ); */
/* */
/* CONTACT : Renaud Harduin r.harduin@abs-technologies.com */
/*******************************************************************/
%macro ECH_ALEA ( DATA = ,
OUT = ,
LEVEL = ,
CLASS =
);
/* Calcul du nombre de ligne de la table entrée */
option nomprint;
data _null_;
DSID = open("&DATA");
NBLIGNE = ATTRN (DSID , 'NOBS');
call symput ('NBLIGNE' , NBLIGNE);
RC = close(DSID);
run;
data &OUT;
set &DATA ;
ALEA = ranuni (0);
TXSOND = int ( &NBLIGNE / &LEVEL);
run;
proc sort data = &OUT ;
by &CLASS ALEA;
run;
data &OUT ;
set &OUT ;
TIRE = ( mod(_n_ , TXSOND ) = 0);
if TIRE;
run;
%put +----------------------- ECH_ALEA -------------------------------+;
%put | tire un echantillon stratifié. |;
%put | create a stratified sample |;
%put | contact : Renaud Harduin - r.harduin@abs-technologies.com |;
%put +-------------------------------------------- 10 NOV 1999 -------+;
%mend;
%ECH_ALEA(DATA=Global,OUT=glob,LEVEL=1000,CLASS=F1);
|
|
|