Pasando de SAS a R. Primer y ultimo elemento de un campo agrupado de un data frame

Las personas que están acostumbradas a trabajar con SAS emplean mucho los elementos FIRST., LAST. y BY; en el blog hay ejemplos al respecto. En R podemos hacer este trabajo con la librería “estrella” dplyr de un modo relativamente sencillo. A continuación se presenta un ejemplo para entender mejor cómo funciona; creamos un conjunto de datos aleatorio: id <- rpois(100, 20) mes <- rpois(100, 3) + 1 importe <- abs(rnorm(100)) * 100 df <- data.frame(id, mes, importe) Tenemos un identificador, una variable mes y un importe y deseamos obtener el menor importe por mes. El primer paso a realizar es ordenar el data frame de R por ese identificador, el mes y el importe en orden descendente: ...

19 de octubre de 2017 · rvaquerizo

Máximo por registro de una serie de variables carácter en SAS

Un lector del blog preguntaba cómo obtener el valor máximo dentro de un registro, por fila, de una sucesión de variables carácter; evidentemente la función max no servía porque es específica para variables numéricas. La duda la planteaba del siguiente modo: Pero tengo una duda que no soy capaz de sacar y no veo ninguna cosa parecida para poder sacarlo, a ver si me puedes ayudar, o si no, pues me dices que no y no hay ningún problema. ...

24 de febrero de 2017 · rvaquerizo

Truco SAS. Tablas de una librería en una macrovariable

Me plantean una duda: cómo crear un conjunto de datos con las tablas de una librería en SAS y, posteriormente, generar una macrovariable con ellos. Ésta es una entrada análoga a otra del blog, pero sirve para recordar cómo funciona el ODS de SAS y el PROC DATASETS, un procedimiento que no he usado habitualmente pero que es muy potente. Lo primero que vamos a hacer es observar qué resultados arroja el PROC DATASETS en su sintaxis más sencilla para ver los contenidos de una librería: ...

24 de enero de 2017 · rvaquerizo

Bucle de fechas con SAS para tablas particionadas

Partimos de un mes inicial hasta un mes final; es necesario crear una tabla SAS con dos variables: el inicio del mes y el final del mes. El trabajo con fechas en SAS, como todos sabemos, es una tarea un poco ardua. El título de la entrada también es un poco peculiar, pero es la respuesta a la duda que planteaba un lector: Cogemos dos fechas en formato `yyyymmaa` Ej: 20150101 a 20160131 Necesito una salida como la siguiente: 20150101 20150131 20150201 20150228 20150301 20150331 20150401 20150430 ... 20161101 20161130 20161201 20161231 Para que los datos pedidos en este periodo salgan en una tabla por mes con un PROC SQL ya diseñado que funciona, pero sin particionarlo en una tabla por mes en el log. Se me han ocurrido varias formas de hacerlo, pero a continuación os planteo la siguiente. Como referencia, hemos de irnos a una entrada anterior del blog, una entrada del 2008 cuando puse en marcha analisisydecision.es. ...

20 de diciembre de 2016 · rvaquerizo

Como obtener los centroides de municipios con SAS. Mapas con SGPLOT

Un amigo y lector del blog me ha pedido un mapa de códigos postales donde poder identificar los centroides para andar calculando distancias a otros puntos. Yo no tengo un mapa de España por códigos postales para poder usar con fines comerciales, pero sí cuento en el blog cómo poder obtenerlo bajo ciertas condiciones. Lo que sí puedo contar a Juan es cómo hacer un mapa por municipios con SAS; aunque ya he hablado de ello, hay ciertos aspectos que pueden ser interesantes. Y todo empieza donde siempre: http://www.gadm.org/country, la web donde tenemos los mapas «libres» por países. Seleccionáis Spain y el formato shapefile; una vez descargados los mapas en vuestros equipos, empezamos con el trabajo en SAS: ...

9 de noviembre de 2016 · rvaquerizo

Qué pasa si uso una regresión de poisson en vez de una regresión logística

Para un tema de mi trabajo voy a utilizar una regresión de Poisson en vez de una regresión logística; el evento es sí o no y no tiene nada que ver el tiempo, ni se puede contabilizar como un número, pero a efectos prácticos es mejor para mí usar una regresión de Poisson. Entonces, ¿qué pasa si hago una regresión de Poisson en vez de binomial? Como siempre, si mi $n$ es muy grande hay relación entre ambas distribuciones. Pero yo quiero saber si me puede clasificar mis registros igual una regresión logística, una de Poisson y una binomial, y se me ha ocurrido hacer un ejercicio teórico muy simple. ...

19 de septiembre de 2016 · rvaquerizo

Test de bondad de ajuste con SAS

Pregunta que me han hecho hoy: cómo hacer un test de bondad de ajuste con SAS. Aquí la respuesta que he dado: data datos_aleatorios; do i = 1 to 200000; * GENERAMOS UNAS VARIABLES ALEATORIAS; variable_gamma = rangam(89, 450); variable_exponencial = ranexp(23) * 100 + 0.17045; output; end; run; * ods select ParameterEstimates GoodnessOfFit; proc univariate data=datos_aleatorios; var variable_:; histogram / gamma; run; Mucho cuidado con estos test de hipótesis. Yo suelo conformarme con ver la tabla de cuantiles. Saludos.

2 de agosto de 2016 · rvaquerizo

Truco SAS. Cómo leer PC Axis con SAS

Estoy leyendo información del INE que tiene que terminar cargándose en SAS y estos datos están en formato PC Axis. Existen macros en SAS para generar datasets a partir de PC Axis, pero la verdad es que no he llegado a entender muy bien cómo funcionan y, tras varios errores, la mejor opción que he encontrado es emplear R y el paquete pxR que han creado algunos miembros de la Comunidad de R-Hispano. Cómo realizo esta tarea es más que sencillo: ...

22 de junio de 2016 · rvaquerizo

KNN con SAS. Mejorando K-Means

La clasificación por k vecinos más cercanos es un método supervisado no paramétrico muy potente. El KNN (K-Nearest Neighbors) clasifica las observaciones en función de su proximidad a otros puntos en el espacio de características; en el vídeo que encabeza la entrada queda muy bien explicado. Tenemos la posibilidad de realizar esta clasificación con SAS/STAT y el PROC DISCRIM. Hace años ya hablamos de segmentación con SAS y vamos a emplear los mismos datos simulados de tres esferas para ilustrar esta entrada: ...

29 de abril de 2016 · rvaquerizo

Interpretación de los parámetros de un modelo GLM

Muchos estudiantes terminarán trabajando con GLM que siguen buscando relaciones lineales en multitud de organizaciones a lo largo del planeta. Y hoy quería ayudar a esos estudiantes a interpretar los parámetros resultantes de un GLM, más concretamente los resultados de un PROC GENMOD de SAS, aunque lo que vaya a contar ahora se puede extrapolar a otras salidas de SAS o R. En la línea de siempre, no entro en aspectos teóricos y os remito a los apuntes del profesor Juan Miguel Marín. Con un GLM al final lo que buscamos (como siempre) es distinguir lo que es aleatorio de lo que es debido al azar a través de relaciones lineales, de un modo similar a como lo hace una regresión lineal; sin embargo, los GLM nos permiten que nuestra variable dependiente no sólo siga una distribución normal: puede seguir otras distribuciones como Gamma, Poisson o Binomial. Además, un GLM puede trabajar indistintamente con variables categóricas y numéricas, pero yo recomiendo trabajar siempre con variables categóricas y, en la práctica, cuando realizamos un modelo de este tipo siempre realizaremos agrupaciones de variables numéricas. Si disponemos de variables agrupadas, de factores, los parámetros de los modelos nos servirán para saber cómo se comporta nuestra variable dependiente a lo largo de cada nivel del factor. ...

21 de marzo de 2016 · rvaquerizo