Documentation Example 2 for PROC NLIN
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: nlinex2 */
/* TITLE: Documentation Example 2 for PROC NLIN */
/* Iteratively Reweighted Least Squares */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: Robust regression */
/* Tukey's biweight function */
/* PROCS: NLIN, ROBUSTREG */
/* DATA: */
/* */
/* SUPPORT: Oliver Schabenberger */
/* REF: */
/* MISC: */
/****************************************************************/
title 'U.S. Population Growth';
data uspop;
input pop :6.3 @@;
retain year 1780;
year = year+10;
yearsq = year*year;
datalines;
3929 5308 7239 9638 12866 17069 23191 31443 39818 50155
62947 75994 91972 105710 122775 131669 151325 179323 203211
226542 248710
;
title 'Beaton/Tukey Biweight Robust Regression using IRLS';
proc nlin data=uspop nohalve;
parms b0=20450.43 b1=-22.7806 b2=.0063456;
model pop=b0+b1*year+b2*year*year;
resid = pop-model.pop;
sigma = 2;
k = 4.685;
if abs(resid/sigma)<=k then _weight_=(1-(resid / (sigma*k))**2)**2;
else _weight_=0;
output out=c r=rbi;
run;
data c;
set c;
sigma = 2;
k = 4.685;
if abs(rbi/sigma)<=k then _weight_=(1-(rbi /(sigma*k))**2)**2;
else _weight_=0;
run;
proc print data=c;
run;
proc robustreg data=uspop method=m(scale=2);
model pop = year year*year;
output out=weights weight=w;
run;
proc print data=weights;
run;