AO2DO

Tests V3.2

(En cours, indiquez moi les erreurs éventuelles ou les liens brisés)
2011 Pierre Desmet

 

<<<<<<<<<<<<<<<<<<< Modifications en cours  >>>>>>>>>>>>>>>

Quelle est la question ?

 
 

 

 

 


Rectangle à coins arrondis: Comparaison d’échantillons appariésRectangle à coins arrondis: Comparaison d’échantillons indépendantsRectangle à coins arrondis: Association
de 2 variables
Rectangle à coins arrondis: Explication
d'une variable
Rectangle à coins arrondis: Description
d’1 variable

 

 

 

Description d’1 variable

 

 
 

 

Nominale Binaire

2 modalités

Nominale

(>2)

Ordinale

Non métrique

Métrique

(Intervalle, ratio)

Intervalle de confiance

-IC Proportion

-IC Moyenne

Comparaison par rapport à une norme

-Proportion (binomial)

-Chi2

-Test d’une distribution

-Comparaison à une norme

Ajustement à une distribution

-Kolmogorov

-Smirnov (K-S)

-Forme(Sk,Ku)

-Shapiro-Wilks W

-Lilliefors K-S

-Jarque-Bera

 

/*-------------------- Intervalle de confiance -----------------------*/

* IC intervalle de confiance d’une proportion ou d’une nominale;

* utiliser l’option BINOMIAL de l’instruction TABLES de la procédure FREQ.;

title2 H=4  J=c "FREQ IC d’une proportion" ;

proc freq data=in;

      tables Genre / nocum binomial (p =0.33);

exact binomial;

run;

Rectangle à coins arrondis: Go to Top 

 


* IC intervalle de confiance variable intervalle;

**************************************************************;

title2 H=4  J=c  "MEANS : intervalle de confiance de CA total à 5%";

proc means data = in

      n mean

      clm alpha=0.05 probt; * spécifie l’intervalle de confiance (clm), le risque alpha ;

var catotal_0;

run;

Rectangle à coins arrondis: Go to Top 


/*------------------- Comparaison par rapport à une norme -----------*/

* Proportion Comparaison à une norme sur une proportion;

title2 H=4  J=c "FREQ Comparaison d'une proportion à une norme 33% 67%";

proc freq data=in;;

tables statut

/ binomial P=0.33;

Rectangle à coins arrondis: Go to Top 

 


* Proportion Comparaison à une norme sur une variable nominale;

title2 H=4  J=c "FREQ Comparaison d'une proportion à une norme 20%, 20%, 20%, 20% 20%";

proc freq data=in;

where rec<6 ;                            * exemple de filtrage dans une procédure ;     

tables rec 

/testp=(0.2 0.2 0.2 0.2 0.2) ;     * la somme doit faire 1 ! ;

Rectangle à coins arrondis: Go to Toprun;

 

* Test de signe dans Univariate (ordinale ou intervalle sans hypothèse de normalité);

*H0 médiane = 0 (ou moyenne =0 si la distribution est symétrique) ;

******************************************************************;

title2 H=4  J=c "Univariate : test de la moyenne de RCA mu0=3";

proc univariate data=in

      mu0=3;                  * test de la valeur centrale = à 3 ;

      var RCA_0 ;

      run;

Rectangle à coins arrondis: Go to Top 

 


* Intervalle : Comparaison à une norme moyenne=70";

title2 H=4  J=c "Univariate : Comparaison à moyenne=70";

proc univariate data=in normal plot

      mu0=70;                 * test de la valeur d'une moyenne de 70 ;

      var catotal_0;

    histogram     / normal (mu=est sigma=est);

    qqplot        / normal (mu=est sigma=est);

run;

Rectangle à coins arrondis: Go to Top
 

 


/*-------------- Comparaison par rapport à une distribution --------*/

* Skewness, kurtosis description de la forme;

* regarder si unimodale : si Moyenne=médiane=mode ;
* si |skewness| et |kurtosis| <1 ;

* faible rejet de la normalité peu problmatque si effectifs des groupes proches ;

*************************************************;

title2 H=4  J=c "MEANS : Description de la variable intervalle";

proc means data=in

n mean median min max

skewness kurtosis;

      var catotal_0;

run;

proc tabulate data=in ;

      var catotal_0;

      class Genre ;

      table catotal_0*(n mean std max min skewness kurtosis),

            (sex all);

      run;

Rectangle à coins arrondis: Go to Top 

 


* Shapiro-Wilks W : Hypothèse d’une distribution Normale ;

* http://faculty.chass.ncsu.edu/garson/PA765/assumpt.htm ;

*********************************************************;

Title2 H=4  J=c "Ajustement d’une distribution Normale" ;

* Ho= Normalité acceptée, test standard pour les échantillons inférieur à n= 200 sinon K-S ;

proc univariate data=in normal;

      var catotal_0  ;

      histogram catotal_0     / normal ( mu = est sigma = est color = red) ;

      probplot catotal_0      / normal (mu=est sigma=est);

      run;

Rectangle à coins arrondis: Go to Top 

 


* Hypothèse d’une distribution connue (lognormale weibull,…) ;

*********************************************************;

Title2 H=4  J=c "Ajustement d’une distribution log-normale" ;

proc univariate data=in normal;

      var catotal_0  ;

      histogram / lognormal ( mu = est sigma = est color = red) ;

      qqplot catotal_0   / lognormal (sigma=0.2 to 0.8 by 0.3 theta=est zeta=est);

      run;

Rectangle à coins arrondis: Go to Top 

 


* Test d’une distribution standard;

* http://www.tau.ac.il/cc/pages/docs/sas8/proc/zte-comp.htm ;

************************************************************;

title2 H=4  J=c "Univariate : test de la normalité";

proc univariate data=in Normal      /* test de normalite */

Plot        /* graphiques  et boite à moustache */

CIBASIC;    /* intervalles de confiance pour les stat de base */

var revenu;

histogram revenu

     / lognormal (color=red w=5);

      /* ou beta gamma exp normal weibull */

inset n="N" (5.0) mean="Moyenne" (5.1) std="Ecart-type" (5.1)    / pos=ne height=3;

      qqplot Time / weibull(theta= est c=est sigma=est ; /* weibull : avec parameter ou est(imated)*/

run ;

Rectangle à coins arrondis: Go to Top 

 


* Kolmogorov-Smirnov D ou Lilliefors correction : Hypothèse d’une distribution Normale ;

* pour les grands échantillons, rejet H0 très fréquent même pour faible distorsion ;
* utiliser aussi les autres critères : Skewness, kurtosis,… ;

* test de K-S : plus grande différence verticale : écart prévu et réel ;

* Anderson-Darling (A2),Cramer-von Mises W2 : écart au carré entre prévu et réel

* (edf pour Empirical Distribution Function);

********************************************************************;

Title2 H=4  J=c "Kolmogorov-Smirnov D (Lilliefors correction : Ajustement d’une distribution" ;

proc univariate data=in normal;

      var catotal_0  ;

      histogram catotal_0     / normal ( mu = est sigma = est color = red) ;

      probplot catotal_0      / normal (mu=est sigma=est);

      run;

Rectangle à coins arrondis: Go to Top 

 


* Jarque-Berra JB : Hypothèse d’une distribution Normale ;

* http://en.wikipedia.org/wiki/Jarque-Bera_test ;

************************************************;

Title2 H=4  J=c "Ajustement d’une distribution Normale test de Jarque-Berra" ;

proc tabulate data=in;

      var catotal_0  ;

      table catotal_0, (skewness kurtosis) ;

      run;

* Faire le calcul à la main JB = (n/6)(S^2 + (1/4)(K - 3)^2) (pour l’instant ;-)  ;

* khi2 à 2 degrés de liberté;

* Valeurs critiques à 5% selon l'effectif ;

* n         20          30          50          70          100 ;

* seuil     .1461       .109        .079        .067        .062 ;

Rectangle à coins arrondis: Go to Top 

 


/*-------------- Test de multi-normalité (plusieurs variables) -----------------------*/

* Mardia Test multi-Normalité;

* test de Mardia sur skewness et kurtosis, multi-normalité ;

proc model data=in;

      parms constante_1 constante_2 ; /* remplacer Y1 et y2 par vos variables */

      y1 = constante_1 ;

      y2 = constante_2 ;

      fit y1 y2  / normal  ;  /* test normalité : Shapiro wilk W, Mardia Sk et Ku, Henze-Zirkler T */

   run;

Rectangle à coins arrondis: Go to Top

Association de 2 variables : Ligne (traitement/groupe) x Colonne (réponse)

 

 
 

 

 

 

 

Binaire

Nominale

Ordinale

Non métrique

Intervalle

Binaire

-Chi2

Nominale

-Chi2

-Fisher

-Contingence

-Tshuprow

Ordinale

-Kendall

-Spearman

-Lambda Guttman

-Tau-b Kendal

-Tau-c Stuart

 

Intervalle

-Pearson

 

/*------- Association de 2 variables nominales -------------------------*/

* Chi2 : Association variables nominale*nominale    (chisq);

* sans les fréquences "cas" ni les fréq colonne, (autre dim = norow) ;

* Tshuprow : à calculer T = racine ([Khi-deux]/n*[racine((k-1)(L-1))]) ;

*********************************************************************;

title2 H=4  J=c "FREQ : Association 2 var nominales : Khi2";

proc freq data =in ;

      tables (rec Genre liv_1 club_0 club_1)*statut / chisq nofreq nocol;

      format Genre sexfmt. rec recfmt. statut statutfmt. club_0 clubfmt. club_1 clubfmt. promo_1 promofmt. ;

      run ;

* http://faculty.chass.ncsu.edu/garson/PA765/assocnominal.htm;

Rectangle à coins arrondis: Go to Top 

 

 


/*------- Association de 2 variables ordinales -------------------------*/

* Kendall Tau, Spearman Rho : association variables ordinale*ordinale;

* préférer le Kendall si classement;

* préférer Spearman si note mais pas de normalité ;

* Si tau = 0.33 alors les couples ont deux fois plus de chance d’être concordants que discordants ;

* ************************************************************************************************;

title2 H=4  J=c " Association 2 var ordinales Kendall, Spearman";

proc corr data=in spearman kendall;

      var rca_0 rca_1; 

run;

Rectangle à coins arrondis: Go to Top 

 

 


* Gamma, Tau_b et C : association variables ordinale*ordinale;

* Gamma G de Goodman-Kruskal :test de monotonicité de la relation ;

* G=0,636  connaître le rang de la première variable réduit l’erreur de prévision sur les rangs de la seconde variable de 63,6% ;

* Tau b de Kendall                 : tableau carré, corrige G pour les égalités ;

* Tau-c Kendall-Stuart       : tableaux non carrés (ajustement) ;

******************************************************;

title2 H=4  J=c "FREQ : Association 2 var ordinales avec Measures";

proc freq data=in  ORDER = DATA ;  * order= data garde l’ordre des modalités;

      tables rca_0*rca_1

                  / nopercent nocol measures ;

      test GAMMA ; * test de Gamma=0 ;

run;

Rectangle à coins arrondis: Go to Top 

 

 


/*----------- Association de 2 variables intervalles ---------------*/

* Pearson : association variables intervalle*intervalle ;

* *********************************;

title2 H=4  J=c "Procédure CORR Association 2 var intervalles";

proc corr data=in pearson;

      var catotal_0 catotal_1 ;   

run;

Rectangle à coins arrondis: Go to Top 

 


-

* Kappa : agrément entre juges : variables ordinale*ordinale;

* *********************************;

title2 H=4  J=c "FREQ : Association 2 var ordinales avec Agree";

proc freq data=in;

      tables rca_0*rca_1

                  / nopercent nocol

                  agree ;    

run;

Rectangle à coins arrondis: Go to Top

Explication d’une variable (Réponse en colonne) par la variable en ligne

 

 
 

 

 

 

 

A EXPLIQUER

EXPLICATIVE

Nominale

Ordinale

Latente

Intervalle

Nominale

2

-Chi2

-Risque relatif

-Rapport de côtes (Odd ratio)

-Marshall

-Kruskal-Wallis

-Jonckherre-Terpstra

Voir comparaison d’échantillons ci dessous

 

>2

-CMH3 (association générale)

Ordinale

-Cochran-Armitage (Z, test du trend)

-D Somers

 

>2

-CMH2 (MSD difference de moyenne entre les lignes)

-CMH1(correlation)

Latente (bin/ordi)

2

-Polychorique (Tétrachorique)

-Point bisérial

Intervalle et nominale

Régression logistique

-binomiale

-multinomiale

Régression logistique

-ordinale

-Régression linéaire


* Risque relatif : association variables nominale*nominale    ;

* Plutôt que de faire la différence (p1-p2) on fait le ratio p1/p2 et on le compare à 1;

* ratio des proportions des groupes (lignes) ;

* cohort (colrisk1)= 2 il y a 2 fois plus de chances d’être « 1 » sur la première ligne que sur la seconde ;

* *********************************************************************************************************;

title2 H=4  J=c " (colrisk1) Risque relatif entre les groupes (lignes)";

PROC FREQ DATA = in order = data ;

TABLE statut * sex

            / relrisk  ;

run;

Rectangle à coins arrondis: Go to Top 

 


* Rapport de cote (odds ratio) : association variables nominale*nominale    ;

* cote = (p)/(1-p) ; odds ratio : (p1/(1-p1))/ (p2/(1-p2)) ;

* case control (odds ratio)= 2 la cote est 2 fois plus importante pour la 1ère ligne ;

* **********************************************************************************;

title2 H=4  J=c " (odds ratio) rapport de cote entre les groupes (lignes)";

PROC FREQ DATA = in order = data ;

TABLE statut * sex

                  / relrisk  ;

run;

Rectangle à coins arrondis: Go to Top 

 

 


/*-------- Egalité des moyennes transformation Logit  ( paramétrique) -----*/

* Proportion : Explication d’une proportion (binomial)  Genmod ;

title2 H=4  J=c "Comparaison de proportions entre des groupes ";

* Régression logistique binomiale  ;

********************************************************************;

title2 H=4  J=c "Régression logistique binomiale ";

proc freq data=in ;

      table sex * r2_ca_0;

run ;

ods graphics on ;

proc logistic data=in descending ;

class sex (ref="1") rec / param=ref ; /* choix de la modalité de référence pour X */

model r2_ca_1 (event="1") =sex rec;

oddsratio sex ;

oddsratio rec ;

run;

ods graphics off ;

Rectangle à coins arrondis: Go to Top 

 

 


* Nominal : Explication d’une nominale avec plusieurs modalités indépendantes (multinomial);

title2 H=4  J=c "Comparaison de fréquences entre différentes modalités";

* https://www.ats.ucla.edu/stat/SAS/seminars/sas_logistic/logistic1.htm ;

* Régression logistique multinomiale ;

********************************************************************;

title2 H=4  J=c "Régression logistique multinomiale ";

proc freq data=in ;

      table sex * r3_ca_0;

run ;

/* regarder "test de score" pour l'hypothèse IIA */

proc logistic data=in descending ;

class sex (ref="1") rec / param=ref ; /* choix de la modalité de référence pour X */

model r3_ca_1 =sex rec / link=glogit;

oddsratio sex ;

oddsratio rec ;

run;

Rectangle à coins arrondis: Go to Top
 

 


* Ordinal : Explication d’une ordinale : logistic ;

title2 H=4  J=c "Comparaison de proportions entre des groupes ordonnés";

* Régression logistique ordinale  ;

********************************************************************;

title2 H=4  J=c "Régression logistique ordinale ";

proc freq data=in ;

      table sex * r3_ca_0;

run ;

/* regarder "test de score" pour l'hypothèse IIA */

proc logistic data=in descending ;

class sex (ref="1") rec / param=ref ; /* choix de la modalité de référence pour X */

model r3_ca_1 =sex rec / link=clogit;

oddsratio sex ; /* enlever 1 au ratio, mettre en % et c’est l’écart en % / à la modalité de référence */

oddsratio rec;;

run;

Rectangle à coins arrondis: Go to Top
 

 


* Gamma, Tau_b et C, D de Somers : association variables ordinale*ordinale;

* Gamma G de Goodman-Kruskal :test de monotonicité de la relation ;

* G=0,636  connaître le rang de la première variable réduit l’erreur de prévision sur les rangs de la seconde variable de 63,6% ;

* Tau b de kendall : tableau carré, corrige G pour les égalités ;

* Somers D asymétrique : relation de dépendance x->Y ;

* Tau-c Kendall-Stuart : tableaux non carrés (ajustement) ;

******************************************************;

title2 H=4  J=c "FREQ : Association 2 var ordinales avec Measures";

proc freq data=in  ORDER = DATA ;  * order= data garde l’ordre des modalités;

      tables rca_0*rca_1

                  / nopercent nocol measures ;

      test GAMMA ; * test de Gamma=0 ;

run;

Rectangle à coins arrondis: Go to Top 

 

 


* Cochran-Armitage trend test : effet d’une variable ordinale/intervalle sur une proportion (binaire);

* Cochran-Armtage trend test : effet d’une ordinale sur une proportion (1= succès);

**********************************************************************************;

title2 H=4  J=c "Cochran-Armitage trend test : effet d’une ordinale sur une proportion";

proc freq data=in;

table statut*promo_1 / trend norow nocol nopercent scores=rank;

run;

title2 H=4  J=c "Cochran-Armitage trend test : effet d’une intervalle (non normale) sur une proportion";

proc freq data=in;

table statut*promo_1 / trend norow nocol nopercent;

exact trend / maxtime=60;

run;

title2 H=4  J=c "Cochran-Armitage trend test : effet d’une intervalle (normale) sur une proportion";

proc freq data=in;

table statut*promo_1 / trend norow nocol nopercent scores=table;

run;

Rectangle à coins arrondis: Go to Top 

 

 


* Marshall : association variables 1 nominale (2 modalités)*ordinale;

* Différence entre deux échantillons sur une variable ordinale;

* ************************************************************************************************;

voir  http://www.mastermarketingdauphine.com/charge/ADD/Marshall.xls

Rectangle à coins arrondis: Go to Top 

 

 


* Point bisérial : association variables latente discrétisée (binaire)*intervalle ;

title2 H=4  J=c "Point bisérial (latente*intervalle)";

proc corr data=tab_1;

var median_split*catotal_1;

  * variable binaire : variable continue discrétisée par découpe à la médiane (median-split) ;

run;

Rectangle à coins arrondis: Go to Top 

 


* Polychorique : association variables latente*latente ;

* sans les fréquences "cas" ni les fréq colonne, (autre dim = norow) ;

* hypothèse forte sur les distributions sous-jacentes ;

* tetrachorique : binomiale (binaire) ;

* polychorique : normale (ordinale) ;

*********************************************************************;

title2 H=4  J=c "Polychorique : latente*latente)";

proc freq data=tab_1;

      table rca_0*rca_1 / chisq nopercent nocol PLCORR;

run;

Rectangle à coins arrondis: Go to Top 

 

Comparaison de 2 échantillons indépendants

 

 
 

 

 


Test de

l’égalité de …

Binaire

Nominale

Ordinale

Intervale

(symétrique non normale)

Intervalle (normalité)

La distribution

-Chi2

-Chi2

-Fisher

 

-Kolmogorov-Smirnov (K-S)

-Marshall

-Forme (Sk, Ku)

-Shapiro-Wilks W

-Lilliefors K-S

-Jarque-Bera

La médiane

 

-Test de la médiane (Brown-Mood)

La variance

 

-Levene

-Bartlett

La moyenne

-Avec égalité des distributions et variances

Egalité de proportions

-Z (si n.p grand)

-U de Mann-Whitney (wilcoxon)

-U de Mann-Whitney (wilcoxon)

-t, Z

La moyenne

-Sans égalité des distributions

 

 

Voir

variable ordinale

La moyenne

-Sans égalité des variances

 

-Satterwhaite (dans TTest)

 

/*--------- Description : 2 groupes  ( paramétrique) -------------*/

* Proportion avec approximation normale  Z(si n(effectifs) x p (proportion) est « élevé ») ;

proc freq data=in ;

      table statut / binomialc (P=0.4) alpha=0.5 ;

      /* "C" après binomial pour avoir  */

      /* une approximation "normale" avec une moyenne p=0.4 (variance = n.p.(1-p)*/

      exact binomial ;

      run ;

Rectangle à coins arrondis: Go to Top
 

 


/*--------- Description : 2 groupes  ( paramétrique) -------------*/

* Histogrammes comparés et boite à moustache par groupe ;

proc univariate data=in normal;    * Comparaison de deux histogrammes ;

      class statut ;               * CLASS : variable de regroupement ;

      var catotal_0  ;

      histogram catotal_0     / normal ( mu = est sigma = est color = red)  

midpoints = 0 to 500 by 50 cfill= cx153e7e cframeside = cxeeeeee; * Adapter l’axe selon la variable ;

inset n="N" (5.0) mean="Moyenne" (5.1) std="Ecart-type" (5.1) / pos=ne height=3;

      run;

proc sort data=in;

by rec ; run ;

proc boxplot data=in;

plot catotal_0*rec      / boxstyle = SKELETAL cboxes= CX153e7e cboxfill = CX1589ff;

run;

Rectangle à coins arrondis: Go to Top 

 


/*-------- Egalité des variances ( paramétrique) --------------*/

* Egalité des variances 2 groupes : TTest ;

* teste aussi l'homogénéité des variances ;

*****************************************************************************;

title2 H=4  J=c "TTEST 2 groupes (variable indépendante à 2 modalités)";

proc ttest data=in ;

      class statut ; * CLASS : variable de regroupement ;

      var catotal_1; * VAR   : variable de calcul ;

      run ;

Rectangle à coins arrondis: Go to Top 

 


/*--------- Egalité des moyennes : 2 groupes  ( paramétrique) -------------*/

* TTEST comparaison des moyennes de 2 groupes : test en t, intervalle de confiance ;

* tester d’abord l'homogénéité des variances ;

*****************************************************************************;

title2 H=4  J=c "TTEST ";

proc ttest data=in ;

      class statut ;               * CLASS : variable de regroupement ;

      var catotal_1;               * VAR   : variable de calcul ;

      run ;

Rectangle à coins arrondis: Go to Top

Comparaison de plus de 2 échantillons indépendants :

Pour une variable intervalle, Hypothèses de Normalité, d’égalité des variances et d’indépendances des individus

 

 
 

 

 

 

 

 

Test de

l’égalité de …

Nominale ou Binaire

Ordinale

(non métrique)

Intervalle (normalité)

 

La distribution

  

 

H2 : égalité des variances

La variance

-Levene

-Bartlett

H3a test global de la moyenne

Si inégalité des variances

-Anova avec Welch

H3 test global de la moyenne

Il existe au moins une différence

-Chi2

-Fisher

-Kruskal-Wallis

-Anova

H4 : quelles moyennes sont différentes

Test 2 à 2 corrigé pour comparaisons multiples

-Dunnett

-Scheffé

-Bonferoni

(contraste)

 

 

/*--------- Comparaison médiane/moyenne (sans hyp de normalité) entre groupes ------*/

* Binaire comparaison des proportions sur plusieurs groupes  ;

* Hyp : échantillons de taille suffisante et variables indépendantes ;

**********************************************************************;

title2 H=4  J=c "Comparaison de plusieurs proportions (groupes indépendants)";

proc freq data=in;

      tables club_1*rec / norow nopercent chisq ;   

run;

Rectangle à coins arrondis: Go to Top 

 


* K-S Différence de rangs ;

title2 H=4  J=c "K-S : Différence de rangs - échantillons indépendants";

proc univariate  data=in

      edf;        * test de 50/50 ;

      class statut;          

      var rca_1;

run;

Rectangle à coins arrondis: Go to Top 

 


* Test de la médiane : NPar1Way  analyse de variance non paramétrique univariée ;

* Différence de groupes sur des variables non paramétrique ;

* test de K-S (edf) de la Médiane (median);

* Kruskal-Wallis , Somme des rangs (extension de la somme des rangs de wilcoxon);

********************************************************************;

title2 H=4  J=c "Test de la médiane : Différence de rangs - échantillons indépendants";

proc npar1way data=in

      median;

      class statut;          

      var rca_1;

run;

Rectangle à coins arrondis: Go to Top 

 


* Kruskal-Wallis : NPar1Way  analyse de variance non paramétrique univariée;

* Différence de groupes sur des variables non paramétrique ;

* test de Kruskal-Wallis;

********************************************************************;

title2 H=4  J=c "Kruskal-Wallis : Différence de rangs - échantillons indépendants";

proc npar1way data=in

      wilcoxon;

      class statut;          

      var rca_1;

run;

Rectangle à coins arrondis: Go to Top 

 


* Jonscheere-Terpstra substitut à Kruskal-Wallis si distribution différentes (non paramétrique)

* Jonckheere-Terpstra ;

***********************;

* substitut à Kruskal wallis si hyp sur les distributions non validée ;

ods rtf ;

proc freq data=in ;

  tables  sex*decil_ca_0

  /  nopercent nocol   JT ; /* JT Jonckheere-Terpstra*/

run ;

ods rtf close ;

Rectangle à coins arrondis: Go to Top
 

 


* Wilcoxon-Mann Whitney comparaison des moyennes de 2 groupes indépendants en non paramétrique (variable ordinale ou non ordinale);

* équivalent à un test en t sans l’hypothèse de normalité ;

* travaille sur la somme des rangs et non la médiane ;

**********************************************************;

title2 H=4  J=c "Mann Whitney – Wilcoxon (test de différence de moyenne, sans normalité) ";

proc npar1way data = in wilcoxon;

      class statut;

      var catotal_0;

run;

Rectangle à coins arrondis: Go to Top 

 


/*--------------- Relation entre 3 variables ---------------------------*/

* CMH et Breslow-Day : 3 variables X et Y (Z modérateur ou facteur de confusion ) ;

* CMH2 test de Friedman : ordinales ;

*********************************************************************;

title2 H=4  J=c "CMH X-Y et facteur de confusion (Z)";

data in ;

input Z X Y effectif @@;

cards ;

0 0 0 267   0 0 1 134   0 1 0 32    0 1 1 39 1 0 0 86 1 0 1 119   1 1 0 23    1 1 1 34

;

title2 "liaison Y et X ";

proc freq  data=in ;

      weight effectif;

      table x*y / chisq measures norow nopercent;

run ;

title2 "liaison Y et Z ";

proc freq  data=in ;

      weight effectif;

      table  z*y  / chisq norow nopercent;

run ;

title2 "liaison Z et X ";

proc freq  data=in ;

      weight effectif;

      table  z*X  / chisq norow nopercent;

run ;

* Analyse avec le facteur de confusion : Z (0/1);

title2 "liaison Y et X selon le niveau de Z";

proc freq  data=in ;

      weight effectif;

      table  Z*X*Y  / chisq cmh norow nopercent;

run;

Rectangle à coins arrondis: Go to Top 

 


/*--------------- Egalité des variances ---------------------------*/

* Levene, Brown-Forsythe, Bartlett : Egalité des variances plusieurs groupes : GLM ;

* comparaison plusieurs groupes sur une variable

*****************************************************************************;

title2 H=4  J=c "Levene, Brown-Forsythe, Bartlett : Egalité des variances de plusieurs groupes GLM " ;

proc glm data=in;

class rec;

model catotal_0 =rec;

means rec   /     hovtest=LEVENE  /* Levene peu sensible à la non normalité mais trop conservateur */

hovtest=BF  /* Brown-Forsythe test ou Levene-Med test (adaptation de Levene avec la médiane) */

hovtest=BARTLETT; /* Bartlett  sensible à la non normalité */

run;

Rectangle à coins arrondis: Go to Top 

 

 


/*-------- Egalité des moyennes : plusieurs groupes  ( paramétrique) ------*/

* WELCH ANOVA : Analyse de variance  avec normalité mais SANS égalité des variances;

********************************************************************;

* Dépendante (intervalle), indépendante (nominale, plusieurs groupes, inégalité des variances) ;

title2 H=4  J=c "Analyse de variance";

proc GLM data=in ;

      class promo_1;

      model CATOTAL_1 = promo_1 ;

      means promo_1 / hovtest welch;

run;

Rectangle à coins arrondis: Go to Top 

 


* ANOVA : Analyse de variance  avec normalité et égalité des variances;

* Dépendante (intervalle), indépendante (nominale, plusieurs groupes) ;

********************************************************************;

title2 H=4  J=c "Analyse de variance";

proc anova data=in ;

      class promo_1;

      model CATOTAL_1 = promo_1 ;

run;

Rectangle à coins arrondis: Go to Top 

 


* Test en t de comparaisons multiples avec correction Dunnett;

* avec plusieurs modalités de la variable indépendante il faut faire plusieurs ;
* Comparaison x1/x2 x1/x3 x2/x3 ce qui accroît le risque global alpha ;
* il existe plusieurs corrections pour ramener le risque alpha à 5% ;
* t = sans ajustement ;
* Tukey-Kramer : différence maximale (effectifs identiques) ;
* Dunnett comparaison / groupe de contrôle ;
* Scheffe, Bonferroni, Sidak … ;
* http://support.sas.com/documentation/cdl/en/statug/63347/HTML/default/viewer.htm#statug_glm_sect018.htm;
********************************************************************;

proc glm data=in ;

      class promo_1 ;

      model CATOTAL_1 = promo_1 ;

      means promo_0 / hovtest t dunnett ;

run;

Rectangle à coins arrondis: Go to Top 

 


* ANCOVA avec contraste ;

* Dépendante (intervalle), indépendantes (nominale, plusieurs groupes) ;

* et variable (covariate) reliée linéairement à la varible dépendante

* effectue une régression pour chaque groupe puis compare ;

********************************************************************;

title2 H=4  J=c "GLM ANCOVA Analyse de covariance avec contraste";

proc glm data=in ;

      class promo_1 ;

      model CATOTAL_1 = promo_1 CATOTAL_0 / solution ;

      means promo_1                      / bon scheffe ;   * moyennes normales ;

      lsmeans promo_1                                ;     * moyennes recalculées sans l’effet des autres variables ;

      contrast "1/2 et 3"     promo_1           1 -.5 -.5; * teste que moyenne 1 =(moyenne groupe2 et 3) ;

      contrast "1/2"          promo_1           1 -1  0;   * vérifier que somme=0 ;

      contrast "1/3"          promo_1           1  0 -1;

      contrast "2/3"          promo_1           0  1 -1;

run;

Rectangle à coins arrondis: Go to Top 

 


/*---- Egalité des moyennes de plusieurs variables dépendantes sur plusieurs groupes  (paramétrique) -*/

* Test de Box : Egalité des variances plusieurs groupes;

* comparaison de plusieurs groupes sur plusieurs variables ;

*****************************************************************************;

title2 H=4  J=c "Box test Egalité des variances de plusieurs groupes dans Discrim " ;

proc discrim  data=in  pool=test wcov;

      class statut;

      var catotal_0 catotal_1;

run;

Rectangle à coins arrondis: Go to Top 

 

 


/*---- Egalité des moyennes de plusieurs variables dépendantes sur plusieurs groupes  (paramétrique) -*/

* MANOVA Analyse de variance : plusieurs variables dépendantes;

title2 H=4  J=c "GLM MANOVA Analyse de variance ";

proc glm data=in ;

      class promo_1 ;

      model CATOTAL_0 CATOTAL_1 = rec ;

manova h=rec; * h pour le test de l’hypothèse de l’absence de lien entre rec et l’une des variables ;
* si rejet, regarder les différentes anova ;

run;

Rectangle à coins arrondis: Go to Top 

 


* Comparaisons multiples par MULTTEST (correction de l’inflation de l’erreur de type I) ;

*https://www.ats.ucla.edu/stat/sas/library/multtest.htm 

*comparaison multiples sur une binaire ou une intervalle ;

* même sur de petits échantillons par Bootstrap;

proc multtest data=in 

      boot n=1000 seed=123    /* bootstrap 1000 valeur intiale = 123 */

      bon pvals;              /* Bonferroni*/

class var_groupage;

contrast "2 versus 3" 0 -1 1 0;

contrast "1 versus 3" -1 0 1 0;

contrast "3 versus 4" 0 0 1 -1;

contrast "1 versus 2" 1 -1 0 0;

contrast "1+2 =3+4" 1 1 -1 -1;

test mean(var_analyse);

run;

Rectangle à coins arrondis: Go to Top

Comparaison d’échantillons appariés (ou mesures répétées)

Les observations (lignes) ne sont pas indépendantes. Pour une variable intervalle il faut spécifier la matrice de covariance entre les lignes : non structurée, auto-régression, …,

 

 
 

 

 

 

 

 

 

 

Binaire

Ordinale

Latente

Intervalle

2 modalités

 

-McNemar
-Test du signe

-Kruskal-Wallis

-Wilcoxon (rangs signés)

-t,Z (moyenne des différences)

(test « pairé »)

> 2 modalités

-Stuart-Maxwell

-Q de Cochran

-Friedman

-Anova mesures répétées

 

/*-----------------Mesures répétées------------------------*/

* Test du signe : test binomial = à 0.5 des changements d’avis avant après ;

* Test du signe  variable binaire avant après avec loi binomiale;

* ********************************************************************;

title2 H=4  J=c "FREQ : Avant-après test du signe (binomial=0.5 pour les changements d’avis)";

proc freq data=in;

      tables club_0*club_1 / binomial ; 

run;

Rectangle à coins arrondis: Go to Top 

 


* McNemar : Agrément mesures répétées  (agree) ;

* tableau croisés "carré" avec tests Mc Nemar, Kappa, ...;

* sans les fréquences "cas" ni les fréq colonne, (autre dim = rorow) ;

*********************************************************************;

proc freq data=in ;

      tables rca_0*rca_1

            /     nopercent nocol

                  chisq agree measures ;

run ;

* association variables binaires et tableau "carré" (mêmes dimensions);

* mesures répétées McNemar ;

* ********************************************************************;

title2 H=4  J=c "FREQ : Association 2 var binaires : McNemar avec Agree";

proc freq data=in;

      tables club_0*club_1 / agree ;    

run;

Rectangle à coins arrondis: Go to Top 

 

 


* Stuart-Maxwell Catmod: extension du McNemar à plus de 2 modalités (chi2) ;

* tableau croisés "carré" avant après avec plus de 2 modalités ...;

* teste l’homogénéité marginale : existence d’une relation quelconque ;

*********************************************************************;

ods trace on/listing; /* pour identifier le nom du tableau dans le journal ici CrossTabFreqs*/

proc freq data=in ;

      table r3_ca_0*r3_ca_1 / chisq cmh nocol nopercent;

      ods output CrossTabFreqs= tableau;/* sortie du tableau croisé dans tableau*/

run ;

ods trace off ;

proc catmod data=tableau ; ;/* relecture du data « tableau »*/

    /* test de Stuart Maxwell approximé par le test de Bhapkar  */

    /* "C" après binomial pour avoir  */

    weight frequency ;

      response marginals ;

    model r3_ca_0*r3_ca_1 = _response_ / freq ;

    repeated TIME 2 ;

      title3 "Association avant / après >2 modalités : Stuart-Maxwell (Bhapkar)";

      title4 "Lire la significativité de TIME  (dans analysis of variance)";

run;

Rectangle à coins arrondis: Go to Top 

 


* Bowker : test de symétrie nij = nji  Freq (chi2) ;

* tableau croisés "carré" avant après avec plus de 2 modalités ...;

* teste la symétrie de part et d’autre de la diagonale nij= nji;

* automatique si SAS détecte plus de deux modalités

*********************************************************************;

proc freq data=in;

      tables r_ca_1*r_ca_2 / agree ;    

run;

 

* Q de Cochran : association de plusieurs (>2) variables binaires en mesure répétées Agree;

* measures binaries répétées, tableau carré;

* si nominale à plus de 2 modalités faire un modèle type Catmod ;

* **************************************************************;

title2 H=4  J=c "Q de Cochran : association de plusiers variables nominales";

proc freq data=Drugs;

      tables Genre statut club_0 / nocum;

tables sex*statut*club_0 / agree noprint;

Rectangle à coins arrondis: Go to Top 

 


* Friedman : CMH2 corrélation entre plusieurs variables ordinales (mesures répétées) ;

* CMH2 test de Friedman : ordinales ;

*********************************************************************;

title2 H=4  J=c "CMH2 Friedman : plusieurs variables ordinales en mesures répétées)";

proc sort data = in out=in_trie;

      by numobs;

run;

proc transpose data=in_trie out=in_long name=rang;

      by numobs;

      var rca_0 rca_1;

run;

proc freq data=in_long;

tables numobs*rang*col1 / cmh2 scores=rank noprint;

run;

* lire « Row Mean Scores Differ » ;

Rectangle à coins arrondis: Go to Top
 

 


* Wilcoxon Test des rangs signés dans Univariate (mesures répétées);

*H0 médiane = 0;

*loi continue et symétrique, sinon non paramétrique Wilcoxon;

************************************************************;

data in1 ;

      set in ;

      diff_rca = RCA_0-RCA_1 ;     * sur la différence des rangs ;

title2 H=4  J=c "Univariate  : test des rangs signés (non paramétrique)";

* Hypothèse de Symétrie, sinon utiliser le test des signes ;

proc univariate data=in1 mu0=0;

      var diff_RCA ;

      run;

Rectangle à coins arrondis: Go to Top
 

 


* Test de la sphéricité : Egalité des variances sur mesures répétées;

* ;

*****************************************************************************;

title2 H=4  J=c "Egalité des variances sur des mesures répétées " ;

(A Faire)

Rectangle à coins arrondis: Go to Top 

 


* TTEST échant appariés Différence moyenne (mesures répétées) ;

********************************************************;

title2 H=4  J=c "TTEST Différence de moyennes- échantillons appariés";

proc ttest data=in ;

      PAIRED CATOTAL_0:CATOTAL_1;

run;

Rectangle à coins arrondis: Go to Top 


 

* ANOVA : mesures répétées  ;

********************************************************************;

* Dépendante (intervalle), indépendante (nominale, plusieurs groupes) ;

title2 H=4  J=c "Analyse de variance sur mesures répétées avec GLM";

proc glm data = in;

model catotal_0 catotal_1 = ;

repeated a ;

run;

Rectangle à coins arrondis: Go to Top 

 


* MIXED : mesures répétées  ;

********************************************************************;

*   ;

title2 H=4  J=c "Analyse de variance sur mesures répétées avec Mixed";

proc mixed data = in;

(A Faire)

Rectangle à coins arrondis: Go to Top 

 


* GEE  par GENMOD: mesures répétées  ;

**Plus robuste que GLM ou Mixed à la mauvaise spécification de la matrice **;

****************************************************************************;

*   ;

title2 H=4  J=c "Analyse de variance sur mesures répétées avec GEE";

proc GENMOD data = in;

(A Faire)

Rectangle à coins arrondis: Go to Top 

 

 


/*------------------------ Astuces ------------------*/

* Affichage des caractères accentués ;

* references :

-          http://www.tau.ac.il/cc/pages/docs/sas8/proc/zte-comp.htm ;

options nocenter formdlim="-" dflang=Swiss_French;

goptions reset=ALL keymap=winansi devmap=winansi device=html;

Rectangle à coins arrondis: Go to Top
 

 


* création d'une librairie permanente   ;

********************************************;

* fichiers plus rapidement accessibles et moins volumineux ;

* création de la librairie ;

Libname lib "d:/Travail/Cours/Market_research/Cas/Libraire/"; * « lib » est votre nom pour la librairie ;
Data lib.in ;

Infile…  /* le nom du fichier */

input  /* le nom des variables */…

* utilisation à partir d’un data en librairie ;

Data in ; set lib.in ;

Rectangle à coins arrondis: Go to Top 

 


* Lecture directe d’un fichier xls   ;

**lecture directe d’un fichier xls ;

******************************************;

proc import out=lib.in

      datafile=  "d:/Travail/Cours/Market_research/Cas/Libraire/Libraire.xls"

      DBMS=xls REPLACE;

      getnames=yes;

run;

Rectangle à coins arrondis: Go to Top 

 


* des étiquettes (Label) pour les variables  (dans un DATA) ;

***********************************************************;

label       statut      ="Statut semestre 2"

            rec         ="Recrutement"

            sex         ="Genre"

            catotal_0   ="Chiffre d affaires Semestre 0"

            catotal_1   ="Chiffre d affaires Semestre 1"

            rca_0       ="Rang CA semestre 0"

            rca_1       ="Rang CA semestre 1"

            liv_1       ="Achat livre semestre 1"

            promo_1     ="Pression promotionnelle semestre 1"

            club_0      ="Club semestre 0"

            club_1      ="Club semestre 1";

Rectangle à coins arrondis: Go to Top 


 

* création de rangs  permanents ;

********************************************;

* création d’une variable ordinale à partir des quantiles ;

proc rank data=in out=in_rang      /* création d’un nouveau data et d’une nouvelle variable ;*/

groups=5;                     * ici 5 groupes d’effectifs proches ;

var catotal_0;

ranks Rang_catotal_0;

run;

proc freq data=in_rang ;

      table rang_catotal_0 ;

run;

Rectangle à coins arrondis: Go to Top 

 


* sortie automatique de graphiques dans des proc ;

* possibilité de sorties automatique de graphiques ;

***************************************************;

ods graphics on ;

      /* (procedure) */

ods graphics off ;

Rectangle à coins arrondis: Go to Top