Veröffentlicht am :
Statistik CREATION_INTERNE

Robuste Regression mit PROC NLIN (IRLS) und PROC ROBUSTREG

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript modelliert das Wachstum der US-Bevölkerung. Es demonstriert zunächst, wie die iterativ neu gewichtete Kleinste-Quadrate-Methode (IRLS) unter Verwendung der 'Biweight'-Funktion von Tukey direkt in PROC NLIN durch die spezielle Variable `_weight_` implementiert wird. Anschließend wird dieser Ansatz mit der standardisierten Prozedur PROC ROBUSTREG verglichen, die einen M-Schätzer verwendet.
Datenanalyse

Type : CREATION_INTERNE


Die Bevölkerungsdaten (uspop) werden direkt im Skript über einen DATA-Schritt und DATALINES-Anweisungen erstellt.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung des Datensatzes 'uspop'. Die INPUT-Anweisung verwendet ' @@', um mehrere Beobachtungen in einer Zeile zu lesen. Die Variablen 'year' und 'yearsq' (Jahr im Quadrat) werden für das quadratische Modell generiert.
Kopiert!
1title 'U.S. Population Growth';
2DATA uspop;
3 INPUT pop :6.3 @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
4 retain year 1780;
5 year = year+10;
6 yearsq = year*year;
7 DATALINES;
83929 5308 7239 9638 12866 17069 23191 31443 39818 50155
962947 75994 91972 105710 122775 131669 151325 179323 203211
10226542 248710
11;
2 Codeblock
PROC NLIN Data
Erklärung :
Ausführung einer nicht-linearen Regression. Das Skript implementiert manuell eine robuste Regression (IRLS), indem es die spezielle Variable `_weight_` definiert. Die Gewichte werden in jeder Iteration basierend auf den Residuen (`resid`) gemäß der Tukey-Biweight-Funktion neu berechnet.
Kopiert!
1title 'Beaton/Tukey Biweight Robust Regression using IRLS';
2PROC NLIN DATA=uspop nohalve;
3 parms b0=20450.43 b1=-22.7806 b2=.0063456;
4 model pop=b0+b1*year+b2*year*year;
5 resid = pop-model.pop;
6 sigma = 2;
7 k = 4.685;
8 IF abs(resid/sigma)<=k THEN _weight_=(1-(resid / (sigma*k))**2)**2;
9 ELSE _weight_=0;
10 OUTPUT out=c r=rbi;
11RUN;
3 Codeblock
DATA STEP Data
Erklärung :
DATA-Schritt zur Neuberechnung oder Überprüfung der endgültigen Gewichte basierend auf den in der Ausgabe-Tabelle von PROC NLIN gespeicherten Residuen (rbi).
Kopiert!
1DATA c;
2 SET c;
3 sigma = 2;
4 k = 4.685;
5 IF abs(rbi/sigma)<=k THEN _weight_=(1-(rbi /(sigma*k))**2)**2;
6 ELSE _weight_=0;
7RUN;
4 Codeblock
PROC PRINT
Erklärung :
Anzeige der Ergebnisse der manuellen Regression (Tabelle 'c').
Kopiert!
1PROC PRINT DATA=c;
2RUN;
5 Codeblock
PROC ROBUSTREG Data
Erklärung :
Verwendung der PROC ROBUSTREG-Prozedur für robuste Regression. Sie verwendet hier die M-Schätzmethode. Die Ergebnisse werden in der Tabelle 'weights' gespeichert.
Kopiert!
1PROC ROBUSTREG DATA=uspop method=m(scale=2);
2 model pop = year year*year;
3 OUTPUT out=weights weight=w;
4RUN;
6 Codeblock
PROC PRINT
Erklärung :
Anzeige der von der ROBUSTREG-Prozedur berechneten Gewichte zum Vergleich.
Kopiert!
1PROC PRINT DATA=weights;
2RUN;
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.