Análisis Confirmatorio vs Exploratorio

Análisis Exploración….¿qué es eso? 

La idea de la exploración de datos es tal cual lo que su nombre indica, es buscar cosas entre los datos.

Inicialmente uno entra a esa selva de datos y paso a paso va siguiendo algún camino o haciendo uno nuevo, cada pequeño avance nos va dando pistas del lugar en el que estamos, y poco a poco nosotros como exploradores vamos entendiendo como es esa selva. La idea creo que es parecida a jugar a descubrir cosas desde los datos. Lo que se intenta es tomar la información y tratar de encontrar algún indicio de algo que puede “servirnos”. Pero, ¿qué es “servirnos”?,¿qué buscamos?,¿para qué queremos entender esa selva?

Puede parecer absurdo, pero un paso clave antes de explorar la información es conocer un poco sobre su origen, el tipo de datos, la cantidad de ellos y cómo se generan. Hacer este tipo de indagación antes de procesarla y explorarla nos puede ayudar a no caer en falsos “descubrimientos”.

Ejemplo; si uno tiene información de las votaciones por casillas y una casilla muestra un comportamiento “anómalo” con respecto al resto, uno puede tratar de explorar la información en busca de una “explicación” solo desde los datos. En ese caso si uno “contextualiza” o revisar el lugar dónde se encontraba la casilla cuando se realizaba la votación, quizás esto puede explicar su anomalía. Ejemplo, si estaba localizada en la sede de uno de los candidatos es probable que explique porque contenía solo votos de él o si se sabe que la localidad es corrupta uno puedo sospechar que todos estaban de acuerdo en votar por un candidato.

Puede parecer que la exploración de datos es algo poco sofisticado, hacer una gráfica no parece ser lo más difícil cuando uno tiene datos de asistencia de los alumnos de una clase de matemáticas en una preparatoria , o el valor de una moneda contra el dolar durante 100 días, o el registro de lo que compran en el supermercado 50 personas el mismo día. Eso no parece un gran problema. Pero cuando uno  tienen “mucha información”, como todas las publicaciones de los Mexicanos en facebook en dos años, o las transacciones de todos los clientes de un banco, o de todas las consultas que se hacen en Google por año (que son actualmente 1.2 trillones de búsquedas); esa cantidad de información ya no resulta tan fácil de pensar en cómo graficarla o cómo empezar a explorarla.

Revisando un poco de historia, Jhon Tukey en el año 1977 publica su libro sobre “Exploración de datos”, mucho años antes de que tuviéramos computadoras personales con la potencia de gráficos que ahora tenemos. En su libro resaltaba que era fundamental el diseñar herramientas simples para realizar una exploración de los datos antes de proceder a construir un modelo o aplicar alguna técnica inferencial. Hace una distinción entre el análisis confirmatorio y el análisis exploratorio, de manera general uno pude pensar que el confirmatorio es un modo deductivo de estudiar los datos y el exploratorio un modo inductivo. Es decir, en el confirmatorio se platea validar una hipótesis, probar una “ley” o algo que explica de manera general el comportamiento de todos los datos analizados. En el exploratorio se busca ir de lo particular a lo general, de unas cuantas variables, de calcular algunas cosas o  hacer ejercicios gráficos  de donde se puede ir concluyendo el comportamiento global de los datos.

En el exploratorio, uno debe tener duda de lo que su mente deduce desde algún gráfico o técnica de visualización, no se debe de concluir inmediatamente solo confiando en los que “vemos”, en lugar de eso uno debe de plantear algunas preguntas, ir mejorando la calidad de la exploración y posteriormente poner a prueba nuestras hipótesis por medio del análisis confirmatorio.

Pero antes de compartir algunos ejemplos de exploraciones, es bueno tener claro a qué me referimos cuando digo “datos”. Ahora que la palabra Big Data o Data Sciences está en boca de todos, se tienen ideas intuitivas de que siempre estamos generando “datos”, ejemplo; cuando publicamos algo en nuestro muro de facebook, cuando subimos algún vídeo, cuando mandamos algún e-mail, cuando enviamos un mensaje a través de una app, cuando hacemos alguna llamada, cuando elegimos alguna película por medio de una plataforma en internet, cuando realizamos alguna búsqueda en google, bing o yahoo. No es falso, efectivamente en cada uno de los casos anteriores  generan datos.

Lo que me parece que imaginamos como “datos” en general es un puñado de números o cifras. Pero no piensa que también lo son los vídeos, mensajes de texto, cadenas alfanuméricas o imágenes.

Lo fundamental es que desde cualquier tipo de dato se pueda obtener información cuantitativa, aunque solo nos parezca que nuestra información es cualitativa, que a primera vista nos parece poco natural como analizar los mensajes de texto, email o fotos.

Con esta explicación trato de decir que siempre se tiene una noción clara de como calcular la media de una colección de números, pero no es claro como asignar algún valor a un texto. Sin embargo, para muchos tipos de datos existen herramientas o métodos de procesamientos por medio de los cuales se pueden explorar y analizar, pero siempre es posible diseñar un nuevo método o indicador.

Ejemplo, en un texto se puede pensar en analizar la frecuencia de las palabras, la longitud de las oraciones, la hora de emisión de texto, compararlo contra otro y poco a poco establecer un modo para clasificar.

Otro problema común es el saber cómo asignar un tipo de distribución a una colección de datos, en ocasiones se asigna alguna conocida debido a que se creé “entender” cual es el proceso que genera esos datos. En algunos casos funciona  bien ese método, ejemplo la distribución de Poisson para modelar las llegadas a la fila del banco o la atención de llamadas telefónicas a un call center. Pero en la mayoría de los casos no es claro qué distribución tiene la información, así que parte importante de la exploración es tener técnicas para encontrar algunas posibles y después ir validando las candidatas con los datos que se  tienen.

Ahora si, Machine Learning y Análisis Exploratorio

Buena parte de las técnicas de Machine Learning (ML) son exploratorias o tienen algo de ello. Entre la clasificaciones de técnicas de ML a las que se refieren como aprendizaje no supervisado, prácticamente puede ser pensado como análisis exploratorio.

Un concepto clave de lo que son los “datos”  para R project, es lo que se llama “matriz” o arreglo bidimensional. En general es como se ordena la información. Entonces se tienen columnas que serán las variables asignadas a cada uno de los elementos de estudio, que están nombrados y ordenados en las filas de la matriz. Ejemplo, en la columna se puede tener las variables: peso, altura, edad, ancho de espalda, ancho de cintura, etc. En las filas, se tienen ordenado como: persona 1, persona 2, persona 3, etc.

Lo anterior, es en la práctica lo deseable. Pero es común que la información no este bien ordenada ni limpia. Por lo cual es importante revisarla, tenerla ordenada antes de iniciar la exploración, eso permite ir conociendo el tipo de datos, el origen y las variables.

Para replicar el primer ejemplo se deben de trasladar por medio de R ( o R Studio) al directorio donde se encuentran los datos o desde la consola de R pasar al directorio correspondiente. Para replicar el ejemplo, supongo que se descargaron los datos del texto Machine Learning for Hackers que se encuentran en GitHub.

#Abrimos los datos
data.file<-file.path("data","01_heights_weights_genders.csv")
heights.weights<-read.csv(data.file)

Esto se puede hacer de otro modo, si solo se cambia uno de directorio. Todo lo hago pensando en que se usa la consola de R project, ya que creo que es base conocerla y después de eso usar R Studio no genera mayor problema.

#Cargamos los datos
heights.weights<-read.csv(01_heights_weights_genders.csv)
head(heights.weghts)

Hago ahora uso de un simple comando para conocer aspectos de los datos, summary, por el cual se obtiene un resumen de la información de las columnas. En el ejemplo se tiene:

  Gender         Height          Weight     
 Female:5000   Min.   :54.26   Min.   : 64.7  
 Male  :5000   1st Qu.:63.51   1st Qu.:135.8  
               Median :66.32   Median :161.2  
               Mean   :66.37   Mean   :161.4  
               3rd Qu.:69.17   3rd Qu.:187.2  
               Max.   :79.00   Max.   :270.0  

En caso de que se tengan bastantes columnas y solo se tiene interés en algunas de ellas, se puede extraer la información con la función with del siguiente modo:

#Elegimos la columna Height
heights<-with(heights.weights),Height)
summary(heights)

En caso de no conocer el nombre de la columna, se puede usar la función head, para ver los nombres antes de extraer la información.

Con summary, se obtendrá el valor de la media, del máximo, del mínimo y la media. Pero se puede calcular directamente el valor del  máximo, el mínimo y le media, con las funciones mean,max,min, aplicadas a la columna de datos “heights”.

Para tener claro que tipo de cosa se busca revisar y con qué funciones, se puede clasificar la exploración en:

  1. Medidas de Localización
  2. Medidas de Dispersión
  3. Medidas de Forma

Medidas de Localización

Entre estas medidas se consideran el calculo de la media, del mínimo, del máximo, la moda, los cuantiles.

Medidas de Dispersión

Entre estas se consideran el rango de intercuantiles, el rango de los datos, la varianza y la desviación estándar.

Medidas de forma

Estas medidas son la asimetría y la kurtosis.

Para cada una de estas medidas se tienen un comando o función en R.

#Medidas de localización para Height
mean(heights)
# Vale la pena revisar los parámetros que se pueden manipular para la siguiente función, así podemos definir los rangos que deseamos ver de los cuantiles
quantile(heights)
#El comando summary presenta un resumen 
summary(heights)

Para las medidas de dispersión se cuenta con:

#Medidas de disperción para Height
range(heights)
IQR(heights)
var(heights)
sd(heights)

Para las medidas de forma uso la librería “e1071“, para lo cual se debe de instalar ya que no está por default en R.

#Medidas de forma para Height
library(e1071)
#También se puede usar la librería moments
skewness(heights)
kurtosis(heights)

Los anteriores conceptos, sobre todo las funciones en R, pueden resultar poco alentadoras para dar idea de como se comportan los datos y si es primera vez con estas cosas, resultan poco claro lo que se hace. La ventaja de R es que cuenta con una gran cantidad de gráficas que permiten entender mejor los conceptos anteriores.

Algunas gráficas en R project para explorar datos

Entre los gráficos más usados para explorar una variable se encuentra el  histograma, la función hist permite obtener el gráfico y cuenta con varios parámetros los cuales pueden ser consultados en el menú de R.

#Construcción del histograma
hist(heights,nclass=20, main="Histograma de las Alturas", xlab="alturas",ylab="Frecuencias", col="red")

Histograma

Se puede conocer un aproximado de la densidad de nuestros datos, en R se puede calcular con la función density.

#Construcción de una gráfica de densidad
plot(density(heights), main="Densidad", xlab="alturas",ylab="Densidad estimada", col="red",type="p")

Densidad
Para mayor conocimiento de las funciones density y plot  recomiendo consultar el menú de R y probar como se pueden modificar detalles como los títulos o agregar otra gráfica. Se puede hacer otro ejemplo con la función plot , para ver la relación entre dos variables de datos hago el ejemplo con pesos(weights) y alturas(heights).

#Construcción de un gráfico con las dos variables
plot(heights,weights, main="Gráfica entre las dos variables", xlab="Alturas",ylab="Pesos", col="green",type="p")

Plot_de_pesos_y_alturas

Un gráfico que me parece importante para explorar las variables y poder estimar distribución de los datos, se construye usando la función ecdf. Esto permite ajustar mediante alguna curva los valores estimados de la distribución y principalmente cuando las colas de las distribuciones presentan cierto comportamiento, les llaman distribuciones de colas pesadas.

#Exploración de la cola de la distribución
f<-ecdf(heights)
range(heights)
[1] 54.26313 78.99874
ttx}) estimada", xlab="Valores de Height", col="6",log="y",type="p")

Colas_de_las_dist

En particular la paquetería de R para gráficos es bastante buena, usando la función layout uno puede construir gráficos más elaborados. Un ejemplo es el siguiente, del cual no explico detalles del código pero pueden consultarse en el manual de R.

#Construcción de gráfico con histogramas marginales
x <- pmin(3, pmax(-3, rnorm(200)))
y <- pmin(3, pmax(-3, rnorm(200)))
xhist <- hist(x, breaks=seq(-3,3,0.5), plot=FALSE)
yhist <- hist(y, breaks=seq(-3,3,0.5),plot=FALSE)
top <- max(c(xhist$counts, yhist$counts))
xrange <- c(-3,3)
yrange <- c(-3,3)
b<-matrix(c(2,0,1,3),2,2,byrow=TRUE)
nf <- layout(b, widths=c(3,1), heights=c(1,3), respect=TRUE)
par(mar=c(4,4,1,1))
plot(x, y, xlim=xrange, ylim=yrange, xlab="x", ylab="y",type="p")
par(mar=c(0,4,1,1))
barplot(xhist$counts,axes=FALSE, ylim=c(0, top), space=0,col="2")
title(main='Scatterplot con histogramas marginales',font=2)
par(mar=c(4,0,1,1))
barplot(yhist$counts, axes=FALSE, xlim=c(0, top),space=0, horiz=TRUE,col="3")

Gráfico_con_layout

Pese a que los gráficos que se tienen por default son buenos, también existen librerías que tratan de mejorar la presentación y manipulación de datos. En breve habla de ggplot, la cual es una librería que no solo está para R project, también existe para Python y es muy recomendable aprender a manipularla, ya que tiene ventajas por que permite ahorrar el proceso de manipular los datos y los gráficos son bastante agradables. En general la librería es bastante madura y cuenta ya con buenas referencias para su aprendizaje.

#Construcción de un histograma con ggplot
ggplot(heights.weights, aes(x = Height)) + geom_histogram(col="2")

ggplot_hist

Al inicio al escribir una gráfica en ggplot parece demasiado enredado comparado con poner solo un comando. Pero con la práctica se empieza hacer notar que además de que la calidad de los gráficos es mejor, se puede diseñar gráficos mucho mas agradables y se tienen mucha libertad para poderlos modificar.

Ejemplo, para revisar las densidades de las alturas con respecto a los géneros resulta mucho más sencillo hacerlo mediante la siguiente indicación.

#Construcción de gráfico de las densidades por género
ggplot(heights.weights, aes(x = Height, fill = Gender)) + geom_density() + facet_grid(Gender ~ .)
ggplot(heights.weights, aes(x = Height, fill = Gender)) + geom_density()

ggplot_densidad_de_h

ggplot_Heights_for_g

Para hacer una gráfica de las alturas vs los pesos, se requiere solo la siguiente línea y además se agrega la tendencia.

#Construcción de gráfica scatterplot
ggplot(heights.weights, aes(x = Height, y = Weight)) + geom_point() + geom_smooth()

ggplot_scatterplot_HW_tendencia

Como muchas técnicas de Machine Learning son para clasificar, un ejemplo sencillo que se pueden hacer es el distinguir las poblaciones por género y buscar la “mejor”  línea que límite esos datos.

#Transformamos los datos para analizar como se comporta y graficamos la recta que divide a entre géneros

#Primero transformamos los datos
heights.weights <- transform(heights.weights,Male = ifelse(Gender == 'Male', 1, 0))
#Ahora claculamos una regresión lineal general
logit.model <- glm(Male ~ Weight + Height,data = heights.weights,family = binomial(link = 'logit'))
#Por último contruimos el gráfico
ggplot(heights.weights, aes(x = Height, y = Weight)) +
  geom_point(aes(color = Gender, alpha = 0.25)) +
  scale_alpha(guide = "none") + 
  scale_color_manual(values = c("Male" = "black", "Female" = "blue")) +
  theme_bw() +
  stat_abline(intercept = -coef(logit.model)[1] / coef(logit.model)[2],
              slope = - coef(logit.model)[3] / coef(logit.model)[2],
              geom = 'abline',
              color = 'red')



ggplot_HW_plano_separador

 Una observación que es crucial en la exploración de datos, es que en ocasiones se requiere que se “transformen”. Con eso quiero decir que si se tiene una gráfica como la anterior, pero donde el rango de los datos en el eje X es muy grande, es posible que sustituyendo los datos originales por su logaritmo se pueden estudiar de modo más “cómodo”. Pero cuando se transforman los datos o se usa alguna transformación, es recomendable considerar que dicha función respete el orden en el cual tienen los datos,  que sea continua y hasta cierto punto “suave”, que tenga sus derivadas. Esto es quizás técnico, pero es importante tenerlo en cuenta.

Espero la entrada sirva para tener una idea general de lo que es la exploración, en buena medida muchas de las técnicas más avanzadas, que van desde generalizaciones de Análisis de Componentes Principales hasta la Homología Persistente  y variedades de aprendizaje son técnicas exploratorias, requieren cierto conocimiento de lo que se hace para que sea fácil la  interpretación de sus resultados y conocer en qué situación es recomendable usar cada técnica.

Referencias:

1.-http://www.amazon.es/Exploratory-Analysis-Edition-Chapman-Computer/dp/1439812209

2.-http://www.amazon.com/ggplot2-Elegant-Graphics-Data-Analysis-ebook/dp/B0041KLFRW

3.-http://www.amazon.com.mx/Introductory-Beginners-Visualisation-Statistical-Programming-ebook/dp/B00BU34QTM

4.-http://www.amazon.es/Graphics-Second-Edition-Chapman-Series/dp/1439831769

5.-http://www.r-bloggers.com/

Anuncios

¿Qué se necesita conocer de R project para aprender algunas técnicas de Machine Learning?

Sobre R

El lenguaje R o R project, en recientes años se ha vuelto muy popular, sobre todo en el ámbito académico y poco a poco empieza a sonar en el sector de la industria de la Tecnologías de la Información (TI).

Tan es así, que Oracle una empresa líder en tecnología y conocida por su gestor de bases de datos con el mismo nombre, ahora ofrece una versión de R dentro de su gestor de bases de datos. No he probado la versión, por lo cual desconozco si tienen todas las funcionalidades iguales o si tienen ciertas restricciones al compararlo con la versión de R que uno descarga libremente.

Si uno busca en la red o en la página principal de R project, se encontrará con la abrumadora noticia de que existen aproximadamente más de 7 000 librerías. Las librerías son un bloque de código o funciones que alguien escribió y compartió libremente para hacer uso de ellas en el software.

Al ser libre R project uno tienen la posibilidad de compartir algunas funciones que considere que son buenas y que a otros les pueden servir, eso hace que una comunidad a nivel mundial esté actualizando librerías o compartiendo nuevos algoritmos.

Entre todas las librerías uno puede encontrar un poco de todo. Se encuentran librerías que permiten la manipulación de datos, realizar conexiones a la red, automatizar pronósticos, manipular y analizar textos, generar reportes, conectarse con gestores de bases de datos, manipular mapas, etc.

Si uno toma alguna técnica  estándar para hacer algo de estadística, es probable que exista más de una librería que nos permite hacer eso. Por lo tanto pretender conocer todas las librerías es una tarea casi imposible y lo que recomiendo es ir consultando en la red, en foros o blog para conocer las librerías que sugieren para realizar tal o cual técnica.  Al final las mejores librerías y las más usadas tenderán a persistir en las recomendaciones que haga la gente.

Existen muchos manuales básicos para aprender a usar R [1,2,3,4,5]. Lamentablemente el manual de introducción en español no ha sido actualizado desde hace años, pero se cuenta con muchas referencias que van desde blog, notas y textos  que cubren prácticamente todo lo que uno debe de saber a un nivel básico o intermedio, y posiblemente hasta un poco avanzado ( hay un libro hermoso de temas avanzados escrito por Hadley Wickham que deben de apurarse a leerlo).

Lo “malo” hasta cierto punto es que las mejores referencias se encuentran en Ingles, es importante aprender por lo menos a leer en dicho idioma pero hace falta en ocasiones manuales en español que clarifiquen los conceptos e ideas.

Al final lo recomendable para aprender cualquier software es practicar, tomar varias fuentes para aprender y replicar ejemplos. Estudiar el código que otros hacen y hacer las modificaciones que uno pueda ir pensando que mejoran dicho código, ya sea para optimizarlo o solo para probar si se puede usar para hacer otra cosa.

Lo que puedo decir es que R project es un software bastante sencillo de aprender,  lo complicado no radica en el software mismo, sino conocer lo que hacen comandos, técnicas, algoritmos y librerías. A gente que lleva toda su vida haciendo software le desconcierta y le parece muy “científico” como para aprenderlo, pero con algo de tiempo y algunas revisiones de como declarar variables, hacer funciones, manipular tipos de datos, etcétera; van perdiendo el miedo a usarlo.

R project y Machine Learning

La instalación en el sistema que sea, Windows, Mac Ox o Linux, son sencillas y el IDE (Entorno de Desarrollo Integrado) es prácticamente igual para todos los sistemas. Lo único que es importante y que cambia es al correr un script desde la consola del sistema. En general la consola de Windows es muy pobre comparada con las de los otros dos sistemas, pero se puede fortalecer usando otros software. Para ese caso en otro momento explico el tipo de cosas que hay que hacer para correr los script.

Un complemente para programar en R es usar el entorno R Studio, que prácticamente es tener un entorno de desarrollo amigable, de mejor vista y con herramientas que simplifican el trabajo al momento de programar en R. Existen  otros entornos, pero es cosa de cuál se adecua mejor a nuestro modo de trabajo y necesidades.

En el caso de los ejemplos de Machine Learning, lo necesario del software se puede clasificar en:

  1. Funciones estándar en R.
  2. Importación, exportación y manipulación de datos.
  3. Funciones particulares de ciertas librerías.

Del primer punto las funciones estándar son: lm, plot, hist, summary, head, apply, sapply, poly, tail, dim, str, names, c, paste, princomp, subset, cov, cor, ts, entre otras. Lo recomendable es revisar por medio de la función help la información de los parámetros y ver algún ejemplo del uso de dicha función, como siempre la recomendación es hacer pruebas para ir mejorando en el manejo de dichas funciones o comandos. Por supuesto que existen más funciones que no menciono, pero son en general las que de momento creo se usan más en las entras.

Sobre la importación y exportación de datos, lo principal en mi opinión es tener claro que el tipo de dato base en R son los vectores o en otras palabras R es un lenguaje “vectorizado” y en general la mayoría de funciones que se usan depende de asignarle data.frame o matrices, que son construidos con vectores.

La importación de los datos se hace por medio de las funciones read.csv, read.txt,scan entre otras. Para este tema se puede consultar un pequeño manual de aproximadamente 30 páginas en la página oficial de R. En general se requiere practicar con la importación de datos, ya que en ocasiones pedir que se importen datos con cierta restricción, como por ejemplo pedir que las cadenas no sean leídas como factores, que se separen las columnas por tabuladores,etc.

Respecto a la manipulación, se cuenta con algunas funciones subset, with, ifelse, cbind, rbind   las cuales son estándar del software. Pero se cuenta con varias librerías que permiten la manipulación de datos, entre ellas, reshape2,  gdata ,data.table, plyr, dplyr.

Del tercer punto, para aprender sobre algunas funciones de ciertas librerías mi recomendación es revisar los manuales de usuarios que son publicados cuando se libera la librería o paquete, es decir; cuando nos permiten usar su código otras personas que usan R project.

La mayoría  de las librerías suelen contar con algunos ejemplos, datos y  en Internet suele haber información casi suficiente para conocer como funcionan. Creo que lo mejor es tratar de replicar los ejemplos, cambiar las condiciones de parámetros y crear un ejemplo, también esto resulta más divertido para comprender lo que hacen las funciones.

Algunas librerías son más populares que otras y en buena medida es por la calidad y utilidad. Ejemplo, la librería ggplot2  es bastante buena para gráficos, se cuenta con libros y notas que explican su uso con buen detalle, además de que en recientes años se ha hecho muy popular y es considerada unas de las herramientas indispensables en análisis de datos.

Otra librería que ha tenido popularidad es tm, que se refiere a Text Mining ( Minería de Textos); se cuenta con bastante información en la red sobre como usar sus funciones con algunas ejemplos, pero además está relacionada con las investigaciones del Procesamiento de Lenguaje Natural (NLP, en ingles).

Por último las librerías que son populares para analizar redes es igraph y sna, con redes me refiero a redes sociales o redes complejas, esta librería cuenta con una gran cantidad de funciones. La gran ventaja es que se cuenta con suficiente explicación y ejemplos debido a la gran popularidad de las redes sociales en nuestro día a día, entonces basta con buscar un poco en la red para encontrar buen material al respecto [6,7].

Espero las explicaciones generen interés en explorar más sobre R project. La última observación que hago es entender que este software permite rápido aprender ciertas técnicas, pero existen otros software que ante proyectos grandes puede ser mejores( Python, C,Ruby, Java, scala), pero sin duda es una buena fuente para aprender practicando,  R lo permite con una curva de aprendizaje muy pequeña.

Comentario: Debido al desarrollo de R y  la creación de nuevas librerías, con el paso del tiempo algunos de los comentarios respecto a las librarías puede dejar de ser actualizado. Ejemplo, ggplot2 ha evolucionado no solo con mejoras y más funciones, sino también con la aparición de otro tipo de librerías que se abocan a la visualización de datos a nivel web. Otro ejemplo es en el procesamiento de datos, debido a la relevancia de plyr y dplyr es posible que aparezcan librerías más optimizadas o con otro tipo de características, ejemplo data.table es mejor para ciertas operaciones con datos. Así que siempre hay que tener en mente que los software evolucionan, pero ello es recomendable conocer de manera solida las estructuras base o herramientas base.

“The best thing about R is  that it was developed by statisticians. The worst thing about R is that….it was developed by statisticians.”  Bo Cowgill, Google, Inc.

Referencias:

1.-The R inferno.

2.-Using R for Numerical Analysis in Science and Engineering.

3.-A handbook of Statistical Analyses using R.

4.-Data Manipulation with R.

5.-R in Action.

6.-Igraph

7.-SNA

8.-R-bloggers

9.-Revolution Analytic