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!
/* Création du jeu de données d'entraînement simulé */
data mylib.inputData / single =yes;
drop j w1-w40;
array x{40};
array w{40};
call streaminit(6524);
pi=constant("pi");
do i=1 to 10000;
u = rand("Uniform");
do j=1 to dim(x);
w{j} = rand("Uniform");
x{j} = (w{j} + u)/2;
end;
f1 = sin(pi * x1 * x2 );
f2 = (x3-0.5)**2;
f3 = x4;
f4 = x5;
fb = 10*f1 +20*f2+10*f3+5*f4;
y = fb + rand("Normal");
output;
end;
run;
/* Entraînement du modèle BART et stockage dans un magasin analytique */
proc bart data=mylib.inputData seed=9181 trainInMem mapInMem;
model y = x1-x40;
store mylib.modelFit;
run;
1
/* Création du jeu de données d'entraînement simulé */
2
DATA 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;
25
RUN;
26
27
/* Entraînement du modèle BART et stockage dans un magasin analytique */
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!
/* Création du jeu de données à scorer simulé */
data mylib.toScoreData / single =yes;
drop j w1-w40;
array x{40};
array w{40};
call streaminit(1972);
pi=constant("pi");
do i=1 to 1000;
u = rand("Uniform");
do j=1 to dim(x);
w{j} = rand("Uniform");
x{j} = (w{j} + u)/2;
end;
f1 = sin(pi * x1 * x2 );
f2 = (x3-0.5)**2;
f3 = x4;
f4 = x5;
fb = 10*f1 +20*f2+10*f3+5*f4;
y = fb + rand("Normal");
output;
end;
run;
/* Scoring des nouvelles observations en utilisant le modèle stocké */
proc bart data=mylib.toScoreData restore=mylib.modelFit;
output out = mylib.scoredData pred = predResp resid = residual;
run;
/* Calcul de l'erreur carrée moyenne (ASE) pour les données scorées */
data fitCheck;
set mylib.scoredData;
SquareError = residual * residual;
run;
proc means data=fitCheck mean;
var SquareError;
run;
1
/* Création du jeu de données à scorer simulé */
2
DATA 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;
25
RUN;
26
27
/* Scoring des nouvelles observations en utilisant le modèle stocké */
OUTPUT out = mylib.scoredData pred = predResp resid = residual;
30
RUN;
31
32
/* Calcul de l'erreur carrée moyenne (ASE) pour les données scorées */
33
DATA fitCheck;
34
SET mylib.scoredData;
35
SquareError = residual * residual;
36
RUN;
37
38
PROC MEANSDATA=fitCheck mean;
39
var SquareError;
40
RUN;
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.
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.
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.