Scénario de test & Cas d'usage
Création d'une table de 200 patients avec temps de survie (mois), statut de censure (0=censuré, 1=décès), groupe de traitement, âge et sexe.
| 1 | |
| 2 | DATA casuser.clinical_data; |
| 3 | call streaminit(123); |
| 4 | DO i=1 to 200; |
| 5 | treatment = rand('BERNOULLI', 0.5); |
| 6 | age = 50 + floor(rand('NORMAL') * 10); |
| 7 | IF rand('UNIFORM') < 0.5 THEN sex='F'; |
| 8 | ELSE sex='M'; |
| 9 | hazard = exp(0.5*treatment + 0.02*age); |
| 10 | time = rand('EXPONENTIAL') / hazard; |
| 11 | IF time > 24 THEN DO; |
| 12 | time=24; |
| 13 | STATUS=0; |
| 14 | END; |
| 15 | ELSE STATUS=1; |
| 16 | OUTPUT; |
| 17 | END; |
| 18 | |
| 19 | RUN; |
| 20 |
| 1 | |
| 2 | PROC CAS; |
| 3 | phreg.cox / TABLE={name="clinical_data"} model={depVars={{name="time"}}, censor="status", censVals={0}, effects={{vars={"treatment", "age", "sex"}}}} code={casOut={name="score_code", replace=TRUE}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.tableInfo / TABLE="score_code"; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Le modèle converge et produit les Hazard Ratios pour les variables treatment, age et sex. La table 'score_code' est créée dans la caslib et contient le code DATA step nécessaire pour prédire le risque sur de nouvelles données.