Ce programme génère d'abord un petit jeu de données 'cash'. Il effectue un test t de Student standard pour obtenir la différence observée. Ensuite, il utilise PROC IML pour générer 1000 permutations aléatoires de la variable réponse ('Money'), simulant l'hypothèse nulle. Il exécute des tests t sur ces 1000 itérations et compare la distribution des différences simulées à la différence observée pour dériver une p-value empirique.
Analyse des données
Type : CREATION_INTERNE
Les données sont créées manuellement via l'instruction DATALINES dans le premier DATA step.
1 Bloc de code
DATA STEP Data
Explication : Création du jeu de données 'cash' contenant deux variables : School (groupe) et Money (valeur numérique).
Explication : Exécution du test t de Student initial sur les données observées pour calculer la différence de moyenne réelle entre les groupes.
Copié !
proc ttest data=cash;
class School;
*may need to convert School to numeric;
var Money;
run;
1
PROC TTESTDATA=cash;
2
class School;
3
*may need to convert School to numeric;
4
var Money;
5
RUN;
3 Bloc de code
PROC IML Data
Explication : Utilisation du langage matriciel IML pour lire les données, générer 1000 permutations aléatoires de la colonne 'Money' (rééchantillonnage sans remise) et créer une grande table 'newds' contenant les groupes originaux et les 1000 vecteurs permutés.
Copié !
ods output off;
ods exclude all;
proc iml ;
use cash;
read all var{School Money} into x;
p=t(ranperm(x[, 2], 1000));
paf=x[, 1]||p;
create newds from paf;
append from paf;
quit;
1
ods OUTPUT off;
2
ods exclude all;
3
4
PROC IML ;
5
use cash;
6
read all var{School Money} into x;
7
p=t(ranperm(x[, 2], 1000));
8
paf=x[, 1]||p;
9
create newds from paf;
10
append from paf;
11
QUIT;
4 Bloc de code
PROC TTEST Data
Explication : Exécution massive de tests t sur les 1000 colonnes permutées (col2 à col1001) par rapport au groupe (col1). Les résultats (limites de confiance/différences) sont capturés dans la table 'diff' via ODS OUTPUT.
Copié !
ods output conflimits=diff;
proc ttest data=newds plots=none;
class col1;
var col2 - col1001;
run;
ods output on;
ods exclude none;
1
ods OUTPUT conflimits=diff;
2
3
PROC TTESTDATA=newds plots=none;
4
class col1;
5
var col2 - col1001;
6
RUN;
7
8
ods OUTPUT on;
9
ods exclude none;
5 Bloc de code
PROC UNIVARIATE
Explication : Analyse de la distribution des différences de moyennes (variable 'mean' dans la table de sortie 'diff') obtenues par permutation, avec génération d'un histogramme.
Copié !
proc univariate data=diff;
where method="Pooled";
var mean;
histogram mean;
run;
1
PROC UNIVARIATEDATA=diff;
2
where method="Pooled";
3
var mean;
4
histogram mean;
5
RUN;
6 Bloc de code
DATA STEP Data
Explication : Filtrage des permutations dont la différence de moyenne est aussi extrême ou plus extrême que la différence observée (codée en dur ici à 114.6). Le nombre d'observations résultant divisé par 1000 donne la p-value estimée.
Copié !
data numdiffs;
set diff;
where method="Pooled";
if abs(mean) >=114.6;
run;
proc print data=numdiffs;
where method="Pooled";
run;
1
DATA numdiffs;
2
SET diff;
3
where method="Pooled";
4
5
IF abs(mean) >=114.6;
6
RUN;
7
8
PROC PRINTDATA=numdiffs;
9
where method="Pooled";
10
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.