R

Leer y representar datos de Google Trends con R

En el blog del profesor Serrano tomé contacto con el paquete RGoogleTrends para leer datosde Google Trends. Tras diversos intentos y analizando bien el paquete RGoogleTrends no he sido capaz de hacerlo funcionar. Sin embargo sólo hay que leer un csv, por esto podemos emplear read.csv para descargarnos los datos de Google Trends y analizarlos con R. Además el objeto resultante nos será mucho más familiar que el generado por RGoogleTrends. Para realizar esta lectura necesitamos lo siguiente:

Nuestras funciones de R en menús con rpanel y svWidgets

Hoy quería acercarme a los paquetes **rpanel **y svWidgets para crear ventanas y menús respectivamente. La idea es sencilla, tenemos funciones en R que empleamos habitualmente y con ellas vamos arealizar un menú. Partimos de una función muy sencilla en R para eliminar datos con valores missing. [Por cierto, que cansado estoy de escribir palabras en inglés para facilitar las búsquedas, un valor missing es un valor perdido. Tras el lapso continúo]. Mi función:

Muchas variables no implican una mejor predicción

Me sigo durmiendo con el genio Juan Antonio Cebrián y sus pasajes de la historia, monográficos zona cero o tertulias 4 C. Sus programas de radio me acompañan desde hace muchos años. Estudiando, vigilando instalaciones del ejercito o en el turno de noche de una fábrica Cebrián y su gente ha estado conmigo. En alguna ocasión hablaron del código secreto de la Bíblia, un código existente en la Torá (Pentateuco) que se resume en «todo está escrito».Y es que una gran cantidad de información puede provocar relaciones al azar (o al azahar como le gusta decir a un buen amigo). Y esto puede pasarnos en nuestros modelos matemáticos. Ejecutemos el siguiente código en R:

Truco R. Paletas de colores en R

Paletas de colores en R

En cuántas ocasiones habéis querido dar color a un gráfico y por aligerar código creáis gráficos de este tipo:

x = rpois(100,as.integer(runif(10)*1000))

barplot(sort(x))

Pues en R esta labor puede costarnos muy poco si empleamos las paletas de colores. Hoy quiero presentaros las siguientes:

  • rainbow
  • heat.colors
  • terrain.colors
  • topo.colors

Ejemplos de uso:

require(graphics)

barplot(sort(x),col = rainbow(x),main="Paleta rainbow")

barplot(sort(x),col = heat.colors(length(x)),main="Paleta heat")

barplot(sort(x),col = topo.colors(length(x)),main="Paleta topo")

Comparad, metemos los 4 gráficos en una sóla ventana y tendremos la figura con la que iniciamos esta entrada:

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:

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:

Haciendo gráficos con R ¿cuáles son vuestras preferencias?

R

¿Cúal de estos gráficos de cajas os gusta más?

  • Base de R:

base.png

png('C://temp//base.png',bg = "white",

res = 100, width=450, height=600)

boxplot(Petal.Length~Species, data=iris,

main="Gráfico con Base")

dev.off()
  • Con lattice:

lattice.png

png('C://temp//lattice.png',bg = "white",

res = 100, width=450, height=600)

#Paquete lattice

require(lattice)

x<-bwplot(Petal.Length~Species, data=iris,

main="Gráfico con Lattice")

print(x)

dev.off()
  • Con ggplot2:

ggplot2.png

png('C://temp//ggplot2.png',bg = "white",

res = 100, width=450, height=600)

#Paquete ggplot

require(ggplot2)

x2 <- ggplot(iris,aes(Species,Petal.Length))

x2 + geom_boxplot() + opts(title="Gráfico con ggplot2")

dev.off()

Tres muestras del mismo gráfico de cajas realizado con R. Tres sintaxis muy sencillas pero boxplot es más fácil si cabe. Parece que estéticamente ganaría ggplot2 sin embargo todo es jugar con más opciones, pero se complicaría el código. En mi opinión creo que sale ganando ggplot2 pero no es tanta la diferencia.

Algunos temas de interés sobre R

R

No había escrito nada sobre ello porque muchos de mis lectores sé que están al corriente de la realización de las II jornadas de R en castellano. Este año se organizan en la Escuela Politécnica de Mieres y tienen un par de talleres muy interesantes. A ver que tal funciona la experiencia de los talleres, particularmente si me parece buena opción. Desgraciadamente no contarán con mi presencia, el más ferviente defensor de R en los foros de dinosaurios gestores de la información. Mis deberes familiares (cada vez más numerosos) y un nuevo cambio en el rumbo de mi trayectoria profesional me impiden acudir. La siguiente edición.

Mapas con spatial data de R

colombia13.jpgespania1.jpgmexico1.jpg

Vamos a hacer mapas de México, España y Colombia con R. Y lo primero que tenemos que hacer es disponer de un objeto de R con los datos del mapa. Estos datos los vamos a obtener de http://www.gadm.org/country Seleccionamos el país y el formato que deseamos descargar. Para ilustrar nuestros ejemplos vamos a descargarnos los mapas de España, México y Colombia en formato R data. Vemos que tenemos distintas divisiones en función del nivel al que deseemos llegar. En este caso seleccionamos nivel 2 para España y nivel 1 para Colombia y México. Los hemos descargado a nuestro equipo, mejor descargarlo que no acceder a la web, y comprobamos que tengan extensión Rdata los archivos. Una vez tengamos los archivos con su formato, su extensión y demás ya podemos trabajar con ellos y vamos a trabajar con el paquete sp spatial data :