bart bartScoreMargin

Scoring à grande échelle de l'efficacité d'un traitement médical

Scénario de test & Cas d'usage

Contexte Métier

Une organisation de recherche clinique analyse les données d'un essai à grande échelle (500 000 patients). Elle doit évaluer l'effet de différentes doses d'un nouveau médicament sur la réduction de la pression artérielle, en s'assurant que le processus de scoring est performant et ne sature pas la mémoire du client.
À propos du Set : bart

Modèles d'arbres de régression additive bayésienne.

Découvrir toutes les actions de bart
Préparation des Données

Génération d'un jeu de données volumineux simulant un essai clinique. La réduction de la pression artérielle dépend de la dose et de l'âge.

Copié !
1DATA casuser.clinical_trial_large;
2 call streaminit(1234);
3 DO patient_id = 1 to 500000;
4 age = 30 + floor(rand('UNIFORM') * 45);
5 dosage_mg = 10 * (1 + floor(rand('UNIFORM') * 5)); /* Doses de 10, 20, 30, 40, 50 */
6 reduction_pression = 5 + (dosage_mg * 0.2) - (age * 0.1) + rand('NORMAL', 0, 3);
7 OUTPUT;
8 END;
9RUN;

Étapes de réalisation

1
Entraînement d'un modèle BART sur un échantillon de 1% des données pour accélérer la phase de modélisation.
Copié !
1PROC CAS;
2 LOADACTIONSET 'bart';
3 LOADACTIONSET 'sampling';
4 
5 sampling.srs TABLE={name='clinical_trial_large'},
6 samppct=1,
7 partind=true,
8 OUTPUT={casout={name='clinical_sample', replace=true}, copyvars='ALL'};
9 
10 bart.bartGauss TABLE={name='clinical_sample', where='_PartInd_ = 1'},
11 model={depvar='reduction_pression', effects={'age', 'dosage_mg'}},
12 store={name='model_clinical', replace=true};
13RUN;
2
Exécution de bartScoreMargin sur la table complète (500 000 obs) pour 3 niveaux de dosage. Le résultat est stocké dans une table CAS pour éviter le transfert de données vers le client.
Copié !
1PROC CAS;
2 bart.bartScoreMargin TABLE='clinical_trial_large',
3 model='model_clinical',
4 margins={
5 {name='margin_low_dose', at={{var='dosage_mg', value=10}}},
6 {name='margin_medium_dose', at={{var='dosage_mg', value=30}}},
7 {name='margin_high_dose', at={{var='dosage_mg', value=50}}}
8 },
9 casOut={name='clinical_margins_large', replace=true, label='Résultats Marges Essai Clinique Volumineux'};
10RUN;
11QUIT;

Résultat Attendu


L'action doit s'exécuter sans erreur sur le grand volume de données. Une table CAS nommée 'clinical_margins_large' doit être créée dans la caslib de l'utilisateur. Les tables de résultats affichées sur le client ('PredMargins', etc.) doivent être présentes mais le résultat principal est la table CAS de sortie, démontrant la capacité de l'action à gérer des données volumineuses côté serveur.