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






|
Nominale Binaire 2 modalités |
Nominale (>2) |
Ordinale Non métrique |
Métrique (Intervalle, ratio) |
|
|
Intervalle de confiance |
||||
|
Comparaison par rapport à une norme |
-Chi2 |
|||
|
Ajustement à une distribution |
-Smirnov (K-S) |
*
utiliser l’option BINOMIAL de l’instruction TABLES de la procédure FREQ.;
title2 H=4 J=c "FREQ IC d’une proportion" ;
tables Genre / nocum binomial (p =0.33);
![]()
**************************************************************;
title2 H=4 J=c "MEANS : intervalle de confiance de CA total à
5%";
clm alpha=0.05 probt; *
spécifie l’intervalle de confiance (clm), le risque
alpha ;
![]()
title2 H=4 J=c "FREQ Comparaison d'une
proportion à une norme 33% 67%";
![]()
title2 H=4 J=c "FREQ Comparaison d'une
proportion à une norme 20%, 20%, 20%, 20% 20%";
where rec<6 ; * exemple de filtrage dans une
procédure ;
/testp=(0.2 0.2 0.2 0.2
0.2) ; * la somme doit faire 1 ! ;
*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";
mu0=3; * test de la valeur centrale = à 3 ;
![]()
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 ;
histogram /
normal (mu=est sigma=est);
qqplot /
normal (mu=est sigma=est);
![]()
*
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";
table catotal_0*(n
mean std max min skewness kurtosis),
![]()
* 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;
histogram catotal_0 / normal ( mu = est sigma = est color = red) ;
probplot catotal_0 / normal (mu=est sigma=est);
![]()
*********************************************************;
Title2 H=4 J=c "Ajustement d’une
distribution log-normale" ;
proc univariate data=in normal;
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);
![]()
*
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 */
/* 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)*/
![]()
* 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;
histogram catotal_0 / normal ( mu = est sigma = est color = red) ;
probplot catotal_0 / normal (mu=est sigma=est);
![]()
*
http://en.wikipedia.org/wiki/Jarque-Bera_test ;
************************************************;
Title2 H=4 J=c "Ajustement d’une
distribution Normale test de Jarque-Berra" ;
table catotal_0, (skewness kurtosis) ;
* Faire
le calcul à la main JB = (n/6)(S^2 + (1/4)(K - 3)^2)
(pour l’instant ;-) ;
* Valeurs
critiques à 5% selon l'effectif ;
* seuil .1461 .109 .079 .067 .062 ;
![]()
* test
de Mardia sur skewness et kurtosis, multi-normalité ;
parms constante_1 constante_2 ; /* remplacer Y1 et y2 par vos
variables */
fit y1
y2 / normal ;
/* test normalité :
Shapiro wilk W, Mardia Sk et Ku, Henze-Zirkler T */
![]()
|
|
||||
* 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";
tables (rec Genre liv_1 club_0
club_1)*statut / chisq nofreq nocol;
*
http://faculty.chass.ncsu.edu/garson/PA765/assocnominal.htm;
![]()
*
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;
![]()
* Gamma
G de Goodman-Kruskall :test de monotonicité
de la relation ;
* 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;
test GAMMA ; * test de
Gamma=0 ;
![]()
*
*********************************;
title2 H=4 J=c "Procédure CORR
Association 2 var intervalles";
![]()
* *********************************;
title2 H=4 J=c "FREQ : Association 2 var ordinales avec Agree";
![]()
|
-Joncherre-Terpstra |
|||||
|
|
-CMH3 (association générale) |
||||
|
-Cochran-Armitage (Z, test du trend) |
|||||
|
|
-CMH2 (MSD difference de moyenne entre les
lignes) |
-CMH1(correlation) |
|||
|
Régression logistique |
*
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) ;
title2 H=4 J=c " (colrisk1) Risque
relatif entre les groupes (lignes)";
PROC FREQ DATA = in order = data ;
![]()
* 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 ;
![]()
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
;
![]()
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;
![]()
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;
![]()
* Gamma
G de Goodman-Kruskall :test
de monotonicité de la relation ;
* 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;
test GAMMA ; * test de
Gamma=0 ;
![]()
* 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";
table statut*promo_1 / trend norow nocol nopercent scores=rank;
table statut*promo_1 / trend norow nocol nopercent;
title2 H=4 J=c "Cochran-Armitage trend test : effet d’une intervalle
(normale) sur une proportion";
table statut*promo_1 / trend norow nocol nopercent scores=table;
![]()
*
Différence entre deux échantillons sur une variable ordinale;
*
************************************************************************************************;
voir http://www.mastermarketingdauphine.com/charge/ADD/Marshall.xls
![]()
title2 H=4 J=c "Point bisérial (latente*intervalle)";
* variable binaire :
variable continue discrétisée par découpe à la médiane (median-split) ;
![]()
* 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)";
table rca_0*rca_1 / chisq nopercent nocol PLCORR;
![]()
|
|
|||||
|
|
|||||
|
|
|||||
|
-U de Mann-Whitney (wilcoxon) |
-U de Mann-Whitney (wilcoxon) |
||||
|
|
|||||
|
|
-Satterwhaite (dans TTest) |
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
;
![]()
proc univariate data=in normal; * Comparaison de deux
histogrammes ;
class statut ; *
CLASS : variable de
regroupement ;
histogram catotal_0 / normal ( mu = est sigma = est color = red)
inset n="N" (5.0) mean="Moyenne" (5.1) std="Ecart-type" (5.1) / pos=ne height=3;
plot catotal_0*rec /
boxstyle = SKELETAL cboxes= CX153e7e cboxfill = CX1589ff;
![]()
* teste
aussi l'homogénéité des variances ;
*****************************************************************************;
title2 H=4 J=c "TTEST 2 groupes
(variable indépendante à 2 modalités)";
class statut ; * CLASS : variable de regroupement ;
var catotal_1; * VAR : variable
de calcul ;
![]()
* tester
d’abord l'homogénéité des variances ;
*****************************************************************************;
class statut ; * CLASS :
variable de regroupement ;
var catotal_1; * VAR : variable de calcul
;
Pour une variable intervalle, Hypothèses de Normalité,
d’égalité des variances et d’indépendances des individus
![]()
Comparaison de plus de 2 échantillons indépendants :
|
Nominale ou Binaire |
||||
|
|
|
|||
|
H2 :
égalité des variances |
||||
|
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 |
-Fisher |
||
|
H4 : quelles moyennes sont
différentes |
* Hyp : échantillons de taille suffisante et variables
indépendantes ;
**********************************************************************;
title2 H=4 J=c "Comparaison de plusieurs
proportions (groupes indépendants)";
tables club_1*rec / norow nopercent chisq ;
![]()
title2 H=4 J=c "K-S : Différence de
rangs - échantillons indépendants";
![]()
*
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";
![]()
*
Différence de groupes sur des variables non paramétrique ;
********************************************************************;
title2 H=4 J=c "Kruskal-Wallis
: Différence de rangs - échantillons indépendants";
![]()
*
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
;
![]()
*
é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;
![]()
* CMH2
test de Friedman : ordinales ;
*********************************************************************;
title2 H=4 J=c "CMH X-Y et facteur de
confusion (Z)";
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
table x*y / chisq measures
norow nopercent;
table z*y / chisq norow nopercent;
table
z*X / chisq
norow nopercent;
* Analyse avec le facteur de confusion : Z (0/1);
title2 "liaison Y et X
selon le niveau de Z";
table
Z*X*Y / chisq
cmh norow
nopercent;
![]()
* comparaison
plusieurs groupes sur une variable
*****************************************************************************;
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é */
![]()
********************************************************************;
*
Dépendante (intervalle), indépendante (nominale, plusieurs groupes, inégalité
des variances) ;
title2 H=4 J=c "Analyse de
variance";
means promo_1 / hovtest welch;
![]()
* Dépendante
(intervalle), indépendante (nominale, plusieurs groupes) ;
********************************************************************;
title2 H=4 J=c "Analyse de
variance";
![]()
* 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 ;
![]()
*
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";
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;
![]()
*
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;
![]()
title2 H=4 J=c "GLM MANOVA Analyse de
variance ";
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 ;
![]()
*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;
![]()
|
|
-Wilcoxon (rangs
signé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)";
tables club_0*club_1 / binomial ;
![]()
*
tableau croisés "carré" avec tests Mc Nemar,
Kappa, ...;
* sans les
fréquences "cas" ni les fréq colonne,
(autre dim = rorow) ;
*********************************************************************;
*
association variables binaires et tableau "carré" (mêmes
dimensions);
*
********************************************************************;
title2 H=4 J=c "FREQ : Association 2 var
binaires : McNemar avec Agree";
tables club_0*club_1 / agree ;
![]()
*
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)";
![]()
*
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
*********************************************************************;
tables r_ca_1*r_ca_2 / 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";
tables Genre statut club_0 / nocum;
tables sex*statut*club_0 / agree noprint;
![]()
* 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;
proc transpose data=in_trie out=in_long name=rang;
tables numobs*rang*col1 / cmh2 scores=rank noprint;
* lire
« Row Mean Scores Differ » ;
![]()
*loi
continue et symétrique, sinon non paramétrique Wilcoxon;
************************************************************;
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;
![]()
*****************************************************************************;
title2 H=4 J=c "Egalité des variances
sur des mesures répétées " ;
![]()
********************************************************;
title2 H=4 J=c "TTEST Différence de
moyennes- échantillons appariés";
![]()
********************************************************************;
*
Dépendante (intervalle), indépendante (nominale, plusieurs groupes) ;
title2 H=4 J=c "Analyse de variance sur
mesures répétées avec GLM";
![]()
********************************************************************;
title2 H=4 J=c "Analyse de variance sur
mesures répétées avec Mixed";
![]()
**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";
![]()
-
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;
![]()
********************************************;
* fichiers plus rapidement
accessibles et moins volumineux ;
Infile… /* le
nom du fichier */
input /* le nom des variables */…
* utilisation à partir d’un data en
librairie ;
![]()
**lecture directe d’un fichier xls ;
******************************************;
datafile= "d:/Travail/Cours/Market_research/Cas/Libraire/Libraire.xls"
![]()
***********************************************************;
label statut ="Statut semestre 2"
catotal_0 ="Chiffre
d affaires Semestre 0"
catotal_1 ="Chiffre
d affaires Semestre 1"
liv_1 ="Achat
livre semestre 1"
promo_1 ="Pression
promotionnelle semestre 1"
![]()
********************************************;
* 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 ;
![]()
*
possibilité de sorties automatique de graphiques ;
***************************************************;
![]()