Scénario de test & Cas d'usage
Análisis de inferencia causal y estimación de efectos.
Descubrir todas las acciones de causalanalysisSimulación de un ensayo clínico con covariables (edad, IMC), asignación de tratamiento y cálculo previo de probabilidades de propensión y predicciones de resultados (requisito del método agnóstico).
| 1 | |
| 2 | DATA mycas.clinical_trial; |
| 3 | call streaminit(999); |
| 4 | DO i = 1 to 500; |
| 5 | age = rand('NORMAL', 50, 10); |
| 6 | bmi = rand('NORMAL', 25, 4); |
| 7 | prob_A = logistic(-2 + 0.05*age - 0.02*bmi); |
| 8 | IF rand('UNIFORM') < prob_A THEN treatment = 'NewDrug'; |
| 9 | ELSE treatment = 'Standard'; |
| 10 | /* Efecto real: NewDrug reduce 5 puntos más */ base_bp = 140 + 0.5*age + 0.2*bmi; |
| 11 | noise = rand('NORMAL', 0, 5); |
| 12 | IF treatment = 'NewDrug' THEN bp_reduction = 15 + noise; |
| 13 | ELSE bp_reduction = 10 + noise; |
| 14 | /* Predicciones simuladas para AIPW */ pred_NewDrug = 15; |
| 15 | pred_Standard = 10; |
| 16 | OUTPUT; |
| 17 | END; |
| 18 | |
| 19 | RUN; |
| 20 |
| 1 | |
| 2 | PROC CAS; |
| 3 | causalanalysis.caEffect / TABLE={name='clinical_trial'} method='AIPW' treatVar={name='treatment'} outcomeVar={name='bp_reduction', type='CONTINUOUS'} pom={{trtLev='NewDrug', trtProb='prob_A', predOut='pred_NewDrug'}, {trtLev='Standard', trtProb='prob_A', predOut='pred_Standard'}} difference={{evtLev={'NewDrug'}, refLev={'Standard'}}} inference=true; |
| 4 | |
| 5 | RUN; |
| 6 |
La acción debe generar tablas de salida que muestren las Medias de Resultados Potenciales (POM) para ambos medicamentos. La tabla de 'Efectos' debe mostrar una diferencia estimada cercana a 5 puntos (a favor del nuevo fármaco) con intervalos de confianza válidos, confirmando la eficacia del tratamiento bajo el enfoque doblemente robusto.