R

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:

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:

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:

Trucos R. Leer archivos XML con R

Un truco de R práctico que busca la colaboración de los lectores para mejorarlo. Se trata de leer ficheros xml con R. Los más asiduos ya sabéis que paquete voy a emplear, el XML. En los últimos tiempos la sentencia require(XML) aparece al principio de casi todos mis códigos en el Tinn-R. El ejemplo que ilustrará el truco lee de la BBDD del banco mundial en español el indicador de emisiones de CO2 en toneladas por habitante y año. La sintaxis es de este modo:

Un homenaje a Malthus con R

Hoy quería yo revindicar la figura de un tipo bastante maltratado: Thomas Malthus. Maltratado porque era un poco reaccionario y facha, y parece que eso es suficiente para que se olviden de uno, aunque fuera el tipo que más ha aportado a la demografía.Y el homenaje tenía que hacérselo con el paquete de R que más utilizo últimamente, el XML y algunos sencillos gráficos creados con R-commander. Malthus lo que venía a decir es que somos muchos, demasiados y encima la cosa tenía muy mala pinta. Parece que tiene razón, pero vamos a verlo gráficamente. Comenzamos:

Agregador de noticias de R en español

R

En el blog hermano de Carlos Gil han puesto en marcha uno de los proyectos más interesantes que han pasado por la blogosfera últimamente. Un agregador de noticias de R en español. Un proyecto similar a R-bloggers pero en lengua hispana. Por supuesto este blog es uno de los participantes.

El motor lo ha hecho integramente Carlos (con sus deditos y Python) y publica vía RSS cuando encuentra la etiqueta R. Desde aquí os invito a que déis de alta vuestros blog y poder crear una web referencia en español sobre R a la altura de R-bloggers.

«Random walk» se escribe con R.

‘Random walk’ hace referencia a la teoría financiera de que los mercados financieros siguen un camino aleatorio. Pero NO vamos discutir si se da o NO se da tal hipótesis, lo que SÍ vamos a hacer es utilizar R para seguir las acciones, fondos de inversión, o sencillamente para ver nuestro decepcionante Euro respecto a otras divisas (por si algún día los ‘españolitos’ debieramos empezar a emigrar de nuevo… tal como esta el patio!).

Desarrollo de IDE para R

R

Sigo añadiendo pocos mensajes al blog por falta de tiempo. Corren malos tiempos para el ahora escribiente. A este paso el blog no llegara nunca a las 4.000 visitas mensuales objetivo muy ambicioso para este 2010. Pero en este mensaje quería enlazar el blog de un ex compañero:

http://miguelinlas3.blogspot.com/

Interesante proyecto que crea un entorno de desarrollo integrado para R. De momento lo esta desarrollando pero cuando note el incremento de visitas desde este sitio, porque lo notara, y si lo nota y le seguimos le servirá de presión para que continúe su desarrollo.

Monográfico. Regresión logística con R

Por fin nos metemos con la regresión logística en R. Nos meteremos con WPS (si es posible). Los modelos de regresión logística son los más utilizados en las áreas en las que el ahora escribiente ha trabajado. ¿Por qué tiene tanto «éxito»? Porque es el mejor ejemplo de modelo de variable linealmente dependiente de otras variables independientes. Pero sobre todo tiene éxito porque modelamos una probabilidad de un suceso (habitualmente dicotómico) en función de unos
factores que pueden ser discretos o continuos. Modelizamos probabilidades, insisto; por ejemplo, si clasificamos la variable comete fraude como 1 y no comete fraude como 0 podríamos realizar un modelo de regresión lineal del tipo fraude(0,1)=:término independiente:+:parámetro::independiente:. Matemáticamente es posible, pero si me dices que un cliente tiene un 1,34 de «potencial» de fraude entro en estado de shock. Peeero, si p es la probabilidad de cometer fraude podemos construir esta función Ln(p/(1-p)) y sobre esta función si hacemos: Ln(p/q)=:término independiente: + :parámetro::independiente:. O lo que es lo mismo: prob. fraude=1/(1+e**(-:término independiente:-:parámetro:*:independiente:)). Qué bonita función y que interesante propiedad de los logaritmos que transforman sumas en productos.

Monográfico. Paquete de R NNET para modelos de redes neuronales

Quiero introduciros a los modelos de redes neuronales con R , mas concretamente quiero acercaros al módulo nnet de R. Tenemos extensa literatura al respecto de las redes neuronales, personalmente considero de lectura obligatoria este link (y prácticamente toda la documentación de este profesor) El paquete nnet nos permite crear redes neuronales de clasificación monocapa. Las redes neuronales clasifican mediante algoritmos o métodos de entrenamiento, en función de estos métodos podemos tener redes supervisadas y redes no supervisadas. Las primeras buscan un límite de decisión lineal a través de un entrenamiento. Las segundas parten de unos parámetros (pesos) fijos y no requieren entrenamiento porque realizan mecanismos de aprendizaje en función de experiencias anteriores. Como ya os he indicado hay mucha bibliografía al respecto y muchas entradas en Google que pueden ayudaros a conocer mejor estos modelos. En el caso que nos ocupa, y como viene siendo tónica habitual de la bitácora, vamos a darle una visión más práctica (tampoco soy yo el más adecuado para dar esa visión teórica). Trabajamos en una gran Caja española y nuestro responsable nos pide realizar una selección de clientes para un mailing. Tenemos que «colocar» planes de pensiones vitalicios inmediatos. A nosotros se nos ocurre realizar un modelo de redes neuronales para seleccionar aquellos clientes con una puntuación más alta y, por tanto, más propensos a comprar el producto.

Monografico. Paquete sqldf, si sabes sql, sabes R

El paquete sqldf de R nos permite ejecutar sentencias de SQL . Las cláusulas, las expresiones, los predicados,… son lasalvación para muchos tipos mediocres como el ahora escribiente. sqldf es un módulo imprescindible, hasta el novio de Falete es capaz de programar en SQL. Evidentemente no voy a enseñaros a hacer queries , pero si quiero mostraros algunas de las posibilidades que nos ofrece este paquete de R. Como siempre y como caracterizan la mayoría de los mensajes del blog trabajaremos con ejemplos. El primer paso es crear un data.frame :

Los mejores y más útiles trucos de R

Como estamos medio de fiesta y da pareza poner en funcionamiento los engranajes del cerebro para producir ideas originales, me limitaré a apuntar un enlace en el que los usuarios han propuesto y votado sus mejores trucos de R.

Para los más perezosos, indicaré que el campeón ha sido la función str().

Y para los menos perezosos, aparecen en la lista métodos para acceder y manipular datos alojados en GoogleDocs directamente.