Cours de SAS – Séance 3 (16 décembre 2008) Statistique descriptive et inferentielle - PROC UNIVARIATE, CORR - PROC FREQ - PROC GCHART Exemple 1 : 1. Ouvrez la table SAS Température. Si elle est déjà crée, utiliser une instruction LIBNAME, sinon, importer le fichier « temperature.txt ». filename donnees 'F:\ecole-doct\cours3\temperatures.txt'; data temperature; infile donnees firstobs=5; input annee mois precipitations temperature; run; 2. Tracer les histogrammes des variables Précipitations et Température et tester la normalité de ces deux variables. PROC UNIVARIATE La procédure UNIVARIATE produit des statistiques descriptives, des graphiques et des tests permettant de caractériser la distribution d’une ou plusieurs variables numériques continues (ou avec un très grand nombre de modalités). Pour résumer, la sortie de la procédure peut contenir : a. Les statistiques descriptives usuelles pour caractériser la distribution : - les statistiques de position : moyenne (MEAN) médiane (MED) mode (MODE) - les statistiques de dispersion : écart-type et variance (STD DEV et VARIANCE) étendue (RANGE) écart interquartiles (Q3-Q1) certains quantiles, déciles ou centiles (99%, 95%, 90%, 10%, 5%, 1%) - les statistiques de dissymétrie et d’aplatissement : dissymétrie (SKEWNESS) aplatissement (KURTOSIS) b. Renseignements sur les données manquantes : - code utilisé pour les valeurs manquantes (MISSING VALUE) - effectif des données manquantes (COUNT) - pourcentage des valeurs manquantes par rapport au nombre d’observations (% COUNT/NOBS) 1 c. Tests statistiques 1. Test de Student pour tester la nullité de la moyenne H0 : moyenne=0 H1 : moyenne ≠ 0 La statistique de Student est T=MEAN/(STD/SQRT(n)) Sous H0, T suit une loi de Student à n-1 degrés de liberté. Niveau de significativité du test = p-value. Règle de décision : Si p-value<alpha, rejeter H0. 2. Test du signe pour la médiane H0 : médiane=0 H1 : médiane ≠ 0 La statistique du test est M=p-n/2 où p=nombre de valeurs >0 et n=nombre de valeurs ≠ 0. Sous H0, M suit une loi binomiale B(n, 0.5). Niveau de significativité du test = p-value. Règle de décision : Si p-value<alpha, rejeter H0. Remarque : Si la distribution est symétrique, ce test sert aussi à tester la nullité de la moyenne. 3. Test des rangs signés de Wilcoxon H0 : médiane=0 H1 : médiane ≠ 0 Si la supposition de normalité de la distribution d’une variable n’est pas vérifiée, il faut utiliser le test de Wilcoxon qui est un test non paramétrique. Cependant, ce test fait quand même une hypothèse : la loi est continue et symétrique. La statistique du test est S=p-n(n+1)/4 où p=somme des rangs des valeurs positives non nulles. Sous H0, S suit une loi normale. Niveau de significativité du test = p-value. Règle de décision : Si p-value<alpha, rejeter H0. 2 4. Tests de normalité avec option Normal H0 : la distribution théorique est celle d’une loi normale H1 : autre distribution Quatre tests sont réalisés : Shapiro-Wilks, Kolmogorov-Smirnov, Cramer-von Mises, Anderson- Darling. d. Intervalles de confiance, CIBASIC (TYPE=, ALPHA=) - fournit des intervalles de confiance pour la moyenne, l’écart-type et la variance, sous l’hypothèse de normalité des données - TYPE=LOWER, UPPER, TWOSIDED (par défaut, TWOSIDED) - ALPHA=niveau de confiance (par défaut, 5%) e. - Représentations graphiques de la distribution Steam and Leaf plot Histogramme Box plot (« boîte à moustache ») Normality plot (« droite de Henry ») QQ-PLOT Syntaxe réduite la procédure PROC UNIVARIATE DATA=nom_de_table options; VAR variable(s) ; CLASS variable(s) ; FREQ variable; WEIGHT variable; ID variable; OUTPUT OUT=nom_de_table statistiques; HISTOGRAM ; PROBPLOT ; QQPLOT ; INSET ; (affiche sur les graphiques des statistiques résumées) GOUT= spécifier un catalogue SAS où seront sauvegardés les graphiques ; RUN ; data temperature; set temperature; date=mdy(mois,1,annee); format date monyy5.; run; /* Uniquement les statistiques descriptives*/ proc univariate data=temperature; var precipitations temperature; id date; run; /* Statistiques descriptives et graphiques*/ proc univariate data=temperature plot; var precipitations temperature; id date; 3 run; /* Statistiques descriptives et histogrammes*/ proc univariate data=temperature; var precipitations temperature; id date; histogram; run; /* Statistiques descriptives, histogrammes et ajustement d'une loi normale*/ proc univariate data=temperature; var precipitations temperature; id date; histogram / normal; run; /* Rajout de QQ-Plots*/ proc univariate data=temperature; var precipitations temperature; id date; histogram / normal; qqplot; run; Exercice : Réaliser la même étude, mais en regroupant les observations par mois. Même chose pour les années. 3. Calculer la matrice de corrélation des variables continues. PROC CORR Cette procédure calcule divers coefficients de corrélation entre des variables. Implicitement, la procédure CORR donne aussi les statistiques unidimensionnelles les plus usuelles. PROC CORR DATA= jeu_de_données options; VAR liste_des_variables ; WITH liste_des_variables; BY liste_des_variables; FREQ variable; WEIGHT variable; RUN; Options : NOMISS élimine les observations présentant des valeurs manquantes (par défaut le calcul se fait avec toutes les données définies pour chaque couple) NOSIMPLE supprime l’affichage des statistiques unidimensionnelles NOPRINT supprime les affichages dans la fenêtre Output PEARSON demande le calcul des coefficients de corrélation de Pearson (option par défaut) OUTP OUTP=nom_de_table demande le rangement de la matrice de corrélation dans une table SAS 4 Instructions : VAR donne la liste des variables à traiter (par défaut, toutes les variables numériques sauf celles citées par BY, FREQ, WEIGHT WITH les croisements sont limités aux variables de l’instruction VAR avec celles de l’instruction WITH BY variables définissant des groupes (le fichier doit être ordonné sur ces variables) proc corr data=temperature; var precipitations temperature; run; Exemple 2 : 1. Ouvrir la table SAS Couleurs. Afficher les fréquences des variables qualitatives Sexe, Couleur des yeux et couleurs de cheveux. PROC FREQ La procédure FREQ permet d'obtenir des tables de fréquences et des tableaux de contingences ainsi que plusieurs statistiques descriptives et différents tests. PROC FREQ DATA= jeu_de_données options1; BY nom_variable ...; (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 contingence demandés) WEIGHT nom_variable; (par défaut, 1 par observation) RUN; Options1 : FORMCHAR (1, 2,7)=`trois_caractères' Identifie les caractères qui formeront les lignes de divisions (1) verticales, (2) horizontales et (7) les intersections. Par défaut c'est |-+ . ORDER= Indique l'ordre selon lequel apparaîtront les variables. Par défaut c'est INTERNAL. PAGE Imprime une seule table ou un seul tableau par page. Options2 : ALPHA= Identifie le niveau 100(1- ) % de l'intervalle de confiance. Par défaut =0,05. CHISQ Imprime la valeur et la "p-value" des khi-deux de Pearson, du maximum de vraisemblance et de Mantel-Haenszel, ainsi que le test de Fisher, le coefficient de Phi, celui de contingence et la statistique V de Cramer. CELLCHI2 Imprime pour chaque cellule sa contribution à la statistique chi-deux. CUMCOL Imprime pour chaque cellule les pourcentages cumulatifs des colonnes. DEVIATION 5 Imprime pour chaque cellule la différence entre sa fréquence et sa valeur espérée. EXPECTED Imprime les fréquences espérées sous l'hypothèse de l'indépendance. MISSPRINT Pour les tableaux, imprime les fréquences des valeurs manquantes sans toutefois les utiliser dans les calculs de statistiques. MISSING Inclut les valeurs manquantes dans les calculs. OUT=nom Nomme le jeu de données qui contiendra les valeurs et les fréquences des variables de la dernière table ou du dernier tableau. LIST Imprime les données en une liste plutôt que sous forme de table. NOCOL Supprime l'impression des pourcentages des colonnes. NOCUM Supprime l'impression des fréquences cumulatives et des pourcentages cumulatifs. NOFREQ Supprime l'impression des fréquences. NOPERCENT Supprime l'impression des pourcentages. NOPRINT Supprime l'impression des tables, mais imprime les statistiques demandées. NOROW Supprime l'impression des pourcentages de lignes. data couleurs; infile 'F:\ecole-doct\cours2\couleurs.txt' delimiter='09'x firstobs=2; input Indice Cheveux $ Yeux $ Sexe $ Freq; run; proc freq data=couleurs; tables sexe cheveux yeux; run; On ne tient pas compte des vraies fréquences, contenues dans la variable Freq. Si on en tient compte, proc freq data=couleurs; tables sexe cheveux yeux; weight freq; run; 2. Créer une table de contingence en croisant les variables Couleur des yeux et couleur des cheveux. Tenir compte des vraies fréquences. Tester l’indépendance des deux variables. proc freq data=couleurs; tables cheveux*yeux; weight freq; 6 run; Si on veut afficher uniquement les effectifs, proc freq data=couleurs; tables cheveux*yeux /nopercent nocol norow out=stat1; weight freq; run; Le test de chi-deux : proc freq data=couleurs; tables cheveux*yeux /nopercent nocol norow deviation expected cellchi2 chisq; weight freq; run; 3. Créer une table de contingence en croisant les variables Couleur des yeux et Couleur des cheveux selon le Sexe. Tenir compte des vraies fréquences. Tester l’indépendance des variables dans les deux groupes. proc freq data=couleurs; by sexe; tables cheveux*yeux /nopercent nocol norow expected chisq; weight freq; run; Problème de tri sur le fichier !!! proc freq data=couleurs; by descending sexe; tables cheveux*yeux /nopercent nocol norow expected chisq; weight freq; run; 4. Représenter les variables qualitatives Sexe, Cheveux et Couleurs avec des diagrammes en bâtons et en camemberts. PROC GCHART Cette procédure permet de tracer divers diagrammes. Ce cours se borne aux commandes pour obtenir des histogrammes et des camemberts. Elle peut être utilisée avec des variables numériques (discrètes ou continues) ou avec des variables de type chaîne de caractère. Les variables numériques sont considérées comme continues sauf si l’option DISCRETE est présente. L’option MIDPOINTS permet de choisir les centres des classes. Il est possible de construire des diagrammes entrelacés ou/et empilés (option GROUP et SUBGROUP). PROC GCHART DATA= jeu_de_données options; VBAR variable(s) / options ; HBAR variable(s) / options ; 7 PIE AXISn TITLE NOTE BY RUN; variable(s) / options; options; options ‘texte’; options ‘texte’; variables; Remarque : Cette procedure est interactive, les ordres de trace HBAR, VBAR et PIE seront executés imédiatement s’ils sont suivis de RUN puis soumises (F3), sans quitter la procédure GCHART, ce qui permet de produire de nouveaux graphiques ou de réviser le tracé sans quitter GCHART. On utilise l’instruction QUIT pour sortir de GCHART. proc gchart data=couleurs; pie cheveux yeux sexe ; hbar cheveux yeux sexe ; run; /* Problème avec les fréquences !*/ proc gchart data=couleurs; pie cheveux yeux sexe /sumvar=freq; hbar cheveux yeux sexe /sumvar=freq; run; Exercice 1. Ouvrir la bibliothèque suivante : libname a 'C:\Program Files\SAS\SAS 9.1\insight\sample'; Afficher la table Iris. 2. Utiliser la Proc CONTENTS pour récupérer les noms des variables. 3. Afficher les statistiques descriptives pour les variables continues et étudier si les variables sont distribuées selon des lois normales. On fera une deuxième étude par espèce. 4. Calculer la matrice de corrélation pour les variables continues. 5. Afficher les fréquences des espèces et représenter-les à l’aide d’un diagramme camembert. 6. Représenter graphiquement le nuage des points en utilisant les variables continues et en étiquetant les observations par leur espèce. Est-ce que les espèces sont facilement séparables ? libname a 'C:\Program Files\SAS\SAS 9.1\insight\sample'; /* Recuperer les noms des variables*/ proc contents data=a.iris; run; /* Statistiques descriptives*/ 8 proc univariate data=a.iris; var petallen petalwid sepallen sepalwid; histogram /normal; run; /* Statistiques descriptives par espece*/ proc univariate data=a.iris; var petallen petalwid sepallen sepalwid; histogram /normal; class species; run; /* Matrice de correlation*/ proc corr data=a.iris; var sepallen--petalwid; run; /* Etude de la variable espece*/ proc freq data=a.iris; tables species; run; proc gchart data=a.iris; pie species; run; /* Representation du nuage de points*/ proc gplot data=a.iris; plot sepallen*sepalwid=species; run; 9