R

Seleccionar un elemento de un objeto de R

Quedarnos con un elemento específico de un objeto en R. Viene de una duda planteada por un lector que surgía a raíz de un post dedicado al p-valor y al tamaño muestral. Jose Ignacio desea almacenar en un objeto el p-valor asociado a un test de Wald para la independencia entre los niveles de un factor. Una sugerencia para poder trabajar con este elemento:

y = c(rep(1,200),rep(0,100))
x = c(rep(1,32),rep(0,168),rep(1,15),rep(0,85))
datos = data.frame(cbind(y,x))
table(datos)

modelo.1=glm(y~x,data=datos,family=binomial)
summary(modelo.1)

Para la realización del test de Wald con R vamos a emplear la librería lmtest :

Truco (malo) de R. Leer datos desde Excel

Tenemos unos datos en Excel y deseamos crear un objeto en R con ellos. La forma más sencilla es seleccionar y copiar los datos y ejecutar el siguiente código:

datos = read.delim("clipboard")

str(datos)

Muy sencillo, pero necesitaba «fustigarme». Si deseamos llevar los datos de R a Excel (el camino contrario) hacemos:

write.table(datos,"clipboard", sep="\t",row.names=FALSE)

Igual de sencillo. No hagáis como yo, no olvidéis este código. Saludos.

Ya están en marcha las V Jornadas de R

Una noticia por todos conocida. Ya están en marcha las V Jornadas de R. Esta vez son en Zaragoza el 12 y 13 de diciembre. En el siguiente enlace tenéis toda la información:

http://r-es.org/V+Jornadas

Creo que no podré ir debido a la política de vacaciones tan anticuada que tienen algunas compañías. Saludos.

Trabajando con factores en R. Attach frente a within

Un ejemplo de trabajo con datos en R. Transformamos factores de dos formas distintas. Por un lado empleamos within con recode de la librería car y por otro lado empleamos el mítico attach.

Manejo de datos con within :

datos library(car)

datos prog id reconocimientos reconocimientos2 = recode(num_awards,"0='Sin renococimiento';1='1 reconocimiento';

else='Más de un reconocimiento'")

})

Manejo de datos con attach/detach :

attach(datos)

datosmath_cat[math<50 ] <- "D" datosmath_cat[math >= 50 & math < 60] <- "C" datosmath_cat[math >= 60&math<75] <- "B" datosmath_cat[math >= 75] <- "A"

datos$math_cat detach(datos)

No voy a entrar en que es más óptimo, tarda menos y demás. En mi opinión es mejor utilizar within pacece más «pulcro» y la verdad es que la función recode nos facilita mucho el trabajo pero como siempre tenemos múltiples posibilidades con R, por eso es R. Saludos.

Lectura conjunta de “Analyzing Linguistic Data”

Mi compañero y amigo Carlos Gil junto con Victor Peinado van a iniciar un interesante proyecto. Un grupo de lectura del libro Analyzing Linguistic Data: A practical introduction to Statistics desde aquí nos hacemos eco de este proyecto que podéis seguir desde aquí.

El calendario del curso es:

  • An Introduction to R: (1 semana, del 6/05 al 12/05)
  • Graphical Data Exploration: (1 semana, del 13/05 al 19/05)
  • Probability Distributions: (1 semana, del 20/05 al 26/05)
  • Basic Statistical Methods: (2 semanas, del 27/05 al 9/06)
  • Clustering and Classification: (2 semanas, del 10/06 al 23/06)
  • Regression Modeling: (2 semanas, del 24/06 al 7/07)
  • Mixed Models: (2 semanas, del 8/07 al 21/07)

Será todo un éxito, como las anteriores convocatorias. Saludos.

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 referente 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 3 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. Para hacerlo empleamos R, en concreto el paquete vcd. Para ilustrar el ejemplo con datos nos vamos a la web de un conocido libro para el uso de GLM en seguros. No entramos en muchos detalles, el código es muy simple, si tengo ocasión lo complicaré:

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.

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.

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

Nuevo curso de estadística con R

De nuevo Juanjo Gibaja y Carlos Gil ponen en marcha un nuevo curso de estadística con R. Gratuito y abierto a todo aquel que desee inscribirse. En la web de Carlos podéis encontrar más información acerca de este nuevo curso. El nombre ahora es Introducción a la Estadística Moderna con R. Viendo como funcionó el anterior curso el éxito está garantizado y en este caso la temática es más interesante si cabe por lo que le auguro aun mayor éxito.

Cuánto dinero pierdo jugando a la lotería. Una simulación poco seria con R

Esta pantalla es muy habitual en mi televisor todos los jueves por la noche. Son los resultados de la Lotería Nacional de España, el sorteo de los jueves. Mi mujer insiste en comprar lotería para dejar de ser pobres. No es una buena opción. Aunque por lo menos ahora compramos lotería nacional. Antes jugábamos a eso de la Bonoloto, las probabilidades de que te toque son menores que la cantidad de sustancias dopantes que le encontraron al gran Alberto Contador. Eso lo entendió, pero había que jugar. ¿Y cuánto nos cuesta jugar?

Fechas importantes para las IV Jornadas de Usuarios de R

R

Hay que tener en cuenta las siguientes fechas para todos aquellos que deseéis participar:

  • 16 de septiembre de 2012 Fecha límite para el envío de abstracts
  • 21 de octubre de 2012 Fecha límite para la aceptación de abstracts

Las IV Jornadas de Usuarios de R tendrán lugar en el CREAL los días 15 y 16 de noviembre de 2012. Hay en marcha una competición de análisis de datos con R, cuando tenga conocimiento de las bases y las fechas os las comunico.

Solventamos los peligros del análisis cluster con SVM

Retomamos un asunto tratado en días anteriores, los peligros de realizar un análisis de agrupamiento basado en las distancias entre observaciones. ¿Cómo podemos evitar este problema? Empleando máquinas de vectores de soporte, traducción de Support Vector Machines (SVM). Esta técnica de clasificación de la que ya hablamos en otra entrada nos permite separar observaciones en base la creación de hiperplanos que las separan. Una función kernel será la que nos permita crear estos hiperplanos, en el caso que nos ocupa tenemos sólo dos variables, necesitamos crear líneas de separación entre observaciones. En la red tenéis una gran cantidad de artículos sobre estas técnicas.