Le script commence par définir un jeu de données `trauma` avec des données en ligne. Il exécute ensuite un test t observé. Puis, il utilise PROC IML pour générer des milliers de permutations des données et applique un test t à chaque permutation. Les résultats de ces tests t permutés (les différences de moyennes) sont stockés dans un jeu de données `diff` via ODS. Enfin, il visualise la distribution des différences permutées avec PROC UNIVARIATE et calcule le nombre de différences permutées aussi extrêmes ou plus extrêmes que la différence observée pour déterminer une p-value empirique.
Analyse des données
Type : CREATION_INTERNE
Le jeu de données 'trauma' est créé directement dans le script via des 'datalines'. Les jeux de données 'newds', 'diff' et 'numdiffs' sont générés en interne par les procédures SAS ('PROC IML', 'PROC TTEST', 'DATA STEP').
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données 'trauma' en utilisant des données en ligne (`datalines`). Il contient deux variables : `state` (catégorielle, indiquant si le sujet est 'Non-Trauma' ou 'Trauma') et `kcal` (numérique, représentant une mesure).
Explication : Cette procédure `PROC TTEST` réalise un test t standard pour comparer la moyenne de la variable `kcal` entre les deux groupes définis par la variable `state`. C'est le test observé initial dont la différence de moyennes sera comparée aux résultats des permutations.
Copié !
proc ttest data=trauma;
class state;
*may need to convert School to numeric;
var kcal;
run;
1
PROC TTESTDATA=trauma;
2
class state;
3
*may need to convert School to numeric;
4
var kcal;
5
RUN;
3 Bloc de code
ODS
Explication : Ces commandes ODS (Output Delivery System) désactivent temporairement la génération de toutes les sorties pour les procédures SAS suivantes, afin d'éviter d'encombrer le log ou les fichiers de sortie avec les résultats intermédiaires des nombreuses permutations.
Copié !
ods output off;
ods exclude all;
1
ods OUTPUT off;
2
ods exclude all;
4 Bloc de code
PROC IML Data
Explication : Ce bloc `PROC IML` (Interactive Matrix Language) est le cœur du test de permutation. Il lit le jeu de données 'trauma', puis effectue 5000 permutations aléatoires de la variable `kcal` à l'aide de la fonction `ranperm`. Les données permutées sont ensuite combinées avec la variable `state` originale et sauvegardées dans un nouveau jeu de données nommé `newds`. Ce jeu de données `newds` sera utilisé pour les tests t de permutation.
Copié !
proc iml ;
use trauma;
read all var{state kcal} into x;
*change varibale names here ... make sure it is class then var ... in that order.;
p=t(ranperm(x[, 2], 5000));
*Note that the "1000" here is the number of permutations. ;
paf=x[, 1]||p;
create newds from paf;
append from paf;
quit;
1
PROC IML ;
2
use trauma;
3
read all var{state kcal} into x;
4
*change varibale names here ... make sure it is class then var ... in that order.;
5
p=t(ranperm(x[, 2], 5000));
6
*Note that the "1000" here is the number of permutations. ;
7
paf=x[, 1]||p;
8
create newds from paf;
9
append from paf;
10
QUIT;
5 Bloc de code
ODS
Explication : Cette commande ODS capture la table de sortie `conflimits` de la prochaine `PROC TTEST` et l'enregistre dans un jeu de données SAS nommé `diff`. Cette table contient les intervalles de confiance et les moyennes des différences pour chaque permutation.
Copié !
ods output conflimits=diff;
1
ods OUTPUT conflimits=diff;
6 Bloc de code
PROC TTEST
Explication : Cette `PROC TTEST` est appliquée au jeu de données `newds` (qui contient les données permutées). Elle compare les moyennes de la variable `col2` (représentant `kcal` permutée) entre les groupes définis par `col1` (représentant `state`). Le paramètre `plots=none` supprime la génération de graphiques pour ces nombreux tests. Les résultats des différences de moyennes sont capturés dans le jeu de données `diff` par la commande ODS précédente.
Copié !
proc ttest data=newds plots=none;
class col1;
var col2 - col1001;
run;
1
PROC TTESTDATA=newds plots=none;
2
class col1;
3
var col2 - col1001;
4
RUN;
7 Bloc de code
ODS
Explication : Ces commandes ODS réactivent la génération normale des sorties, permettant aux procédures SAS ultérieures de produire leurs résultats.
Copié !
ods output on;
ods exclude none;
1
ods OUTPUT on;
2
ods exclude none;
8 Bloc de code
PROC UNIVARIATE
Explication : Cette `PROC UNIVARIATE` est utilisée pour analyser et visualiser la distribution des différences de moyennes obtenues à partir des tests t de permutation (stockées dans le jeu de données `diff`). Un histogramme de la variable `mean` (les différences de moyennes) est généré, montrant la distribution nulle empirique.
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;
9 Bloc de code
DATA STEP Data
Explication : Ce DATA STEP crée le jeu de données 'numdiffs'. Il filtre le jeu de données `diff` pour identifier les permutations dont la valeur absolue de la différence de moyennes (`mean`) est supérieure ou égale à la différence observée (`7.8089`). Le nombre d'observations dans ce jeu de données 'numdiffs' sera utilisé pour calculer la p-value empirique.
Copié !
data numdiffs;
set diff;
where method="Pooled";
if abs(mean) >=7.8089;
*you will need to put the observed difference you got from t test above here. note if you have a one or two tailed test.;
run;
1
DATA numdiffs;
2
SET diff;
3
where method="Pooled";
4
5
IF abs(mean) >=7.8089;
6
*you will need to put the observed difference you got from t test above here. note if you have a one or two tailed test.;
7
RUN;
10 Bloc de code
PROC PRINT
Explication : Cette `PROC PRINT` affiche le contenu du jeu de données `numdiffs`. Elle est utilisée pour une inspection rapide et visuelle des différences de moyennes permutées qui étaient aussi extrêmes ou plus extrêmes que la différence observée.
Copié !
proc print data=numdiffs;
where method="Pooled";
run;
1
2
PROC PRINT
3
DATA=numdiffs;
4
where method="Pooled";
5
RUN;
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.
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.