Publicado el :
Estadística CREATION_INTERNE

Regresión Robusta con PROC NLIN (IRLS) y PROC ROBUSTREG

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script modela el crecimiento de la población estadounidense. Primero demuestra cómo implementar el método de mínimos cuadrados reponderados iterativamente (IRLS) usando la función 'biweight' de Tukey directamente en PROC NLIN gracias a la variable especial `_weight_`. Luego compara este enfoque con el procedimiento estandarizado PROC ROBUSTREG usando un M-estimador.
Análisis de datos

Type : CREATION_INTERNE


Los datos de población (uspop) se crean directamente en el script mediante un paso DATA e instrucciones DATALINES.

1 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos 'uspop'. La instrucción INPUT usa ' @@' para leer múltiples observaciones en la misma línea de datos. Las variables 'year' y 'yearsq' (año al cuadrado) se generan para el modelo cuadrático.
¡Copiado!
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 Bloque de código
PROC NLIN Data
¡Copiado!
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 Bloque de código
DATA STEP Data
¡Copiado!
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 Bloque de código
PROC PRINT
¡Copiado!
1PROC PRINT DATA=c;
2RUN;
5 Bloque de código
PROC ROBUSTREG Data
¡Copiado!
1PROC ROBUSTREG DATA=uspop method=m(scale=2);
2 model pop = year year*year;
3 OUTPUT out=weights weight=w;
4RUN;
6 Bloque de código
PROC PRINT
¡Copiado!
1PROC PRINT DATA=weights;
2RUN;
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.