Die BART-Prozedur ermöglicht den Aufbau robuster prädiktiver Modelle. Diese Funktionalität ist besonders nützlich für die Vorhersage auf neuen Datensätzen oder für die Analyse von Interventionen bei erklärenden Variablen. Das bereitgestellte Beispiel veranschaulicht die Erstellung eines BART-Modells, dessen Speicherung in einem analytischen Speicher und dessen anschließendes Laden zur Vorhersage und Berechnung prädiktiver Margen. Die Optionen TRAININMEM und MAPINMEM werden verwendet, um den Prozess im CAS-Speicher zu optimieren. Die Anweisungen MARGIN und MARGINDIFF werden zur Analyse der Auswirkungen spezifischer Änderungen auf die Prädiktoren vorgestellt.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden synthetische Daten, die mit der SAS-Funktion rand() generiert wurden, um einen Datensatz mit einer kontinuierlichen Antwortvariablen (y) und 40 kontinuierlichen erklärenden Variablen (x1-x40) zu simulieren. Nur x1-x5 beeinflussen tatsächlich die Antwortvariable.
1 Codeblock
PROC BART Data
Erklärung : Dieses Beispiel generiert einen synthetischen Datensatz von 10.000 Beobachtungen und trainiert ein BART-Modell mit `PROC BART`. Das Modell wird dann mithilfe der `STORE`-Anweisung in einem analytischen Speicher namens `mylib.modelFit` gespeichert. Die Optionen `trainInMem` und `mapInMem` werden verwendet, um die Leistung zu verbessern, indem Daten und Modellelemente im CAS-Speicher verwaltet werden, was für moderate Datengrößen empfohlen wird.
Kopiert!
/* 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 */
Erklärung : Dieses zweite Beispiel generiert einen neuen Datensatz von 1.000 Beobachtungen (`mylib.toScoreData`) für die Vorhersage. Es verwendet dann `PROC BART` mit der Option `RESTORE=mylib.modelFit`, um das zuvor gespeicherte Modell zu laden und die Antwortvariable vorherzusagen. Die `OUTPUT`-Anweisung wird verwendet, um eine Tabelle `mylib.scoredData` zu erstellen, die die Vorhersagen (`predResp`) und Residuen (`residual`) enthält. Schließlich werden ein `DATA`-Schritt und `PROC MEANS` verwendet, um den mittleren quadratischen Fehler (ASE) der Vorhersagen zu berechnen, was eine Bewertung der Generalisierung des Modells ermöglicht.
Kopiert!
/* 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 Codeblock
PROC BART
Erklärung : Dieses Beispiel veranschaulicht die Verwendung der `MARGIN`-Anweisung zur Berechnung der prädiktiven Margen des BART-Modells. Unter Verwendung des gespeicherten Modells (`mylib.modelFit`) und der Trainingsdaten werden Interventionsszenarien definiert, bei denen die Werte der erklärenden Variablen (hier `x1`, `x2`, `x3`) geändert werden. Zum Beispiel setzt 'Scenario1' `x2` auf 0.25, während 'Scenario2' `x2` auf 0.25 und `x3` auf 0.5 setzt. Dies ermöglicht die Analyse der Auswirkungen kontrollierter Änderungen auf die Modellvorhersagen.
Erklärung : Dieses letzte Beispiel baut auf der Berechnung prädiktiver Margen auf, um Vergleiche durchzuführen. Die `MARGINDIFF`-Anweisung wird verwendet, um Kontraste zwischen verschiedenen prädiktiven Margen zu spezifizieren, die durch die `MARGIN`-Anweisung definiert wurden. Hier werden die Auswirkungen der Intervention auf `x1` bei 0.5 und 0.75 mit einem Referenzwert von `x1` bei 0.25 verglichen. Dies ermöglicht die direkte Ermittlung der durchschnittlichen Differenzen der Margenschätzungen mit ihren Glaubwürdigkeitsintervallen und bietet eine vergleichende Analyse der Szenarien.
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.