Scénario de test & Cas d'usage
Analyse d'inférence causale et estimation d'effets.
Découvrir toutes les actions de causalanalysisGénération de 1 million de lignes représentant des patients, avec un traitement binaire (Standard vs Nouveau).
| 1 | |
| 2 | DATA casuser.hospital_large; |
| 3 | call streaminit(12345); |
| 4 | DO i = 1 to 1000000; |
| 5 | age = 50 + rand('Normal', 0, 10); |
| 6 | /* Propensity Score */ ps_new = 1 / (1 + exp(-( -2 + 0.05*age ))); |
| 7 | ps_std = 1 - ps_new; |
| 8 | /* Traitement */ IF rand('Uniform') < ps_new THEN protocol = 'Nouveau'; |
| 9 | ELSE protocol = 'Standard'; |
| 10 | /* Resultat : Duree sejour (jours) */ days = 10 - 0.1*age; |
| 11 | IF protocol='Nouveau' THEN days = days - 2; |
| 12 | /* Effet benefique */ days = days + rand('Normal', 0, 2); |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | |
| 16 | RUN; |
| 17 |
| 1 | |
| 2 | PROC CAS; |
| 3 | SIMPLE.numRows / TABLE={name='hospital_large'}; |
| 4 | |
| 5 | RUN; |
| 6 |
| 1 | |
| 2 | PROC CAS; |
| 3 | causalanalysis.caEffect / TABLE={name='hospital_large'}, treatVar={name='protocol'}, outcomeVar={name='days', type='CONTINUOUS'}, method='IPW', pom=[ {trtLev='Standard', trtProb='ps_std'}, {trtLev='Nouveau', trtProb='ps_new'} ], difference=[ {refLev='Standard', evtLev='Nouveau'} ], inference=false; |
| 4 | /* Inference false pour prioriser la vitesse de calcul des moyennes */ |
| 5 | RUN; |
| 6 |
L'exécution doit se terminer sans erreur de mémoire ou de timeout. Le résultat doit montrer une différence moyenne d'environ -2 jours pour le protocole 'Nouveau'. L'absence d'inférence (inference=false) doit accélérer le rendu.