R

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.

Trucos R. Función ddply del paquete plyr

El paquete plyr de R tiene unas funciones que nos permiten hacer sumarizaciones de forma muy rápida y sencilla. Hoy quería trabajar con la función ddply. Todos esos resúmenes y agregaciones que nos cuestan mucho código con la función ddply pasan a ser de lo más sencillo. Al tajo, o mejor dicho, al ejemplo, como siempre, creo que ilustrar ddply es mejor que entrar en su sintaxis, para eso está la ayuda. Creamos un data.frame con datos inventados que tendrá duplicados por id_cliente :

Combinaciones de k elementos tomados de n en n. Con SAS y con R

Me gustaría plantearos un problema que me ha ocurrido recientemente con SAS. Necesitaba todas las posibles combinaciones de 9 elementos tomados de n en n. Tenia que crear un dataset con todas estas combinaciones. Antes de ponerme a programar toca buscar en Google « sas combinations » y tras un rato buscando encuentro el siguiente link. Este link contiene una macro de SAS que nos permite crear todas las combinaciones de k elementos tomados de n en n:

Comunicar SAS con R creando ejecutables Windows

Quiero trabajar hoy con la función put de SAS para la creación de ficheros ejecutables de Windows (.BAT) y también quiero comunicar SAS con R. Mato dos pájaros de un tiro y para ello vamos a crear un script de R que llamaremos desde SAS a partir de un archivo .BAT. Un ejemplo típico y muy sencillo que espero poder ir sofisticando con el paso del tiempo hasta llegar a paquetizarlo. Tiene los siguientes pasos:

Porque me gusta R

En los últimos tiempos he hablado mucho y mal de R en los «ambientes». El problema de siempre puede terminar con la paciencia de cualquiera, la manipulación de datos con R cuando superamos un GB puede acabar con la paciencia de este viejo dinosaurio. Viejo por usado no por mi edad, y dinosaurio por anticuado, aunque me gustaría recordar que los dinosaurios fueron capaces de sobrevivir 65 millones de años. En realidad soy un mainframe, usado, superviviente e imprescindible y me gusta R. Desde el año 2001 sé que el futuro de la gestión de la información pasa por él. Por este mismo motivo soy uno de los tipos que más ha luchado por divulgar las bondades y, sobre todo, las posibilidades que nos ofrece. Pero de verdad me gusta R porque, bajo mi punto de vista, el principal objetivo de todos aquellos que gestionamos datos tiene que ser la rentabilidad. ¡Chimpún!

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. Análisis de Factores con R (una introducción)

El análisis de factores es una técnica de reducción de datos: menor dimensión mayor portentaje de varianza. Distinguimos el análisis factorial exploratorio del análisis factorial confirmatorio en función del conocimiento del número de factores a obtener. Este análisis está muy relacionado con el análisis de componentes principales pero no buscamos explicar el mayor porcentaje de varianza a partir de combinaciones lineales de variables, buscamos conjuntos de variables comunes entre si. Este análisis supone que hay un factor intrínseco a las variables a combinar. El proceso a seguir para este tipo de análisis sería:

Truco R. Valores perdidos a 0, ejemplo de uso de sapply

Muy habitual partinos la cabeza con valores perdidos en R. Los NA pueden darnos algún quebradero de cabeza. Este truco es muy sencillo, transforma valores missing a 0 y nos sirve para aplicar funciones a data.frame con la función sapply. Veamos el sencillo ejemplo:

x=c(1,23,5,9,0,NA)

y=c(5,45,NA,78,NA,34)

dataf=data.frame(cbind(x,y))

mean(datafx,na.rm=TRUE)

mean(datafy,na.rm=TRUE)

#Podría interesarnos tener en cuenta los NAs

sum(datafx,na.rm=TRUE)/nrow(dataf)

sum(datafy,na.rm=TRUE)/nrow(dataf)

Tenemos un data.frame con dos variables que contienen valores perdidos, deseamos crear una función que pase estos valores a 0 y aplicarlo al data.frame de partida:

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.