Test de Permutation Monte Carlo avec PROC IML

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Le script commence par créer un jeu de données interne. Il effectue un premier test T pour observer la différence réelle. Ensuite, il utilise PROC IML pour générer 1000 permutations aléatoires de la variable cible 'Money'. Ces permutations sont analysées par PROC TTEST pour générer une distribution empirique des différences de moyennes sous l'hypothèse nulle. Enfin, PROC UNIVARIATE et un DATA step calculent la p-value empirique en comparant la statistique observée à la distribution simulée.
Analyse des données

Type : CREATION_INTERNE


Les données sont définies directement dans le script via l'instruction datalines dans le dataset 'cash'.

1 Bloc de code
DATA STEP Data
Explication :
Création du jeu de données initial 'cash' contenant les variables 'School' et 'Money' avec des données intégrées.
Copié !
1DATA cash;
2 INPUT School Money;
3 
4DATALINES;
50 34
60 1200
7...
81 3
91 0
10;
2 Bloc de code
PROC TTEST
Explication :
Exécution du test T de Student initial pour obtenir la différence de moyennes observée sur les données réelles.
Copié !
1PROC TTEST DATA=cash;
2 class School;
3 var Money;
4RUN;
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' (variable x[,2]) tout en gardant 'School' fixe, et sauvegarder le résultat dans 'newds'.
Copié !
1ods OUTPUT off;
2ods exclude all;
3 
4PROC 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
Explication :
Calcul des tests T pour les 1000 colonnes permutées (col2 à col1001) par rapport à la variable de groupe (col1). Les résultats (limites de confiance incluant la moyenne) sont exportés dans la table 'diff'.
Copié !
1ods OUTPUT conflimits=diff;
2 
3PROC TTEST DATA=newds plots=none;
4 class col1;
5 var col2 - col1001;
6RUN;
7 
8ods OUTPUT on;
9ods exclude none;
5 Bloc de code
PROC UNIVARIATE
Explication :
Analyse de la distribution des différences de moyennes simulées (stockées dans la variable 'mean' de la table 'diff').
Copié !
1PROC UNIVARIATE DATA=diff;
2 where method="Pooled";
3 var mean;
4 histogram mean;
5RUN;
6 Bloc de code
DATA STEP Data
Explication :
Filtrage des résultats simulés pour ne garder que ceux dont la différence absolue est supérieure ou égale à la valeur observée (114.6), afin de calculer la p-value.
Copié !
1DATA numdiffs;
2 SET diff;
3 where method="Pooled";
4 
5 IF abs(mean) >=114.6;
6RUN;
7 Bloc de code
PROC PRINT
Explication :
Affichage des permutations qui satisfont le critère d'extrémisme pour vérification visuelle.
Copié !
1 
2PROC PRINT
3DATA=numdiffs;
4where method="Pooled";
5RUN;
6 
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.