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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
|
/*"conso" est la macro-variable à caractériser, on la remplace par le nom de la variable souhaitée dans l'appel de la macro, à la fin du programme */
%macro main (conso) ;
proc freq data=hc.budget_fam_men;
table &conso / out = hc.distribution;
run;
data hc.Pourcentage0;
set hc.distribution;
IF &conso=0; keep percent;
run;
data _NULL_; /* creation d'une table virtuelle */
set hc.Pourcentage0;
call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de la var dans le fichier source) */
run;
%if &percent > 90.0 %then %goto cas3;
data _NULL_; /* creation d'une table virtuelle */
set hc.Pourcentage0;
call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de la var dans le fichier source) */
run;
%if 75.0 <= &percent <= 90.0 %then %goto cas2;
data _NULL_; /* creation d'une table virtuelle */
set hc.Pourcentage0;
call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de la var dans le fichier source) */
run;
%if &percent < 75.0 %then %goto cas1;
%cas1 :
/*****************************************************************************************************************************/
/* debut de la macro pour le cas ou les consommateurs representent plus de 25% du total de la base. */
proc means data=hc.budget_fam_men Q3;
var &conso;
output out = hc.ProcMeansResults Q3=Q3;
run;
data hc.Q3;
set hc.ProcMeansResults;
keep Q3;
run;
/* création d'une variable globale prenant la valeur du q3 dans la table hc.q3 */
data _NULL_; /* creation d'une table virtuelle */
set hc.q3;
call symput ('quart3', q3); /* call symput ('nom de la variable globale a créer', nom de la var dans le fichier source) */
run;
data hc.budget_fam_men;
set hc.budget_fam_men;
ATTRIB VarBin label="Variable Binarisée";
if &conso < &quart3 then do; VarBin = 0;
end;
else do; VarBin = 1;
end;
run;
ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au format word */
proc logistic data=hc.budget_fam_men DESCENDING;
class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob=0.25 selection=backward;
run;
quit;
ods rtf close; /* fin de balise de sortie des résultats au format word */
%goto fin;
%cas2 :
/*****************************************************************************************************************************/
/* progr pour le cas ou il y a entre 10% et 25% de consommateurs */
/* attribue varbin=0 si la consommation est de 0, et 1 sinon. Ainsi on binarise la variable en attribuant "1" aux consommateurs et "0" aux non consommateurs */
data _NULL_; /* creation d'une table virtuelle */
set hc.pourcentage0;
call symput ('pprob', (100-percent)); /* call symput ('nom de la variable globale a créer', nom de la var dans le fichier source) */
run;
data hc.budget_fam_men;
set hc.budget_fam_men;
ATTRIB VarBin label="Variable Binarisée";
if &conso = 0 then do; VarBin = "0";end;
else do; VarBin = "1";end;
run;
ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au format word */
proc logistic data=hc.budget_fam_men DESCENDING;
class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob= &pprob selection=backward;
run;
quit;
ods rtf close; /* fin de balise de sortie des résultats au format word */
%goto fin;
%cas3 :
/****************************************************************************************************************************/
/* programme pour le cas ou les consommateurs representent moins de 10% du total de la base */
data hc.tablebinaire2;
set hc.pourcentage0;
attrib Consos label="total des consommateurs" format=12.2;
Consos = 10305 * (100-percent) / 100;
run;
data hc.tablebinaire3;
set hc.tablebinaire2;
attrib newtotal label="total individus virtuels avec la pondération" format=12.2;
attrib ConsosPond label="Total des consommateurs avec la pondération" format=12.2;
attrib coeff label="pondération" format=12.5;
newtotal = 10305 / (100-percent)* 10;
ConsosPond = newtotal / 10;
coeff = ConsosPond / Consos;
run;
data hc.budget_fam_men;
set hc.budget_fam_men;
ATTRIB VarBin label="Variable Binarisée";
if &conso = 0 then do; VarBin = "0";end;
else do; VarBin = "1";end;
run;
ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au format word */
proc logistic data=hc.budget_fam_men DESCENDING;
class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob=.10 selection=backward;
run;
quit;
ods rtf close; /* fin de balise de sortie des résultats au format word */
%fin :
%mend main;
%main(c03);[/COLOR]
[COLOR="Blue"]
6891
6892
6893 /*"conso" est la macro-variable à caractériser, on la remplace par le nom de la variable
6893! souhaitée dans l'appel de la macro, à la fin du programme */
6894
6895 %macro main (conso) ;
6896
6897 proc freq data=hc.budget_fam_men;
6898 table &conso / out = hc.distribution;
6899 run;
6900
6901 data hc.Pourcentage0;
6902 set hc.distribution;
6903 IF &conso=0; keep percent;
6904 run;
6905
6906 data _NULL_; /* creation d'une table virtuelle */
6907 set hc.Pourcentage0;
6908 call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de
6908! la var dans le fichier source) */
6909 run;
6910
6911 %if &percent > 90.0 %then %goto cas3;
6912
6913 data _NULL_; /* creation d'une table virtuelle */
6914 set hc.Pourcentage0;
6915 call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de
6915! la var dans le fichier source) */
6916 run;
6917
6918 %if 75.0 <= &percent <= 90.0 %then %goto cas2;
6919
6920 data _NULL_; /* creation d'une table virtuelle */
6921 set hc.Pourcentage0;
6922 call symput ('percent', percent); /* call symput ('nom de la variable globale a créer', nom de
6922! la var dans le fichier source) */
6923 run;
6924
6925 %if &percent < 75.0 %then %goto cas1;
6926
6927 %cas1 :
6928 /***********************************************************************************************
6928! ******************************/
6929 /* debut de la macro pour le cas ou les consommateurs representent plus de 25% du total de la
6929! base. */
6930 proc means data=hc.budget_fam_men Q3;
6931 var &conso;
6932 output out = hc.ProcMeansResults Q3=Q3;
6933 run;
6934 data hc.Q3;
6935 set hc.ProcMeansResults;
6936 keep Q3;
6937 run;
6938
6939 /* création d'une variable globale prenant la valeur du q3 dans la table hc.q3 */
6940 data _NULL_; /* creation d'une table virtuelle */
6941 set hc.q3;
6942 call symput ('quart3', q3); /* call symput ('nom de la variable globale a créer', nom de la
6942! var dans le fichier source) */
6943 run;
6944
6945 data hc.budget_fam_men;
6946 set hc.budget_fam_men;
6947 ATTRIB VarBin label="Variable Binarisée";
6948 if &conso < &quart3 then do; VarBin = 0;
6949 end;
6950 else do; VarBin = 1;
6951 end;
6952 run;
6953
6954
6955 ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au format word
6955! */
6956 proc logistic data=hc.budget_fam_men DESCENDING;
6957 class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
6958 model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob=0.25
6958! selection=backward;
6959 run;
6960 quit;
6961 ods rtf close; /* fin de balise de sortie des résultats au format word */
6962
6963 %goto fin;
6964
6965 %cas2 :
6966 /***********************************************************************************************
6966! ******************************/
6967 /* progr pour le cas ou il y a entre 10% et 25% de consommateurs */
6968 /* attribue varbin=0 si la consommation est de 0, et 1 sinon. Ainsi on binarise la variable en
6968! attribuant "1" aux consommateurs et "0" aux non consommateurs */
6969
6970 data _NULL_; /* creation d'une table virtuelle */
6971 set hc.pourcentage0;
6972 call symput ('pprob', (100-percent)); /* call symput ('nom de la variable globale a
6972! créer', nom de la var dans le fichier source) */
6973 run;
6974
6975 data hc.budget_fam_men;
6976 set hc.budget_fam_men;
6977 ATTRIB VarBin label="Variable Binarisée";
6978 if &conso = 0 then do; VarBin = "0";end;
6979 else do; VarBin = "1";end;
6980 run;
6981
6982 ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au format
6982! word */
6983 proc logistic data=hc.budget_fam_men DESCENDING;
6984 class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
6985 model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob=
6985! &pprob selection=backward;
6986 run;
6987 quit;
6988 ods rtf close; /* fin de balise de sortie des résultats au format word */
6989
6990 %goto fin;
6991
6992 %cas3 :
6993 /***********************************************************************************************
6993! *****************************/
6994 /* programme pour le cas ou les consommateurs representent moins de 10% du total de la base */
6995
6996 data hc.tablebinaire2;
6997 set hc.pourcentage0;
6998 attrib Consos label="total des consommateurs" format=12.2;
6999 Consos = 10305 * (100-percent) / 100;
7000 run;
7001
7002 data hc.tablebinaire3;
7003 set hc.tablebinaire2;
7004 attrib newtotal label="total individus virtuels avec la pondération" format=12.2;
7005 attrib ConsosPond label="Total des consommateurs avec la pondération" format=12.2;
7006 attrib coeff label="pondération" format=12.5;
7007 newtotal = 10305 / (100-percent)* 10;
7008 ConsosPond = newtotal / 10;
7009 coeff = ConsosPond / Consos;
7010 run;
7011
7012 data hc.budget_fam_men;
7013 set hc.budget_fam_men;
7014 ATTRIB VarBin label="Variable Binarisée";
7015 if &conso = 0 then do; VarBin = "0";end;
7016 else do; VarBin = "1";end;
7017 run;
7018
7019 ods rtf body="C:\Docs Alex\sortiesMacro"; /* balise de sortie des resultats au
7019! format word */
7020 proc logistic data=hc.budget_fam_men DESCENDING;
7021 class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
7022 model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB /
7022! pprob=.10 selection=backward;
7023 run;
7024 quit;
7025 ods rtf close; /* fin de balise de sortie des résultats au format word */
7026
7027 %fin :
7028 %mend main;
7029 %main(c03);
MPRINT(MAIN): proc freq data=hc.budget_fam_men;
MPRINT(MAIN): table c03 / out = hc.distribution;
MPRINT(MAIN): run;
NOTE: 10305 observations copiées de la table HC.BUDGET_FAM_MEN.
NOTE: La table HC.DISTRIBUTION a 3589 observations et 3 variables.
NOTE: La procédure FREQ a utilisé :
temps réel 0.18 secondes
temps processeur 0.18 secondes
MPRINT(MAIN): data hc.Pourcentage0;
MPRINT(MAIN): set hc.distribution;
MPRINT(MAIN): IF c03=0;
MPRINT(MAIN): keep percent;
MPRINT(MAIN): run;
NOTE: 3589 observations copiées de la table HC.DISTRIBUTION.
NOTE: La table HC.POURCENTAGE0 a 1 observations et 1 variables.
NOTE: L'étape DATA a utilisé :
temps réel 0.01 secondes
temps processeur 0.00 secondes
MPRINT(MAIN): data _NULL_;
MPRINT(MAIN): set hc.Pourcentage0;
MPRINT(MAIN): call symput ('percent', percent);
MPRINT(MAIN): run;
NOTE: Valeurs numériques converties en alphanumériques valeurs aux endroits donnés par :
(Ligne):(Colonne).
1:215
NOTE: 1 observations copiées de la table HC.POURCENTAGE0.
NOTE: L'étape DATA a utilisé :
temps réel 0.01 secondes
temps processeur 0.01 secondes
MPRINT(MAIN): data _NULL_;
MPRINT(MAIN): set hc.Pourcentage0;
MPRINT(MAIN): call symput ('percent', percent);
MPRINT(MAIN): run;
NOTE: Valeurs numériques converties en alphanumériques valeurs aux endroits donnés par :
(Ligne):(Colonne).
3:63
NOTE: 1 observations copiées de la table HC.POURCENTAGE0.
NOTE: L'étape DATA a utilisé :
temps réel 0.01 secondes
temps processeur 0.01 secondes
MPRINT(MAIN): data _NULL_;
MPRINT(MAIN): set hc.pourcentage0;
MPRINT(MAIN): call symput ('pprob', (100-percent));
MPRINT(MAIN): run;
NOTE: Valeurs numériques converties en alphanumériques valeurs aux endroits donnés par :
(Ligne):(Colonne).
5:91
NOTE: 1 observations copiées de la table HC.POURCENTAGE0.
NOTE: L'étape DATA a utilisé :
temps réel 0.00 secondes
temps processeur 0.00 secondes
MPRINT(MAIN): data hc.budget_fam_men;
MPRINT(MAIN): set hc.budget_fam_men;
MPRINT(MAIN): ATTRIB VarBin label="Variable Binarisée";
MPRINT(MAIN): if c03 = 0 then do;
MPRINT(MAIN): VarBin = "0";
MPRINT(MAIN): end;
MPRINT(MAIN): else do;
MPRINT(MAIN): VarBin = "1";
MPRINT(MAIN): end;
MPRINT(MAIN): run;
NOTE: Valeurs alphanumériques converties en numériques valeurs aux endroits donnés par :
(Ligne):(Colonne).
6:20 6:55
NOTE: 10305 observations copiées de la table HC.BUDGET_FAM_MEN.
NOTE: La table HC.BUDGET_FAM_MEN a 10305 observations et 495 variables.
NOTE: L'étape DATA a utilisé :
temps réel 4.96 secondes
temps processeur 0.39 secondes
MPRINT(MAIN): ods rtf body="C:\Docs Alex\sortiesMacro";
NOTE: Écriture du fichier Corps RTF : C:\Docs Alex\sortiesMacro
MPRINT(MAIN): proc logistic data=hc.budget_fam_men DESCENDING;
MPRINT(MAIN): class TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB;
MPRINT(MAIN): model VarBin = REVACT2 TAGEPR SEXEPR GCS2PR SITLOG STALOG TYPMEN1 CC NBPHAB / pprob=
84.900533721 selection=backward;
MPRINT(MAIN): run;
NOTE: PPROB= ignored.
NOTE: PROC LOGISTIC is modeling the probability that VarBin=1.
NOTE: Convergence criterion (GCONV=1E-8) satisfied in Step 0.
NOTE: Convergence criterion (GCONV=1E-8) satisfied in Step 1.
NOTE: 10305 observations copiées de la table HC.BUDGET_FAM_MEN.
NOTE: La procédure LOGISTIC a utilisé :
temps réel 1.17 secondes
temps processeur 1.13 secondes
MPRINT(MAIN): quit;
MPRINT(MAIN): ods rtf close; |
Partager