Publicado el :
Estadística CREATION_INTERNE

Ejemplo 8 para PROC GLMSELECT

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script ilustra el uso del procedimiento GLMSELECT para la selección de variables. Comienza generando un conjunto de datos de regresores a través de la macro `%makeRegressorData`. Luego, la macro `%AddDepVar` añade una variable dependiente `y` en función de un modelo lineal y un error aleatorio. Finalmente, se realizan dos llamadas a `PROC GLMSELECT`: la primera con el método de selección LASSO, y la segunda con el método Group LASSO.
Análisis de datos

Type : CREATION_INTERNE


Los datos se generan completamente dentro del script. La macro `%makeRegressorData` crea las variables independientes (continuas y de clasificación) con valores aleatorios. La macro `%AddDepVar` añade luego la variable dependiente `y` basándose en una fórmula lineal aplicada a las variables creadas previamente.

1 Bloque de código
Macro Data
Explicación :
Definición de dos macros. `%makeRegressorData` genera las variables explicativas (continuas y categóricas) utilizando funciones de números aleatorios. `%AddDepVar` añade una variable dependiente `y` a un conjunto de datos basándose en una fórmula y un error aleatorio.
¡Copiado!
1%macro makeRegressorData(DATA=,nObs=500,nCont=5,nClass=5,nLev=3);
2 DATA &DATA;
3 drop i j;
4 %IF &nCont>0 %THEN %DO; array x{&nCont} x1-x&nCont; %END;
5 %IF &nClass>0 %THEN %DO; array c{&nClass} c1-c&nClass;%END;
6 DO i = 1 to &nObs;
7 %IF &nCont>0 %THEN %DO;
8 DO j= 1 to &nCont;
9 x{j} = rannor(1);
10 END;
11 %END;
12 %IF &nClass > 0 %THEN %DO;
13 DO j=1 to &nClass;
14 IF mod(j,3) = 0 THEN c{j} = ranbin(1,&nLev,.6);
15 ELSE IF mod(j,3) = 1 THEN c{j} = ranbin(1,&nLev,.5);
16 ELSE IF mod(j,3) = 2 THEN c{j} = ranbin(1,&nLev,.4);
17 END;
18 %END;
19 OUTPUT;
20 END;
21 RUN;
22%mend;
23 
24%macro AddDepVar(DATA=,modelRHS =,errorStd = 1);
25 DATA &DATA;
26 SET &DATA;
27 y = &modelRHS + &errorStd * rannor(1);
28 RUN;
29%mend;
2 Bloque de código
DATA STEP Data
Explicación :
Ejecución de las macros para crear la tabla de trabajo `traindata`. La primera macro genera los regresores y la segunda calcula y añade la variable dependiente `y`.
¡Copiado!
1%makeRegressorData(DATA=traindata,nObs=500,nCont=5,nClass=5,nLev=3);
2 
3%AddDepVar(DATA = traindata,
4 modelRHS= x1 +
5 0.1*x2 - 0.1*x3 - 0.01* x4 -
6 c1,
7 errorStd= 1);
3 Bloque de código
PROC GLMSELECT
Explicación :
Activa los gráficos ODS, luego ejecuta el procedimiento `glmselect` para realizar una selección de modelo mediante el método LASSO. Las variables de clasificación `c1-c5` pueden dividirse (`split`). Se crea un efecto spline para `x1`. El criterio SBC se utiliza para elegir el mejor modelo entre los 20 pasos de la selección.
¡Copiado!
1ods graphics on;
2 
3PROC GLMSELECT DATA=traindata plots=coefficients;
4 class c1-c5/split;
5 effect s1=spline(x1/split);
6 model y = s1 x2-x5 c:/
7 selection=lasso(steps=20 choose=sbc);
8RUN;
4 Bloque de código
PROC GLMSELECT
Explicación :
Ejecuta `proc glmselect` por segunda vez, utilizando el método de selección Group LASSO. Las variables `x2`, `x3` y `x4` se agrupan en un efecto de colección `s2`, forzando su selección o exclusión como bloque. El parámetro `rho` ajusta la penalización.
¡Copiado!
1PROC GLMSELECT DATA=traindata plots=coefficients;
2 class c1-c5;
3 effect s1=spline(x1);
4 effect s2=collection(x2 x3 x4);
5 model y = s1 s2 x5 c:/
6 selection=grouplasso(steps=20 choose=sbc rho=0.8);
7RUN;
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.
Información de copyright : S A S S A M P L E L I B R A R Y