Mosaic plot con R

Los gráficos de mosaico (mosaic plot) me gustan cada vez más. Hoy quería confesaros una cosa: no me gustan los gráficos. Sé que en esta bitácora electrónica hay muchos ejemplos de gráficos y muchos trucos referentes a ellos, pero siempre prefiero un dato representado en una tabla. Después de esta confesión, voy a rebatirme a mí mismo: es muy complicado ver algo en una tabla de contingencia cuando tenemos tres o cuatro dimensiones. Sin embargo, con un mosaic plot como el que tenemos arriba, somos capaces de estudiar cruces de frecuencia para 3-4 dimensiones. ...

23 de abril de 2013 · rvaquerizo

Analisis cluster con SAS. La importancia de las semillas en las k-medias

El PROC FASTCLUS en SAS nos permite realizar análisis de agrupamiento dirigido mediante el algoritmo de las k-medias. Este algoritmo tiene algunos problemas, pero nos puede servir para agrupar de forma multivariante observaciones. Es rápido, sencillo de explicar y, con algunas lagunas, no funciona mal. Como aproximación a nuestras segmentaciones puede ser muy práctico. Hoy se va a utilizar para identificar a los clientes más complicados de segmentar, a aquellas observaciones que quedan en las zonas grises (http://www.datanalytics.com/blog/2011/08/03/clustering-iii-sobresimplificacion/). ...

15 de abril de 2013 · rvaquerizo

Trucos SAS. Lista de variables missing

Duda que me plantearon ayer por la tarde: dada una serie de variables, determinar qué registro tiene todas esas variables nulas. El truco que planteo puede servir para determinar incluso cuántos valores perdidos tiene esa lista de variables; ese truco me lo reservo para otro día. El código lo acompaño con un ejemplo para que se pueda ejecutar y analizar su funcionamiento: /* GENERAMOS DATOS ALEATORIOS CON MISSING */ data aleatorio; do i = 1 to 20000; aleat1 = sqrt(rannor(45)); aleat2 = sqrt(rannor(5)); aleat3 = sqrt(rannor(4)); aleat4 = sqrt(rannor(450)); aleat5 = sqrt(rannor(40)); output; end; run; /* IDENTIFICAMOS FILAS COMPLETAMENTE NULAS */ data fila_nula; set aleatorio; nulo = 0; array varib(*) aleat1--aleat5; do j = 1 to dim(varib); if not missing(varib(j)) then nulo = 1; end; drop j; if nulo = 0; run; Muy sencillo el truco. Si se encuentra alguna variable que no es nula, la variable nulo ya no toma el valor 0. Espero que os sea de utilidad. Saludos.

8 de marzo de 2013 · rvaquerizo

Truco SAS. Limpiar un fichero de texto con SAS

El otro día me llegó al correo la siguiente cuestión acerca de caracteres extraños en un fichero de texto y la importación a SAS: Tengo un problema a la hora de importar a SAS un fichero .txt. El caso es que tiene en algunos registros el carácter “flechita”. Ejemplo: Calle Paseo de la Castellana “flechita” 60. Cuando lo importo como carácter, para al llegar a la flechita. No sé si podrás ayudarme. Muchas gracias por adelantado. ...

4 de marzo de 2013 · rvaquerizo

Trucos SAS. Medir la importancia de las variables en nuestro modelo de regresión logística

Hoy quería proponeros una forma poco ortodoxa de medir la importancia de las variables in un modelo de regresión logística con SAS. La cuestión es: dado un modelo de regresión logística, crear un ranking con las variables más importantes dentro del modelo. Para esta tarea recomiendo el uso de Random Forest, pero puede ser imposible disponer de un software que realice este tipo de modelos. Imaginemos un caso concreto: disponemos de SAS STAT y nos da reparo trabajar con R. Para este caso podemos emplear el siguiente truco. El AIC (Criterio de Información de Akaike) es un estadístico que relaciona el cociente de la verosimilitud con el número de parámetros del modelo que ajustamos. Cuanto menor sea este cociente, mejor será nuestro modelo. Si eliminamos una variable del modelo, ¿cuánto empeora este modelo? Esa será la filosofía que emplearemos para analizar la importancia de las variables presentes in nuestro modelo. In la línea habitual, hacemos un ejemplo para que podáis copiar y pegar in vuestro SAS: ...

27 de febrero de 2013 · rvaquerizo

Gráfico de correlaciones entre variables

Los gráficos de correlaciones no me gustan especialmente, pero empiezo a verlos en algunas presentaciones. En R tenemos algunos ejemplos interesantes pero con códigos que, bajo mi prisma, son complejos. Por este motivo me he puesto manos a la obra para realizar este gráfico de correlaciones con un código lo más sencillo posible. Para ello vamos a emplear ggplot2: library(ggplot2) library(reshape2) datos <- cor(mtcars) datos.lista <- melt(datos) names(datos.lista) <- c("Variable_1", "Variable_2", "Correlacion") escala <- seq(-1, 1, 0.1) Vamos a emplear el famoso conjunto de datos mtcars para ilustrar el ejemplo. Con él creamos la matriz de correlaciones, pero esta matriz la hemos de transformar en una lista; para ello empleamos la función melt del paquete reshape2. En este punto hemos pasado de una matriz de correlaciones a una lista con pares de variables y su correspondiente coeficiente de correlación. A esta lista le asignamos los nombres que deseamos con la función names y, por último, generamos un vector que denominamos escala que nos permitirá establecer los colores que deseamos utilizar cuando pintemos nuestra matriz de correlaciones. ...

20 de febrero de 2013 · rvaquerizo

Truco SAS. Ver el contenido de un formato

Para ver los valores que toma un formato con SAS, tenemos que emplear el PROC FORMAT. La sintaxis es muy sencilla: proc format library = work.formats fmtlib; select &formato.; run; Tenéis que poner el nombre del formato sin punto. Sintaxis sencilla, pero difícil de recordar (por lo menos a mí me ha pasado). Saludos.

6 de febrero de 2013 · rvaquerizo

Nueva edición del Curso Básico de R

Tenemos buenas noticias para todos aquellos que se quieran introducir en el mundo de R. El curso que se puso en marcha hace unos 9 meses tiene una nueva edición. Además, se incorpora al equipo de formadores (formado por Juan José Gibaja y Carlos Gil) Juan Pablo Braña. No hace falta desear éxito: está garantizado. Para más información A Q U Í. Retuitead, compartid, pulsar “Me Gusta” para que tenga el mayor alcance posible. Saludos.

5 de febrero de 2013 · rvaquerizo

Macros SAS. Macro split para partir un conjunto de datos

Debido a problemas con un servidor hace años descubrí la macro Split. Básicamente lo que hace es partir un conjunto de datos SAS en múltiples conjuntos de datos SAS con el mismo número de observaciones, además lo hace en un solo paso data. La forma de particionar el conjunto de datos es muy simple, si alguien tiene dudas con el código que lo comente y lo analizamos mejor. La macro (mejorada) es: ...

22 de enero de 2013 · rvaquerizo

¿Cómo medir la presencia de R en el mercado del análisis de datos?

Mientras comía hoy, he estado leyendo el The Forrester Wave™: Big Data Predictive Analytics Solutions, Q1 2013, un informe sobre las herramientas de análisis predictivo con mayor presencia en el mercado. Las herramientas de SAS e IBM son las mejor paradas en el estudio: Típico gráfico bivariable con «pelotitas». No voy a entrar en la calidad del gráfico ni de la segmentación representada. Pero es difícil saber dónde quedaría R; tenemos a la gente de Revolution Analytics, pero, en mi opinión, no sirve para medir la presencia de R. Es evidente que tampoco es la intención de esta gente medir el uso de software no comercial, pero eso se averigua leyendo el análisis, no viendo los títulos. De momento, me seguiré quedando con TIOBE. Saludos.

14 de enero de 2013 · rvaquerizo