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!
%macro makeRegressorData(data=,nObs=500,nCont=5,nClass=5,nLev=3);
data &data;
drop i j;
%if &nCont>0 %then %do; array x{&nCont} x1-x&nCont; %end;
%if &nClass>0 %then %do; array c{&nClass} c1-c&nClass;%end;
do i = 1 to &nObs;
%if &nCont>0 %then %do;
do j= 1 to &nCont;
x{j} = rannor(1);
end;
%end;
%if &nClass > 0 %then %do;
do j=1 to &nClass;
if mod(j,3) = 0 then c{j} = ranbin(1,&nLev,.6);
else if mod(j,3) = 1 then c{j} = ranbin(1,&nLev,.5);
else if mod(j,3) = 2 then c{j} = ranbin(1,&nLev,.4);
end;
%end;
output;
end;
run;
%mend;
%macro AddDepVar(data=,modelRHS =,errorStd = 1);
data &data;
set &data;
y = &modelRHS + &errorStd * rannor(1);
run;
%mend;
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`.
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!
ods graphics on;
proc glmselect data=traindata plots=coefficients;
class c1-c5/split;
effect s1=spline(x1/split);
model y = s1 x2-x5 c:/
selection=lasso(steps=20 choose=sbc);
run;
1
ods graphics on;
2
3
PROC GLMSELECTDATA=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);
8
RUN;
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!
proc glmselect data=traindata plots=coefficients;
class c1-c5;
effect s1=spline(x1);
effect s2=collection(x2 x3 x4);
model y = s1 s2 x5 c:/
selection=grouplasso(steps=20 choose=sbc rho=0.8);
run;
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
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.