Formación

Curso de lenguaje SAS con WPS. Subconjuntos de variables con DROP y KEEP

En esta entrega del curso vamos a trabajar con dos palabras fundamentales en WPS: DROP y KEEP. Drop elimina variables de un conjunto de datos y keep las mantiene. Ahora bien, estos elementos del lenguaje SAS se pueden emplear de diversas formas. Pueden ser una sentencia o pueden ser una opción de lectura y escritura del paso data. Para ilustrar este capítulo vamos a generar un dataset con datos aleatorios:

Curso de lenguaje SAS con WPS. Funciones fecha

Las fechas con SAS no están muy bien resueltas, con WPS pasa lo mismo. Era necesario un capítulo especial para hablar sobre fechas en WPS. En este blog ya se habló del tema. Y ahora, con WPS, la entrada será análoga: SAS = WPS. . Las funciones las vamos a dividir en 4 grupos:

• Funciones de extracción de fecha • Funciones de creación de fecha • Funciones de duración • Funciones de intervalo

Curso de lenguaje SAS con WPS. Funciones en WPS

A la hora de trabajar con variables en WPS uno de los elementos fundamentales son las funciones. En WPS son completamente análogas a SAS. Además este capítulo quiero que nos sirva para familiarizarnos un poco más con el interfaz de WPS y con los elementos de WPS. Vamos a crear un script , un programa SAS, dentro de nuestro proyecto. Nos ubicamos en el Proyect Explorer pulsamos el botón derecho y New — Other en la ventana que nos sale nos vamos a WPS y generamos un nuevo programa (script) al que damos el nombre de funciones:

Curso de lenguaje SAS con WPS. Introducción a los formatos de variables

Volvemos con el curso de lenguaje SAS con WPS. Estaba parado debido a un problema con las licencias de WPS desde junio de 2010 pero le retomamos con uno de los capítulos más interesantes: formatos de variables en SAS. Si tuvieramos que definirlos Son imprescindibles tanto para leer como para escribir variables. Y esa es la característica que los divide, existen formatos de entrada INFORMAT y formatos de salida FORMAT. Se dividen por categorías, entre las que destacan los formatos numéricos, formatos carácter y formatos de fecha. La sintaxis es sencilla (IN)FORMAT -variable–formato-

Medir la importancia de las variables con Random Forest

¿Qué variables son las más importantes para nuestro modelo de clasificación? Yo creo que muchos de vosotros os habréis encontrado con esta problemática. Hay muchas formas de solventarla, habitualmente empleamos aquellas variables que mejor pueden entender nuestras áreas de negocio. Es decir, hacemos segmentaciones en base al sexo y la edad sólo por no tener que explicar como hemos construido una variable artificial a alguien que no entiende lo que es una variable y mucho menos variable artificial. Pero hoy os quería plantear la utilización de métodos de random forest con R para medir la importancia de las variables cuantitativas, para variables cualitativas recomiendo otras formas que plantearé más adelante. El random forest es un método de clasificación basado en la realización de múltiples árboles de decisión sobre muestras de un conjunto de datos. Hacemos muchas clasificaciones con menos variables y menos observaciones y al final nos quedamos con un promedio de estas clasificaciones, esa sería la idea a grandes rasgos. La característica que hace de este método muy interesante es la posibilidad de incluir un gran número de variables input en nuestro modelo ya que no encontraremos relaciones lineales entre ellas y tampoco aparecerán relaciones debidas al azar.

Truco R. Eval, parse y paste para automatizar código

La función paste nos permite concatenar cadenas de texto con R:

paste("Dato",rep(1:10),sep="")

Parse recoge una expresión pero no la evalúa:

parse(text="sqrt(121)")

Y por último eval evalúa una expresión:

eval(parse(text="sqrt(121)"))

Interesantes funciones que nos pueden permitir automatizar códigos recursivos o códigos guardados como objetos en R. Imaginemos el siguiente ejemplo de R:

ejemplo1 <- data.frame(replicate (20,rpois(20,10)))

nom <- paste("dato",1:20,sep="")

names(ejemplo1) <- nom

summary(ejemplo1)

Hemos automatizado los 20 nombres de un data frame con datos aleatorios con una distribución de poissón de media 10 creado con la función replicate. Ahora imaginemos que deseamos transformar en factor sólo aquellos elementos del data frame con un sufijo par (datos2, datos4, …). Podemos crear una función o podemos crear ejecuciones de código R del siguiente modo:

El modelo multivariante en el sector asegurador. Los modelos por coberturas (V)

Debido a la pobre aceptación había dado de lado esta serie de monográficos sobre la tarifa multivariante en el sector asegurador. Pero tengo una lectora que si los seguía y como yo me debo a mis lectores continúo con la serie. Recapitulemos. Como variables dependientes tenemos la frecuencia siniestral y el coste medio de los siniestros, las variables independientes serán aquellas que compongan la estructura de nuestra tarifa, como prototipo para determinar que variables forman parte de nuestro modelo empleamos el multitarificador de ARPEM. Con este planteamiento partimos de dos modelos: el modelo de frecuencias y elmodelo de costes medios. Sin embargo a la hora de ajustar es muy importante plantear un modelo para cada una de las garantías. Parece lógico que el modelo multivariante para el contenido en una tarifa de hogar no ha de ser el mismo que el modelo para el continente. O centrándonos en el modelo de autos (sobre el que está girando nuestra serie) es necesario modelizar los siniestros de responsabilidad civil por un lado, los siniestros de daños propios por otro, defensa, robo,…

Montemos un sistema de información en nuestro equipo (III)

Vamos a conectarR a nuestra BBDD postgres. Lo vamos a hacer vía ODBC con el paquete de RRODBC [inciso] recordad que todo el trabajo lo estamos realizando bajo Win. Además trabajar con ODBC nos permitirá conectar nuestro postgres con Access o Excel. Aunque para este tipo de tarea recomiendo el uso del Data Integration de Pentaho. El primer paso será descargarnos de esta dirección los controladores ODBC para Postgres que se adecúen con nuestro S.O. y nuestra versión de postgres. Tras instalarlos ya podemos ir a las Herramientas Administrativas Orígenes de Datos ODBC e introducimos un nuevo DSN de sistema y de usuario:

Recodificar el valor de un factor en R

Tras leer una duda planteada en la lista de R-Help en español me he animado a crear una entrada acerca de la recodificación de factores en R. Así dejo recogido algún código/truco que puede serviros en vuestro trabajo con R y que este pequeño problema no afecte a vuestra productividad. Además os acerco a la función recode del paquete car. Pero en primer lugar os planteo como recodificar factores empleando IF/ELSE:

Gráficos de burbuja con R

El otro día en R-bloggers leí este post. Entonces busqué información sobre estos gráficos con R en español y sólo encontré ayuda para realizarlos con Excel. Es verdad que el enlace que os pongo es más que suficiente para realizar los gráficos de burbuja pero en pocas líneas puedo ilustrar mejor un ejemplo y proponeros varias formas de crearlo. La primera de ellas emplea la función symbols y genera el siguiente gráfico:

Montemos un sistema de información en nuestro equipo (II)

Vamos a empezar a subir archivos a la BBDD. Evidentemente lo primero que tenemos que hacer es crearnos una BBDD en Postgres. Con el PGAdmin creamos una nueva base de datos, disponemos de varias opciones, en nuestro caso no modificamos ninguna y creamos BD. Ya tenemos una BBDD funcionando y a la hora de conectarnos a ella tendremos que asignarle las propiedades necesarias para su correcto funcionamiento:

postgres-1.png

Ya tenemos dispuesta la BBDD y ya podemos empezar a subir tablas. Para ello ya os comenté que usaríamos el Data Integration de Pentaho (antes conocido como Kettle). La intención que tengo al montar este pequeño sistema de información es disponer de una serie de tablas para la realización de modelos estadísticos con R. Podría tener mi equipo lleno de ficheros de texto, de Excel y algún Access por ahí pero es eso lo que pretendo evitar, con esto me garantizo un orden y un correcto acceso a mis tablas. Para comenzar a trabajar quiero subir una tabla del repositorio de datos UCI Quiero seguir trabajando con el paquete e1071 de R y estoy analizando que tablas son las que más se adecúan a mis objetivos, para ello tendré que cargar algunas y comprobar si los datos se adecúan a mis propositos.

Montemos un sistema de información en nuestro equipo (I)

Un poco de bricolaje. Se trata de crear un sistema de información sin coste y que nos permita almacenar nuestros datos con orden y coherencia, crear informes y realizar modelos matemáticos bajo Windows. Es perfectamente replicable para Linux. También estoy abierto a sugerencias ya que tampoco soy ningún experto en el tema y podemos crear un debate interesante. El sistema que planteo se va a sustentar en 3 pilares fundamentales que os podéis descargar de forma gratuita en los link creados:

Macros (fáciles) de SAS. Número de obsevaciones de un dataset

Con esta macro podréis identificar el número de observaciones de UN CONJUNTO DE DATOS SAS. No funciona con tablas Oracle, Informix, DB2,… me gustaría dejarlo claro. Al emplear la función deI/O OPEN junto con ATTRN y CLOSE no realizamos un conteo de observaciones. Al final el proceso crea una macro variable que se llama NOBS y que podremos usar en nuestra sesión SAS.

%macro observaciones(datos);

/*EL NUMERO DE OBS LO VAMOS A METER EN UNA MV GLOBAL*/

%global nobs;

/*ABRIMOS EL CONJUNTO DE DATOS PARA VER SUS CARACTERISTICAS*/

%let datosid = %sysfunc(open(&datos));

/*SI ESTA ABIERTO ENTONCES LA FUNCION ATTRN NOS DA LA NOBS*/

%if &datosid %then %do;

%let nobs =%sysfunc(attrn(&datosid,NOBS));

/*CERRAMOS EL CONJUNTO DE DATOS*/

%let rc = %sysfunc(close(&datosid));%end;

%mend ;

Fácil y rápida. Si alguien tiene problemas con su uso que lo comunique en el blog. Seguro que es de gran utilidad. Saludos.