bart bartScoreMargin

Evaluación de Eficacia de Dosis en un Ensayo Clínico a Gran Escala

Scénario de test & Cas d'usage

Contexto empresarial

Un laboratorio farmacéutico está analizando los datos de un ensayo clínico a gran escala para un nuevo medicamento. Necesitan evaluar cómo diferentes dosis (50mg vs 100mg) afectan un biomarcador de mejora de la salud, controlando por el grupo de edad del paciente (Joven vs. Adulto), que es una variable categórica.
Sobre el conjunto : bart

Modelos de árboles de regresión aditiva bayesiana.

Descubrir todas las acciones de bart
Preparación de datos

Genera un conjunto de datos voluminoso (50,000 pacientes) para simular un ensayo clínico. Incluye un ID de paciente, un biomarcador de mejora, la dosis administrada, una condición preexistente y un grupo de edad categórico ('Joven', 'Adulto').

¡Copiado!
1DATA mycas.ensayo_clinico_vol(drop=i);
2 call streaminit(456);
3 LENGTH edad_grupo $ 6;
4 DO i = 1 to 50000;
5 paciente_id = i;
6 condicion_previa = rand('BERNOULLI', 0.3);
7 IF rand('UNIFORM') > 0.4 THEN edad_grupo = 'Adulto'; ELSE edad_grupo = 'Joven';
8 IF rand('UNIFORM') > 0.5 THEN dosis_medicamento = 100; ELSE dosis_medicamento = 50;
9 mejora_salud = (dosis_medicamento * 0.15) - (condicion_previa * 5) + (ifc(edad_grupo='Joven', 10, 0)) + rand('NORMAL', 0, 5);
10 OUTPUT;
11 END;
12RUN;

Étapes de réalisation

1
Entrenar un modelo BART sobre el gran conjunto de datos para predecir la 'mejora_salud'. La variable categórica 'edad_grupo' se incluye como predictor.
¡Copiado!
1PROC CAS;
2 LOADACTIONSET 'bart';
3 bart.bartGauss RESULT=res /
4 TABLE={name='ensayo_clinico_vol'},
5 inputs={{name='dosis_medicamento'}, {name='condicion_previa'}, {name='edad_grupo'}},
6 target='mejora_salud',
7 nominals={{name='edad_grupo'}},
8 saveState={name='modelo_ensayo_clinico', replace=true};
9RUN;
2
Calcular cuatro márgenes predictivos para cada combinación de dosis (50, 100) y grupo de edad ('Joven', 'Adulto'). Luego, calcular la diferencia de efecto de la dosis (100mg vs 50mg) dentro de cada grupo de edad.
¡Copiado!
1PROC CAS;
2 bart.bartScoreMargin /
3 TABLE={name='ensayo_clinico_vol'},
4 model={name='modelo_ensayo_clinico'},
5 margins={{name='joven_50mg', at={{var='edad_grupo', value='Joven'}, {var='dosis_medicamento', value=50}}},
6 {name='joven_100mg', at={{var='edad_grupo', value='Joven'}, {var='dosis_medicamento', value=100}}},
7 {name='adulto_50mg', at={{var='edad_grupo', value='Adulto'}, {var='dosis_medicamento', value=50}}},
8 {name='adulto_100mg', at={{var='edad_grupo', value='Adulto'}, {var='dosis_medicamento', value=100}}}},
9 differences={{name='dif_joven', evtMargin='joven_100mg', refMargin='joven_50mg'},
10 {name='dif_adulto', evtMargin='adulto_100mg', refMargin='adulto_50mg'}},
11 casOut={name='eficacia_dosis_out', replace=true};
12RUN;
13QUIT;

Resultado esperado


La tabla de salida 'eficacia_dosis_out' debe contener 6 filas. Cuatro filas para los márgenes predictivos de cada segmento y dos filas para las diferencias. Se espera que las diferencias ('dif_joven', 'dif_adulto') sean positivas, mostrando el beneficio de la dosis más alta. El análisis permitirá comparar si este beneficio es significativamente diferente entre jóvenes y adultos.