Publié le :
Statistique CREATION_INTERNE

Exemple 1 pour PROC SEQTEST

En attente de validation
Le script met en œuvre une analyse séquentielle pour un essai clinique simulé. Il commence par définir un plan de test séquentiel de groupe à 4 étapes avec la méthode O'Brien-Fleming via PROC SEQDESIGN. Ensuite, il génère des données simulées pour deux groupes de traitement avec des taux de réponse différents. Le processus d'analyse est démontré en deux étapes : la première analyse est effectuée sur un sous-ensemble des données, suivie d'une deuxième analyse sur un ensemble de données cumulées. À chaque étape, PROC GENMOD est utilisé pour estimer l'effet du traitement, et PROC SEQTEST est appelé pour évaluer si l'essai doit être arrêté prématurément pour efficacité ou futilité, en se basant sur les limites prédéfinies.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées de manière synthétique à l'intérieur du script à l'aide d'une boucle DO et de la fonction RANBIN. Cela simule les résultats d'un essai clinique pour deux groupes de traitement (Trt=0 et Trt=1) sans dépendre de sources de données externes.

1 Bloc de code
PROC SEQDESIGN Data
Explication :
Définit un plan de test séquentiel de groupe à 4 étapes avec la méthode O'Brien-Fleming. Il spécifie une hypothèse alternative unilatérale supérieure (alt=upper) et des critères d'arrêt pour efficacité ou futilité (stop=both). Les limites calculées sont sauvegardées dans la table `Bnd_Count`.
Copié !
1ods graphics on;
2PROC SEQDESIGN altref=0.15
3 boundaryscale=mle
4 ;
5 OBrienFleming: design method=obf
6 nstages=4
7 alt=upper
8 stop=both
9 alpha=0.025
10 ;
11 samplesize model=twosamplefreq(nullprop=0.6 test=prop);
12 ods OUTPUT Boundary=Bnd_Count;
13RUN;
2 Bloc de code
DATA STEP Data
Explication :
Génère une table `count` contenant des données simulées pour un essai. La fonction `RANBIN` est utilisée pour simuler des réponses binaires pour un groupe de contrôle (Trt=0, probabilité de réponse 0.55) et un groupe de traitement (Trt=1, probabilité de réponse 0.74).
Copié !
1DATA count;
2 DO j=1 to 215;
3 Trt=0;
4 Resp= ranbin( 312511, 1, 0.55);
5 OUTPUT;
6 Trt=1;
7 Resp= ranbin( 312511, 1, 0.74);
8 OUTPUT;
9 END;
10RUN;
3 Bloc de code
DATA STEP Data
Explication :
Crée la table `count_1` pour l'analyse de la première étape (Stage 1) en sélectionnant les 54 premières observations du jeu de données complet.
Copié !
1DATA count_1;
2 SET count;
3 IF (j <= 54);
4RUN;
4 Bloc de code
DATA STEP Data
Explication :
Crée la table `count_2` pour l'analyse de la deuxième étape (Stage 2) en sélectionnant les 108 premières observations du jeu de données complet.
Copié !
1DATA count_2;
2 SET count;
3 IF (j <= 108);
4RUN;
5 Bloc de code
PROC PRINT
Explication :
Affiche les 10 premières observations de la table `count` pour une vérification rapide des données générées.
Copié !
1PROC PRINT DATA=count(obs=10);
2 var Trt Resp;
3 title 'First 10 Obs in the Trial Data';
4RUN;
6 Bloc de code
PROC GENMOD Data
Explication :
Applique un modèle linéaire généralisé (`PROC GENMOD`) sur les données de la première étape (`count_1`). Le modèle évalue l'effet du traitement (`Trt`) sur la réponse (`Resp`). Les estimations des paramètres sont sauvegardées dans `Parms_Count1`.
Copié !
1PROC GENMOD DATA=count_1;
2 model Resp= Trt;
3 ods OUTPUT ParameterEstimates=Parms_Count1;
4RUN;
7 Bloc de code
DATA STEP Data
Explication :
Traite la table `Parms_Count1` pour ne conserver que le paramètre d'intérêt ('Trt') et ajoute les variables `_Scale_` et `_Stage_` requises par `PROC SEQTEST`.
Copié !
1DATA Parms_Count1;
2 SET Parms_Count1;
3 IF Parameter='Trt';
4 _Scale_='MLE';
5 _Stage_= 1;
6 keep _Scale_ _Stage_ Parameter Estimate StdErr;
7RUN;
8 Bloc de code
PROC PRINT
Explication :
Affiche les statistiques (paramètres) calculées à l'issue de la première étape pour vérification.
Copié !
1 
2PROC PRINT
3DATA=Parms_Count1;
4title 'Statistics Computed at Stage 1';
5RUN;
6 
9 Bloc de code
PROC SEQTEST Data
Explication :
Exécute la première analyse de test séquentiel. Il utilise les limites définies dans `Bnd_Count` et les estimations des paramètres de `Parms_Count1`. Le résultat du test est sauvegardé dans la table `Test_Count1`.
Copié !
1PROC SEQTEST Boundary=Bnd_Count
2 Parms(Testvar=Trt)=Parms_Count1
3 infoadj=none
4 errspendmin=0.001
5 boundaryscale=mle
6 errspend
7 plots=errspend
8 ;
9 ods OUTPUT Test=Test_Count1;
10RUN;
10 Bloc de code
PROC GENMOD Data
Explication :
Applique un modèle linéaire généralisé sur les données cumulées de la deuxième étape (`Count_2`). Les estimations des paramètres sont sauvegardées dans `Parms_Count2`.
Copié !
1PROC GENMOD DATA=Count_2;
2 model Resp= Trt;
3 ods OUTPUT ParameterEstimates=Parms_Count2;
4RUN;
11 Bloc de code
DATA STEP Data
Explication :
Traite la table `Parms_Count2` pour préparer les données pour la deuxième analyse séquentielle, en spécifiant `_Stage_= 2`.
Copié !
1DATA Parms_Count2;
2 SET Parms_Count2;
3 IF Parameter='Trt';
4 _Scale_='MLE';
5 _Stage_= 2;
6 keep _Scale_ _Stage_ Parameter Estimate StdErr;
7RUN;
12 Bloc de code
PROC PRINT
Explication :
Affiche les statistiques (paramètres) calculées à l'issue de la deuxième étape pour vérification.
Copié !
1 
2PROC PRINT
3DATA=Parms_Count2;
4title 'Statistics Computed at Stage 2';
5RUN;
6 
13 Bloc de code
PROC SEQTEST Data
Explication :
Exécute la deuxième analyse de test séquentiel. Il utilise la table de sortie de l'étape précédente (`Test_Count1`) comme nouvelles limites et y applique les paramètres de l'étape 2 (`Parms_Count2`). Le résultat final est stocké dans `Test_Count2`.
Copié !
1PROC SEQTEST Boundary=Test_Count1
2 Parms(Testvar=Trt)=Parms_Count2
3 infoadj=none
4 boundaryscale=mle
5 ;
6 ods OUTPUT Test=Test_Count2;
7RUN;
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La mise en œuvre d'un plan séquentiel de groupe via PROC SEQDESIGN et PROC SEQTEST est une pratique d'excellence dans les essais cliniques modernes. L'utilisation de la méthode d'O'Brien-Fleming, comme illustrée ici, permet d'instaurer des 'règles d'arrêt' rigoureuses.

L'enjeu est double : éthique et économique. Si l'efficacité du traitement est flagrante dès les premières étapes (analyses intermédiaires), l'essai peut être stoppé prématurément pour offrir le traitement au groupe témoin. Inversement, en cas de futilité, on évite d'exposer davantage de patients à un traitement inefficace. Ce script démontre parfaitement comment SAS permet de gérer l'inflation du risque alpha tout en conservant une puissance statistique optimale à chaque étape du processus cumulatif. »