[ Retour aux Travaux Dirigés de SAS ]
/* Statistiques avec SAS, Corrigé du TD 4 */
/* Jean-Sebastien Roy (js@jeannot.org), 2000-2001 */
/* test d'égalité de moyennes */
%let chemin=//diamant/Data Mi2/sas/stats;
libname tables "&chemin/tables";
/* On selectione les observations interessantes et on trie par wday
L'option keep= permet de ne garder que certaines variables
*/
proc sort tables.q0cal q0calt( q0 wday) ;
where tday in ('O') and wday in (4,5);
by wday;
run;
proc format;
value jour
1='Dimanche'
2='Lundi'
3='Mardi'
4='Mercredi'
5='Jeudi'
6='Vendredi'
7='Samedi'
;
run;
/* On teste la normalité de q0 par jour de la semaine
Noter l'utilisation d'un format local à la procédure.
*/
proc univariate q0calt ;
format wday jour.;
var q0;
by wday;
run;
/* La p-Value est << 0.05 : on refuse "H0 : q0 est normal" */
/* Mais le test de student est robuste :
bcp d'obs, ne pas se préocuper des lois ni des variances */
/* Avec Insight */
proc insight q0calt;
by wday;
dist q0;
run;
proc ttest q0calt;
format wday jour.;
class wday;
var q0;
run;
/* Verification experimentale du theoreme central limite */
/* Représentation des distributions */
data dist; /* tirage de variables selon 3 lois */
obs=100000;
do i=1 to obs;
uni=ranuni(0);
exp=ranexp(0);
cau=rancau(0);
output;
end;
keep uni exp cau;
run;
proc insight dist ; /* distribution des variables uni, exp et cau */
dist uni exp cau;
run;
data tcl; /* tirage de moyennes de variables iid */
obsm=5000;
obs=1000;
do i=1 to obsm;
uni=0;exp=0;cau=0;
do j=1 to obs;
uni=uni+ranuni(0); /* ranuni -> E=1/2 V=1/12 */
exp=exp+ranexp(0);
cau=cau+rancau(0);
end;
unistd=((uni/obs)-0.5)*sqrt(obs*12); /* ~> LG(0,1) */
output;
end;
keep uni unistd exp cau;
run;
proc univariate tcl ; /* test de normalité pour uni, unistd, exp et cau */
var uni unistd exp cau;
run;
proc insight tcl; /* distribution des variables uni, unistd, exp et cau */
dist uni exp cau;
run;
/* Mise en forme dans un Tableau pour excel */
data q0xl1;
set tables.q0;
datepart(dtu);
tp=timepart(dtu);
dh=hour(tp)*2+minute(tp)/30;
format date ddmmyy10.;
keep date dh q0;
run;
proc transpose q0xl1 q0xl(_name_) DH_;
by date;
var q0;
id dh;
run;