1 Comparaison de deux échantillons indépendants

Transcription

1 Comparaison de deux échantillons indépendants
Université de Montpellier 2
M2 MASS
TP2 : Introduction au logiciel SAS
Procédures statistiques pour l’analyse de 2 variables
1
Comparaison de deux échantillons indépendants
Dans cette partie du TP on considère, deux échantillons indépendants, et on cherche à répondre à la question : les deux échantillons sont-ils issus d’une même population ?
Pour chaque étudiant d’un cours de statistique, on relève trois valeurs : les résultats à un test
(Note sur 20), le nombre d’heures passées à regarder la télévision la semaine précédant le test
(tele) et le nombre d’heures passées à faire des exercices la semaine précédant le test (trav).
Manipulation des données
1. Télécharger les données matable.txt. Utilisez l’option @@ dans l’instruction INFILE permettant
de lire des données écrites à la suite sur une ligne. Utilisez un format d’écriture ne faisant apparaitre qu’un chiffre après la virgule pour la variable Note
2. Les 61 premières observations correspondent à des étudiants qui ont suivi les TD le lundi matin
et les suivantes le lundi après-midi. Rajoutez à chaque individu son groupe de TD. On utilisera
_N_ pour incrémenter la nouvelle variable groupe et une instruction IF ... THEN ... ELSE :
IF condition THEN var= ; ELSE var=;
3. Calculez pour chaque étudiant la somme des heures passées à regarder la télévision et des
heures passées à faire des exercices la semaine précédant le test.
Graphiques
On va utiliser la procédure GPLOT pour faire le graphique du nombre d’heures passées devant
la télévision en fonction du nombres d’heures passées à faire des exercices. La syntaxe est la
suivante :
SYMBOL1 i= v=circle color=green;
PROC GPLOT DATA =TableSAS;
PLOT Y*X;
TITLE ’blablablou’;
RUN;
QUIT;
L’instruction SYMBOL doit être définie avant l’appel du graphique. Cette instruction est toujours suivi d’un numéro accolé et les options sont mises à la suite, séparées par un espace. Ici la
ligne SYMBOL1 i= v=circle color=green; définit les symboles utilisés pour la première courbe :
i= signifie que les points ne sont pas reliés entre eux (i=join si on veut les relier) ; v=circle
signifie que les points sont représentés par un cercle, color=green pour la couleur. Mais il y a
beaucoup d’autres possibilités pour cette instruction. Il faut toujours rajouter l’instruction QUIT;
à la fin d’une procédure graphique pour que SAS sorte de la fenêtre graphique (alors que cela
n’est pas nécessaire pour d’autres procédures que nous avons déjà rencontrées).
Des instructions déclarées en dehors d’une procédure graphique sont valables pour toutes les
procédures graphiques tant qu’elles ne sont pas redéfinies. On décrit rapidement quatre instructions globales :
L’instruction AXIS suivie d’un nombre entre 1 et 99 dűeŕnit un a L’instruction AXIS accolée
d’un nombre entre 1 et 99 définit un axe qui ensuite pourra être utilisé dans tout le programme.
Exemple :
AXIS1 ORDER=(0 to 20 by 1) LABEL=(’Note’) WIDTH=3 COLOR=red ;
L’instruction SYMBOL accolée d’un nombre entre 1 et 99 définit un symbole qui représente un
point, le type de ligne reliant les points (couleur, continue, hachurée, pointillée), incluant barres,
boîtes à moustaches, escaliers, splines, intervalles de conŕance, rűegression (linűeaire, polynômiale,
spline). Exemple :
SYMBOL1 INTERPOL=box VALUE=diamond HEIGHT=3 W=2 C=orange ;
Les arguments possibles de l’option
- VALUE= square, circle, dot, star,...
- INTERPOL= box ou boxt (pour boite à moustaches), j ou join, r pour la régression, sm50s
pour le lissage spline, step pour une fonction en escalier.
L’instruction PATTERN suivi d’un nombre entre 1 et 99 définit le type de motif :
PATTERN1 C=yellow VALUE=solid ;
4. Représentez la variable Note en fonction du nombre d’heures passées à faire des exercices et en
fonction du nombre d’heures de TV sur le même graphique. On utilisera l’option OVERLAY dans
l’instruction PLOT de la procédure GPLOT pour superposer deux courbes.
Au vu des graphiques, peut-on penser qu’il y a corrélation entre les variables ?
5. On va utiliser la procédure CORR pour compléter l’analyse des graphiques :
PROC CORR DATA = TableSAS <options>;
VAR X1 X2 ... Xn;
RUN;
Il y a un nombre compris entre 0 et 1 sous chaque coefficient de corrélation ρij . Ce nombre
s’interprète comme la probabilité d’avoir une corrélation empirique > ρij dans le cas où les deux
variables sont non corrélées. L’option SPEARMAN calcule les coefficients de corrélation des rangs
de Spearman à la place de ceux de Pearson.
Comparaison de groupes
On cherche s’il y a ou non une influence du groupe de TD sur la note au test.
6. Avec la procédure UNIVARIATE, calculez les moments de l’échantillon complet et testez la
normalité des variables quantitatives. L’option NORMAL dans l’instruction HISTOGRAM ajuste une
densité gaussienne sur l’histogramme des données, ce qui permet également de juger visuellement
de la normalité des variables (en plus des 3 tests proposés).
PROC UNIVARIATE DATA = tableSAS;
VAR X1;
HISTOGRAM X1/ normal (color=blue) cbarline=black
cfill=orange
cframe=yellow;
RUN;
QUIT;
Prenez le temps de manipuler les différentes options graphiques de l’histogramme. Faites de même
pour chacun des deux groupes en rajoutant l’instruction CLASS ou l’instruction BY dans la procédure.
L’instruction BY variable ne peut être utilisée que si la table est triée selon la variable de groupe,
qui doit être qualitative (ceci peut être fait par la procédure SORT. Si vous ne voulez pas trier la
table, l’instruction BY doit être remplacée par l’instruction CLASS. Le but de ces instructions est
de calculer toutes les statistiques pour les sous-échantillons définis par les valeurs de la variable
de groupe.
Liste des statistiques calculées par UNIVARIATE
N le nombre d’observations,
Mean la moyenne empirique,
Sum Observations la somme des observations,
Std Deviation standard deviation s (écart-type) mais divisé par n-1,
Variance la variance,
Skewness le coeścient d’asymétrie,
Kurtosis le coeścient d’aplatissement,
Uncorrected SS la somme des carrés des observations,
Corrected SS la somme des observations centrées par la moyenne empirique,
Coeff Variation s/X̄.100%
√
Std Error Mean s/ n
Range l’étendue de la variable max − min,
Interquartile Range l’écart interquartile,
√
Student’s t la statistique du test de student t = nX̄/s pour tester µ = 0,
Sign M (N + − N − )/2, avec N + le nombre d’observation > 0, N − le nombre d’observation
< 0 : la statistique
M ed = 0,
P pour tester
2
Shapiro-Wilk
ai X(i) /ns2
Kolmogorov-Smirnov max|i/n − Fi |, où Fi = Φ((X(i) − X̄)/s), pour tester la normalité
Cramer-von Mises idem Kolmogorov mais avec une somme au lieu de max, mieux si il y
a des observations aberrantes, pour tester la normalité,
Anderson-Darling pour tester la normalité.
Pour tous les tests : si la p-value est petite (disons < 0,05), on rejette l’hypothèse nulle et on
accepte l’alternative. Dans le cas contraire (p-value ≥ 0, 05), on accepte l’hypothèse nulle.
7. On veut savoir si le groupe de TD (matin ou après midi) a une influence sur le score des
étudiants. La procédure BOXPLOT permet de tracer des boîtes à moustaches (ou Boxplot) pour
comparer graphiquement les deux distributions statistiques de plusieurs groupes :
PROC BOXPLOT DATA = tableSAS;
PLOT Var*VarClasse;
RUN;
QUIT;
8. Maintenant, on veut tester une différence éventuelle entre les groupes au niveau des moyennes
et des variances. Pour cela, si les variables sont gaussiennes, on utilise un test de Student d’égalité
des moyennes, avec la procédure TTEST et si elles ne le sont pas on utilise le test non-paramétrique
avec la procédure NPAR1WAY.
PROC TTEST DATA = nom_de_table;
CLASS variabledeclasse;
VAR X1 X2 ... Xn; /* uniquement numériques!!! */
RUN;
La procédure NPAR1WAY teste l’hypothèse nulle selon laquelle il n’y a pas de différence significative entre les groupes. L’option WILCOXON produit un test de Wilcoxon (test non-parmétrique
de rangs), et l’option MEDIAN produit un test de l’égalité des médianes dans les deux groupes.
L’option CLASS spécifie la variable de groupe à tester. L’option PLOTS= produit les boites à moustaches des rangs de Wilcoxon dans les deux groupes et la position de la médiane dans les deux
groupes à tester. L’option ods graphics est nécessaire dans cette procédure.
ods graphics on;
proc NPAR1WAY data=nom_de_table wilcoxon median
plots=(wilcoxonboxplot medianplot);
class variabledeclasse;
var X1 X2 ... Xn;
freq Freq;
run;
ods graphics off;
2
Liaisons entre 2 variables qualitatives
Tables de fréquences et tables de contingences
La couleur des yeux et des cheveux d’enfants de deux régions d’Europe différentes est donnée
dans le fichier Color.txt. Les données sont présentées sous forme de la distribution observée
conjointe des deux variables qualitatives (au lieu qu’une ligne corresponde à 1 enfants). Donc les
données sont des effectifs : la variable Count donne le nombre d’enfants possédant l’une des 15
modalités du couple (Eyes, Hair).
data Color;
input Region Eyes $ Hair $ Count @@;
label Eyes =’Eye Color’
Hair =’Hair Color’
Region=’Geographic Region’;
datalines;
1 blue fair
23 1 blue red
7 1
1 blue dark
11 1 green fair
19 1
1 green medium 18 1 green dark
14 1
1 brown red
5 1 brown medium 41 1
1 brown black
3 2 blue fair
46 2
2 blue medium 44 2 blue dark
40 2
2 green fair
50 2 green red
31 2
2 green dark
23 2 brown fair
56 2
2 brown medium 53 2 brown dark
54 2
;
RUN;
PROC FREQ DATA=nom_de_table <options1>;
BY nom_variable ...;
blue
green
brown
brown
blue
blue
green
brown
brown
medium
red
fair
dark
red
black
medium
red
black
24
7
34
40
21
6
37
42
13
/* Imprime des tables ou des tableaux différents pour les observations de chaque groupe.*/
TABLES ligne_var*col_var ... <options2>;
/* Produit les tables de fréquences et les tableaux de contingences demandés. */
WEIGHT nom_variable;
/* Identifie une variable dont les valeurs doivent être des entiers qui représentent
le nombre d’individus correspondants à chaque observation. Par défaut, chaque observation
vaut 1 dans le compte des fréquences.*/
RUN;
La procédure FREQ lit la table Color et crée une table de sortie qui contient les effectifs, les
pourcentages et les effectifs théoriques de la table de contingence. L’instruction TABLES produit :
un tableau des effectifs de Eyes, un tableau des effectifs de Hair, et un tableau croisé de Eyes
par Hair qui fournit : l’effectif conjoint, la fréquence conjointe (en pourcentage), les fréquences
conditionnelles en ligne et colonne (en pourcentage). L’option OUT= crée la table FreqCount
qui contient les effectifs marginaux observés. L’option OUTEXPECT fournit les effectifs théoriques
attendus sous l’hypothèse d’indépendance des variables Eyes et Hair. L’option SPARSE permet
d’inclure les cellules d’effectif égal à zéro. L’instruction WEIGHT spécifie que la variable Count
contient les effectifs.
proc freq data=Color;
tables Eyes Hair Eyes*Hair / out=FreqCount outexpect sparse;
weight Count;
run;
proc print data=FreqCount noobs;
run;
1. A l’aide des sorties générées par la procédure FREQ, répondre aux questions suivantes :
• Quelle est la taille de l’échantillon ?
• Combien de modalités compte la variable Eyes, la variable Hair ?
• Quel est le pourcentage d’enfants bruns aux yeux marrons ?
• Combien y a t’il de distributions conditionnelles de la variable Eyes ?
• Parmi les enfants bruns, quel est le pourcentage d’enfants aux yeux bleus ?
• Quel est le pourcentage d’enfants aux yeux marrons qui ont les cheveux clairs ?
Test d’indépendance du χ2
On cherche à mettre en évidence une éventuelle différence de la couleur des cheveux des enfants
selon la région. L’hypothèse à tester dans chacune des deux régions s’il n’y a pas de différence,
les distributions conditionnelles par région ne doivent pas être significativement différentes de la
distribution marginale de la variable Hair : 30% fair, 12% red, 30% medium, 25% dark, et 3%
black.
Pour tester l’hypothèse par région, on doit d’abord trier la table. Puis la procédure FREQ
avec l’instruction BY produit deux tableaux séparés pour chaque région. L’option ORDER=DATA
ordonne les modalités de la varible Hair. L’option NOCUM supprime les effectifs cumulés et les
poucentages. L’option CHISQ produit un test du χ2 d’adéquation. L’option TESTP= permet de
choisir les pourcentages théoriques que l’on souhaite tester. Enfin, L’option PLOTS= trace un
graphique de la déviation à l’hypothèse nulle associée avec l’option CHISQ . L’option TYPE=DOTPLOT
trace des points au lieu d’un diagramme en barre (par défaut). L’instruction ODS Graphics est
nécessaire pour produire les graphiques.
proc sort data=Color;
by Region;
run;
ods graphics on;
proc freq data=Color order=data;
tables Hair / nocum chisq testp=(30 12 30 25 3)
plots(only)=deviationplot(type=dotplot);
weight Count;
by Region;
run;
ods graphics off;
2. Conclure sur l’hypothèse testée.
3
Produire des diagrammes en barres, des diagrammes circulaires
Diagrammes en barres
A l’aide de la procédure GCHART, on réalise un diagramme en barres de la somme totale des
salaires en fonction de trois sites. La table totals contient les salaires trimestriels de 3 sites
(Paris, Sydney, Atlanta) pour différents départements.
goptions reset=all border;
/* cette option met une bordure autour du graphique */
DATA totals;
length dept $ 7 site $ 8;
input dept site quarter sales;
datalines;
Parts Sydney 1 7043.97
Parts Atlanta 1 8225.26
Parts Paris 1 5543.97
Tools Atlanta 4 3424.19
Tools Paris 4 6914.25
Parts Sydney 3 5142.63
Parts Atlanta 2 3529.06
Tools Sydney 4 1775.74
Tools Atlanta 4 3424.19
Repairs Sydney 2 5543.97
Repairs Atlanta 1 3788.93
Repairs Atlanta 2 4492.89
Repairs Atlanta 3 3914.25;
title "Total des Salaires";
proc GCHART data=totals;
format sales dollar8.;
block site / sumvar=sales;
run;
hbar site / sumvar=sales;
run; /* pour des barres horizontales */
vbar3d site / sumvar=sales;
run; /* pour des barres verticales en 3D */
quit;
On veut à présent représenter les salaires moyens par site et par département :
legend1 cborder=black
label=("Trimestre:")
position=(bottom right outside)
mode=protect
across=1;
proc GCHART data=totals;
format quarter roman.;
format sales dollar8.;
label site="00"x dept="00"x;
block site / sumvar=sales
type=mean
midpoints="Sydney" "Atlanta" "Paris"
group=dept
subgroup=quarter
legend=legend1
noheading;
run;
quit;
Diagramme en secteurs
On représente les salaires par site mais en utilisant un diagramme circulaire (ou en secteurs).
On peut utiliser l’option explode pour écarter un des secteurs.
goptions reset=all border;
data totals;
length dept $ 7 site $ 8;
input dept site quarter sales;
datalines;
Parts Sydney 1 7043.97
Parts Atlanta 1 8225.26
Parts Paris 1 5543.97
Tools Sydney 4 1775.74
Tools Atlanta 4 3424.19
Tools Paris 4 6914.25
;
title "Total Sales";
proc gchart data=totals;
format sales dollar8.;
pie site / sumvar=sales;
run;
pie3d site / sumvar=sales
explode="Paris";
run;
quit;

Documents pareils