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 en 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 en nuestro modelo. En la línea habitual hacemos un ejemplo para que podáis copiar y pegar en vuestro SAS:

Nos hemos terminado de reinventar. Acabamos con el Data Mining y empezamos con el Big Data

Google Trends y buscamos los términos Big Data y Data Mining y obtenemos la figura de arriba. Ya convergen las búsquedas. Muchos opinamos que estamos trabajando con Big Data desde hace muchos años sin embargo es ahora cuando este trabajo parece que se está dando a conocer. Y las escuelas de negocio son conscientes de ello. El sector de las tecnologías de la información tiene que estar continuamente renovándose. A lo largo de los años han habido mas revoluciones conceptuales que verdaderamente tecnológicas, sin embargo este nuevo concepto de Big Data si trae consigo una nueva visión de acceso a la información.

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)

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 reshape, 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.

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 mi me ha pasado). Saludos.

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», compartir, pulsar «Me Gusta» para que tenga el mayor alcance posible. Saludos.

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:

Ayudadme. Importar a SAS texto con comillas

Hoy sois vosotros los que tenéis que ayudar al dinosaurio. Ya no estoy para estas cosas. Tengo un problema. Fichero de texto separado por ; típico csv de toda la vida. Este fichero de texto contiene diversos campos que a mis efectos son de texto. Si abrimos el fichero con una hoja de cálculo tendríamos:

Pues bien, a la hora de importar unos datos con esa estructura desde SAS no soy capaz de que Dato2 siga conservando las comillas. Con IMPORT tampoco me funciona. El código sería algo parecido a esto:

¿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 Revolutions 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.

App de SAS para tomar decisiones en base al Big Data

Os presento una app que ha lanzado SAS para emplear el Big Data en la toma de decisiones: https://play.google.com/store/apps/details?id=com.sas.bigdataoverload&feature=more_from_developer#?t=W10. Me la ha mandado mi amigo Pepelu. En cuanto pueda me la descargo y comienzo a jugar a ver cómo se me da esto del análisis de grandes volúmenes de información que ahora llaman Big Data e incluso se pueden leer artículos sobre el tema en la prensa más generalista.

Con la de años que llevan algunos haciendo esto…

Intervalos en SAS con PROC FORMAT

El uso de formatos en SAS para la creación de intervalos puede ahorrarnos tanto escritura de código como espacio en nuestros conjuntos de datos SAS. Una vez que nos familiaricemos con ellos evitaremos la creación de sentencias IF anidadas y generar nuevas variables de texto de gran longitud en nuestro dataset. Sin embargo siempre me plantean la misma cuestión, ¿por dónde están cerrados los intervalos en un formato? Hoy vamos a generar una serie de ejemplos para analizar este tema. Partimos de un conjunto de datos aleatorio con una variable de poisson con media 18:

SAS te felicita la Navidad

Mirad para que sirve call sound:

data _null_;
call sound(659,100);
call sound(659,100);
call sound(659,200);
call sound(659,100);

call sound(659,100);
call sound(659,200);

call sound(659,100);
call sound(784,100);
call sound(523,100);
call sound(587,100);
call sound(659,400);

call sound(698,100);
call sound(698,100);
call sound(698,150);
call sound(698,50);

call sound(698,100);
call sound(698,100);
call sound(659,100);
call sound(659,50);
call sound(659,50);

call sound(659,100);
call sound(587,100);
call sound(587,100);
call sound(659,100);

call sound(587,200);
call sound(784,200);

run;

Felices Fiestas.

Macros SAS. Contar las palabras de una macro variable

Una macro de SAS interesante que nos permite ahorrar código. Dada una macro variable necesitamos contar el número de palabras que tiene esta macro variable. Para ello vamos a crear una función con código macro:

%let texto = uno dos tres;

%macro cuenta(mv);
%eval(%sysfunc(length(%cmpres(&mv.),%str( ))) - %length(&mv.) + 1)
%mend;

%put La Macrovariable Texto tiene %cuenta(&texto.) palabras;

Vemos que la macro variable texto tiene tres palabras y necesitamos contabilizarlas para automatizar un código. La propuesta que se plantea es el cálculo de la longitud de la macro sin espacios frente a la longitud de la macro variable con espacios. La diferencia más uno será el número de palabras de nuestro texto. Como aspectos interesantes tenéis el uso de %str( ) , %cmpres y como se juega con %sysfunc para evitar algún que otro problema. Esta macro tiene sus problemas, no pongáis más de dos espacios que la volvéis loca. Pero puede resultar muy útil para determinadas cosas. Saludos.

Truco Excel. Dividir una variable cuantitativa en tramos

Un truco Excel que implica la utilización de la función JERARQUIA para la creación de un ranking y que la complementamos con la tramificación de ese ranking, de este modo creamos tramos de una variable numérica con Excel sin necesidad de ordenación previa. La situación sería:

Tenemos un campo cuantitativo que deseamos tramificar. El primer paso es la fórmula JERARQUIA:

=JERARQUIA(A1;A1:A30;1)

Creamos un valor numérico que va desde el 1 hasta el 30 en función de la posición que ocupa, el último elemento de la función nos indica si es descendente (0) o si es ascendente (1). Ahora tenemos que dividir esos 30 valores en 4 grupos (por ejemplo) para ello hacemos una fórmula ya conocida para los lectores de esta bitácora: