Veröffentlicht am :
Statistik CREATION_INTERNE

Beispiel 8 für PROC GLMSELECT

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript veranschaulicht die Verwendung der PROC GLMSELECT-Prozedur zur Variablenauswahl. Es beginnt mit der Generierung eines Regressordatensatzes über das Makro `%makeRegressorData`. Anschließend fügt das Makro `%AddDepVar` eine abhängige Variable `y` basierend auf einem linearen Modell und einem Zufallsfehler hinzu. Schließlich werden zwei Aufrufe von `PROC GLMSELECT` durchgeführt: der erste mit der LASSO-Auswahlmethode und der zweite mit der Group-LASSO-Methode.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden vollständig innerhalb des Skripts generiert. Das Makro `%makeRegressorData` erstellt die unabhängigen Variablen (kontinuierlich und klassifizierend) mit Zufallswerten. Das Makro `%AddDepVar` fügt dann die abhängige Variable `y` hinzu, basierend auf einer linearen Formel, die auf die zuvor erstellten Variablen angewendet wird.

1 Codeblock
Macro Data
Erklärung :
Definition von zwei Makros. `%makeRegressorData` generiert die erklärenden Variablen (kontinuierlich und kategorial) unter Verwendung von Zufallszahlenfunktionen. `%AddDepVar` fügt eine abhängige Variable `y` zu einem Datensatz hinzu, basierend auf einer Formel und einem Zufallsfehler.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Ausführung der Makros zur Erstellung der Arbeitstabelle `traindata`. Das erste Makro generiert die Regressoren und das zweite berechnet und fügt die abhängige Variable `y` hinzu.
Kopiert!
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 Codeblock
PROC GLMSELECT
Erklärung :
Aktiviert ODS-Grafiken und führt dann die Prozedur `glmselect` aus, um eine Modellauswahl mittels der LASSO-Methode durchzuführen. Die Klassifikationsvariablen `c1-c5` können aufgeteilt werden (`split`). Ein Spline-Effekt wird für `x1` erstellt. Das SBC-Kriterium wird verwendet, um das beste Modell aus den 20 Auswahlschritten zu wählen.
Kopiert!
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 Codeblock
PROC GLMSELECT
Erklärung :
Führt `proc glmselect` ein zweites Mal aus, wobei die Group-LASSO-Auswahlmethode verwendet wird. Die Variablen `x2`, `x3` und `x4` werden in einem Sammlungeffekt `s2` gruppiert, was ihre Auswahl oder ihren Ausschluss als Block erzwingt. Der Parameter `rho` passt die Strafe an.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : S A S S A M P L E L I B R A R Y