* Travail sur des données agrégées ; * sortie de tableau multiple ; * comparaison Logit versus tableau croisé ; * initiation ODS ; options formdlim="-"; data in (keep = genre anciennete acheteur non_acheteur total pct_acheteur ) in1 (keep = genre anciennete achat effectif) ; input genre $ anciennete $ acheteur non_acheteur ; total= acheteur+non_acheteur ; pct_acheteur= acheteur / total ; output in ; achat=1 ; effectif= acheteur ; output in1; achat=0 ; effectif=non_acheteur ; output in1; cards ; Femme mois6 291 3424 Femme mois12 138 3210 Homme mois6 324 2508 Homme mois12 240 2508 ; * Comparez les sorties ; *====================================================================*; proc print data=in ; title3 "Data in "; run; proc print data=in1 ; title3 "Data in1 "; run; * IC proportion pour toute la population ; *====================================================================*; proc freq data=in1 ; weight effectif ; tables achat / binomial (level="1"); title3 "IC de confiance d'une proportion "; run; * test de la différence par rapport à une proportion de référence ; *====================================================================*; proc freq data=in1; weight effectif ; tables achat /testp=(90, 10) ; * la somme doit faire 100 ! ; title3 "Comparaison d'une proportion à une norme 90/10%"; run; * proportion selon une variable de classification ; *====================================================================*; proc sort data=in1 ; by genre ; proc freq data=in1; weight effectif ; by genre ; tables achat / binomial (level="1"); title3 "Proportion test binomial "; run; * utiliser un test de comparaison de moyenne pour une proportion ? Oui ! ; * la difference de proportion se teste avec un test en Z ; * la différence de moyenne avec un test en t ; * mais si n est grand (n>30) les deux tests convergent rapidement ; *====================================================================*; proc means data=in1 n mean std uclm lclm; freq effectif ; var achat ; title3 "Moyenne d'une proportion "; run; proc means data=in1 n mean std uclm lclm; freq effectif ; by genre ; var achat ; title3 "Moyenne d'une proportion par genre "; run; proc ttest data=in1 ; freq effectif ; class genre ; var achat ; title3 "Test en t d'une proportion (si n grand (>30)"; run; * etude de la relation avec Freq ; *====================================================================*; proc freq data=in1; weight effectif; tables genre*achat / chisq nocol nopercent ; title3 "Tableau croisé "; run; * etude de la relation avec une logistique ; *====================================================================*; proc logistic data=in1 ; class genre ; freq effectif ; model achat(event="1")= genre ; title3 "Régression logistique d'une proportion avec le genre "; run; * etude de la relation avec une logistique avec ROC ; *====================================================================*; ODS graphics on ; Proc logistic data=in1 ; freq effectif ; class genre anciennete; model achat (event="1") = genre anciennete / RSQUARE LACKFIT EXPB /* test du modèle par les déciles H&S test */ CTABLE pevent=0.0784 pprob=(0.00 to 0.30 by 0.025) OUTROC=data_roc; output out=data_out p=prob; graphics roc; title3 "Régression logistique d'une proportion genre et ancienneté "; run; ods graphics off ; proc print data=data_out (obs=10); title3 "Print Data_out "; run; proc print data=data_roc ; title3 "Print Data_roc "; run; *************** courbe ROC seule *************************; proc gplot data=data_roc ; plot _sensit_*_1mspec_ ; title3 "Courbe ROC ";