Valor atípico o pocos registros. Animación con R

¿Cómo influye un solo punto en una recta de regresión? Evidentemente cuanto menos observaciones tengo más puede «descolocar» la recta de regresión. Sin embargo, cuantos más puntos tengo más complicado es encontrar ese punto con una recta de regresión, sin analizar los residuos podríamos hasta pasarlo por alto, aunque puede ser que nos interese ese punto. El código de R que genera la animación es: ```r library(animation) saveGIF( for (i in c(100,50,25,10,5,1)){ x <- seq(-500,500, by = i ) y=sin(x)+x/100 y[10]=y[10]+10 plot (y,x,main=paste("Regresión lineal con ",1000/i," observaciones")) reg <- lm(y~x) points( fitted.values(reg),x, type="l", col="red", lwd=2)}, interval = .85, ,movie.name="/Users/raulvaquerizo/Desktop/R/animaciones/outlier.gif")

24 de abril de 2016 · rvaquerizo

Macros (fáciles) de SAS. Eliminar outliers en una variable

Hace tiempo ya os propuse una chapuza para eliminar outliers de forma multivariante. Por supuesto quedabaeliminar outliers en una variable. Recortar los valores extremos en aquellas variables cuantitativas que deseemos. Para ello os propongo una macro que no considero muy compleja y que os analisisaré con mayor detalle, pero lo primero la macro al completo: %macro elimina_outliers( varib, /*VARIABLE PARA ELIMINAR EL OUTLIER*/ entrada,/*DATASET DE ENTRADA*/ salida, /*DATASET DE SALIDA, PUEDE SER EL MISMO DE ENTRADA*/ corte_inferior, /*% DE CORTE INFERIOR*/ corte_superior);/*% DE CORTE SUPERIOR*/ *******************************************************************; *CREAMOS LOS PERCENTILES; data _null_; call symput ("lim1",compress(0+&corte_inferior.)); call symput ("lim2",compress(100-&corte_superior.)); run; *PREPARAMOS MV CON LOS NOMBRES QUE OBTENDREMOS DEL PROC UNIVARIATE; data _null_; call symput ('nom_lim1',compress("P_"||tranwrd("&lim1.",'.','_'))); call symput ('nom_lim2',compress("P_"||tranwrd("&lim2.",'.','_'))); run; *EL UNIVARIATE GENERA UNA SALIDA SOLO CON LOS PERCENTILES DESEADOS; proc univariate data=&entrada. noprint; var &varib.; output out=sal pctlpre=P_ pctlpts=&lim1.,&lim2.; quit; *CREAMOS MV CON LOS CORTES DESEADOS; data _null_; set sal; call symput("inf",&nom_lim1.); call symput("sup",&nom_lim2.); run; *REALIZAMOS EL FILTRO; data &salida.; set &entrada.; if &varib.>&inf. and &varib.<&sup.; run; proc delete data=sal;run; %mend; Su ejemplo de uso correspondiente: ...

16 de mayo de 2011 · rvaquerizo