Publicado el :
Estadística CREATION_INTERNE

Procedimiento BART: Almacenamiento y Puntuación

Este código también está disponible en: Deutsch English Français
En espera de validación
El procedimiento BART permite construir modelos predictivos robustos. Esta funcionalidad es particularmente útil para la predicción en nuevos conjuntos de datos o para el análisis de intervenciones en variables explicativas. El ejemplo proporcionado ilustra la creación de un modelo BART, su almacenamiento en un almacén analítico, y luego su carga para la predicción y el cálculo de márgenes predictivos. Las opciones TRAININMEM y MAPINMEM se utilizan para optimizar el proceso en la memoria CAS. Las instrucciones MARGIN y MARGINDIFF se presentan para el análisis de los efectos de cambios específicos en los predictores.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos sintéticos generados por la función rand() de SAS para simular un conjunto de datos con una variable de respuesta continua (y) y 40 variables explicativas continuas (x1-x40). Solo x1-x5 afectan realmente la variable de respuesta.

1 Bloque de código
PROC BART Data
Explicación :
Este ejemplo genera un conjunto de datos sintético de 10,000 observaciones y entrena un modelo BART usando `PROC BART`. Luego, el modelo se almacena en un almacén analítico llamado `mylib.modelFit` utilizando la instrucción `STORE`. Las opciones `trainInMem` y `mapInMem` se usan para mejorar el rendimiento al manejar los datos y los elementos del modelo en la memoria CAS, lo que se recomienda para datos de tamaño moderado.
¡Copiado!
1/* Création du jeu de données d'entraînement simulé */
2DATA mylib.inputData / single =yes;
3 drop j w1-w40;
4 array x{40};
5 array w{40};
6 call streaminit(6524);
7 pi=constant("pi");
8 
9 DO i=1 to 10000;
10 u = rand("Uniform");
11 DO j=1 to dim(x);
12 w{j} = rand("Uniform");
13 x{j} = (w{j} + u)/2;
14 END;
15 
16 f1 = sin(pi * x1 * x2 );
17 f2 = (x3-0.5)**2;
18 f3 = x4;
19 f4 = x5;
20 fb = 10*f1 +20*f2+10*f3+5*f4;
21 
22 y = fb + rand("Normal");
23 OUTPUT;
24 END;
25RUN;
26 
27/* Entraînement du modèle BART et stockage dans un magasin analytique */
28PROC BART DATA=mylib.inputData seed=9181 trainInMem mapInMem;
29 model y = x1-x40;
30 store mylib.modelFit;
31RUN;
2 Bloque de código
PROC BART / PROC MEANS Data
Explicación :
Este segundo ejemplo genera un nuevo conjunto de datos de 1,000 observaciones (`mylib.toScoreData`) para la predicción. Luego usa `PROC BART` con la opción `RESTORE=mylib.modelFit` para cargar el modelo previamente guardado y predecir la variable de respuesta. La instrucción `OUTPUT` se usa para crear una tabla `mylib.scoredData` que contiene las predicciones (`predResp`) y los residuos (`residual`). Finalmente, un paso `DATA` y `PROC MEANS` se emplean para calcular el error cuadrático medio (ASE) de las predicciones, permitiendo evaluar la generalización del modelo.
¡Copiado!
1/* Création du jeu de données à scorer simulé */
2DATA mylib.toScoreData / single =yes;
3 drop j w1-w40;
4 array x{40};
5 array w{40};
6 call streaminit(1972);
7 pi=constant("pi");
8 
9 DO i=1 to 1000;
10 u = rand("Uniform");
11 DO j=1 to dim(x);
12 w{j} = rand("Uniform");
13 x{j} = (w{j} + u)/2;
14 END;
15 
16 f1 = sin(pi * x1 * x2 );
17 f2 = (x3-0.5)**2;
18 f3 = x4;
19 f4 = x5;
20 fb = 10*f1 +20*f2+10*f3+5*f4;
21 
22 y = fb + rand("Normal");
23 OUTPUT;
24 END;
25RUN;
26 
27/* Scoring des nouvelles observations en utilisant le modèle stocké */
28PROC BART DATA=mylib.toScoreData restore=mylib.modelFit;
29 OUTPUT out = mylib.scoredData pred = predResp resid = residual;
30RUN;
31 
32/* Calcul de l'erreur carrée moyenne (ASE) pour les données scorées */
33DATA fitCheck;
34 SET mylib.scoredData;
35 SquareError = residual * residual;
36RUN;
37 
38PROC MEANS DATA=fitCheck mean;
39 var SquareError;
40RUN;
3 Bloque de código
PROC BART
Explicación :
Este ejemplo ilustra el uso de la instrucción `MARGIN` para calcular los márgenes predictivos del modelo BART. Usando el modelo guardado (`mylib.modelFit`) y los datos de entrenamiento, se definen escenarios de intervención donde los valores de las variables explicativas (aquí `x1`, `x2`, `x3`) son modificados. Por ejemplo, 'Scenario1' fija `x2` en 0.25, mientras que 'Scenario2' fija `x2` en 0.25 y `x3` en 0.5. Esto permite analizar el impacto de cambios controlados en las predicciones del modelo.
¡Copiado!
1/* Calcul des marges prédictives avec interventions */
2PROC BART restore = mylib.modelFit DATA=mylib.inputData;
3 margin "Scenario1" x2 = 0.25;
4 margin "Scenario2" x2 = 0.25 x3 = 0.5;
5 margin "x1Ref" x1 = 0.25;
6 margin "x1Evt1" x1 = 0.5;
7 margin "x1Evt2" x1 = 0.75;
8RUN;
4 Bloque de código
PROC BART
Explicación :
Este último ejemplo se basa en el cálculo de los márgenes predictivos para realizar comparaciones. La instrucción `MARGINDIFF` se utiliza para especificar contrastes entre diferentes márgenes predictivos definidos por la instrucción `MARGIN`. Aquí, los efectos de la intervención en `x1` a 0.5 y 0.75 se comparan con un valor de referencia de `x1` a 0.25. Esto permite obtener directamente las diferencias medias de las estimaciones de los márgenes predictivos con sus intervalos de credibilidad, ofreciendo un análisis comparativo de los escenarios.
¡Copiado!
1/* Calcul et comparaison des différences de marges prédictives */
2PROC BART restore = mylib.modelFit DATA=mylib.inputData;
3 margin "x1Ref" x1 = 0.25;
4 margin "x1Evt1" x1 = 0.5;
5 margin "x1Evt2" x1 = 0.75;
6 margindiff event = "x1Evt1" ref = "x1Ref" / label= "x1:0.5 - 0.25";
7 margindiff event = "x1Evt2" ref = "x1Ref" / label= "x1:0.75 - 0.25";
8RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.