Author: Ambrosio Torres

Jonathan Garcia: Bienvenido el nuevo administrador de R para Chibchombianos

Hola a todos!

Hoy les traigo una super-noticia: un parcero se suma a colaborar con posts en R para Chibchombianos. Se trata de Jonathan Garcia, Ingeniero Industrial de la UPTC de la provincia de Sugamuxi (que viva Boyacá!). Le viene súper al blog la presencia de Jonathan, ya que nos va a aportar cosas totalmente nuevas para el blog: series de tiempo, modelos de vectores de corrección de errores, y pronósticos, entre otras. De manera que el desbalance de los post hacía temas biológicos del blog será un poco menos evidente. Además de que aportará posts sobre análisis de datos en general, lo cuál sirve en todas las áreas.

En todo caso, el primer post de Jonathan será una pequeña introducción a RMarkdown y esperamos desde ya que sea todo una bomba y sea impresionantemente útil para las personas que están interesadas en temas como LaTeX, y generación de documentación y reportes via scripting, y obviamente que sea útil para los seguidores del blog en general.

No siendo más me despido, recordando que AÚN ESTAMOS INTERESADOS EN SUMAR COLABORADORES AL BLOG!

Y como diría Rigo: “nos vemos pues, mijos” 😛

En busca de colaboradores [no necesariamente Chibchombianos]

Hola a todos,

he estado pensando desde hace rato que el blog se me está muriendo porque estoy muy corto de tiempo. De manera que me parece que una solución más razonable que simplemente abandonarlo para siempre, sería encontrar personas que tenga interés con colaborar con el blog. La dinámica sería muy sencilla y simplemente yo les daría acceso para realizar posts en el blog.

Los que estén interesados en hacer parte de R para Chibchombianos simplemente deben comunicarse conmigo via e-mail ([email protected]) manifestando su interés y describiendo muy brevemente como les gustaría y/o podrían aportar al blog y sus principales intereses relacionados con R. Además del título (y descripción en dos líneas) del primer post que les gustaría hacer en el blog.

Nota: No serán consideradas solicitudes de personas anónimas.

Saludos y ojalá lleguen muchas solicitudes!  

ConSha: calculo de configuraciones (de landmarks) consenso para múltiples especies

Hola a todos,

después de meses de abandono, empiezo a actualizar los posts que tenía pendientes en mente.
Así que en está ocasión traigo un función que sirve para calcular las configuraciones consenso de múltiples especies. El nombre de la función es ConSha por sus siglas en inglés: Consensus Shapes.

Pero como siempre en R para Chibchombianos, voy a tratar de desglosar bien lo que hace la función y como utilizarla: Supongamos que tenemos un (1) solo archivo de datos de landmarks en formato .tps que contiene la info. de múltiples especímenes para cada una de múltiples especies (e.g. 100 individuos de la especie A, 30 individuos de la especie B, 47 individuos de la especie C, etc.). Estos datos pueden (o no) estar en desorden, es decir, no necesariamente tienen que estar primero los especímenes de la especie A, y después los de la B y así sucesivamente, de hecho, pueden estar intercalados.
De manera que lo que realiza la función es tomar las configuraciones de cada uno de los 100 especímenes de la especie A y calcular la forma consenso de la especie A, después tomar las configuraciones de cada uno de los 30 especímenes de la especie B y calcular la forma consenso de la especie B, y así sucesivamente calcular las formas consenso de las especies que tengamos en nuestro archivo .tps. De tal forma que al final obtendremos un archivo .tps con las configuraciones consenso de cada especie en el archivo (A,B,C…).

La función se encuentra en mi repositorio de Github en el cual pueden encontrar el archivo de la función ConSha,R, y adicionalmente un archivo dataset.tps para probar la función.
Si abriéramos el archivo de prueba podemos ver que luce de la siguiente forma:

LM=14
3.13045250691872E-001 7.29322525506001E-003 
3.42809792245237E-001 -3.57034721605956E-002 
2.63173123011433E-001 -1.22199144089513E-001 
5.35197442861358E-002 -5.39596439130598E-002 
2.53453105780066E-001 2.62027443048166E-002 
2.04168063279065E-001 1.47620260684790E-002 
-4.60169110946384E-002 1.74600183292736E-001 
-9.59726458304496E-002 1.84357462596101E-001 
-2.83924112942859E-001 1.18457766601670E-001 
-3.55532177430208E-001 3.94077229175337E-002 
-3.68743702133253E-001 -2.08780400403263E-002 
-3.09724469855327E-001 -1.25133003051213E-001 
-9.49111785388863E-002 -1.15361108466499E-001 
1.24656118531812E-001 -9.18467193151895E-002 
ID=Prospis_alba_34545

LM=14
3.21825958820403E-001 1.56972900845896E-002 
3.45021450179769E-001 -5.75459757349876E-002 
2.57049084820015E-001 -1.36520923015687E-001 
7.06583826558961E-002 -6.62131496577447E-002 
2.63084351059020E-001 4.81660509530724E-002 
1.96354558884907E-001 2.97989489308554E-002 
-4.86493263229514E-002 1.67552383318800E-001 
-1.11100055024889E-001 1.77468005498401E-001 
-2.94615965495992E-001 1.19375750027112E-001 
-3.53475503697631E-001 4.16059394982118E-002 
-3.62549588821628E-001 -1.53067880652038E-002 
-3.03266498401659E-001 -1.17607091108639E-001 
-8.83323799402096E-002 -1.16747797663857E-001 
1.07995531284950E-001 -8.97226430649234E-002 
ID=Prospis_alba_34546

LM=14
3.23772512546634E-001 1.53172222532955E-002 
3.38530408452876E-001 -4.69951604929775E-002 
2.64413836969547E-001 -1.23486210486488E-001 
4.37269588640421E-002 -2.89231129970610E-002 
2.52567518005097E-001 1.79572597400994E-002 
1.98047556246809E-001 1.31281405634119E-002 
-3.66453381677634E-002 1.87983560055656E-001 
-7.06493590968309E-002 1.92642854752606E-001 
-2.74332251307463E-001 1.01571391615247E-001 
-3.40139314765272E-001 2.92066724716173E-002 
-3.65512527249101E-001 -5.28351408671462E-002 
-3.18412309285033E-001 -1.23600138718901E-001 
-1.55703386602863E-001 -9.99305637561373E-002 
1.40335695389321E-001 -8.20367741332214E-002 
ID=Prospis_noche_34545

LM=14
3.12177531888443E-001 7.82340734462899E-003 
3.35646892955546E-001 -4.60069867096062E-002 
2.56290952036992E-001 -1.18215560269086E-001 
4.83716227051366E-002 -2.75810545610100E-002 
2.47248182154144E-001 1.90619923042759E-002 
1.90500922194981E-001 1.13233099249798E-002 
-4.53985352495453E-002 1.74591463356953E-001 
-1.06044958223772E-001 1.89223475344767E-001 
-2.82477833452805E-001 1.21836583582178E-001 
-3.52324104292068E-001 4.74368451834241E-002 
-3.70146773792764E-001 -1.73018159239321E-002 
-3.02242089304793E-001 -1.39629643475794E-001 
-9.97265425420069E-002 -1.20196880796853E-001 
1.68124732922512E-001 -1.02365135304926E-001 
ID=Prospis_noche_34546

Y podemos observar que tenemos la configuración (compuesta por 14 landmarks) de 4 especímenes (2 de la especie Prospis noche y 2 de la especie Propspis alba).
De tal manera que al utilizar ConSha, obtendremos un archivo .tps con la configuración consenso de Prospis noche y de Propspis alba.

Usando ConSha
Lo primero que debemos hacer para utilizar ConSha es asegurarnos de que tengamos instalados los paquetes geomorph y abind. Si no los tenemos, podemos instalarlos simplemente con los comandos:
install.packages(“geomorph”); install.packages(“abind”)

A continuación, descargamos el archivo ConSha.R de github y el set de datos de prueba (dataset.tps).
y cargamos en R la función con el comando:
source(“ConSha.R”)

Y finalmente para correr el set de datos de prueba con ConSha utilizamos el comando:
ConSha(“dataset”)

Obteniendo un archivo final llamado dataset_AlgnBySpecies.tps que contiene las configuraciones consenso calculadas y que luce por dentro de la siguiente manera:

LM=14
0.314352946252026 0.0372828643538679
0.345391625687852 -0.018266371202351
0.268903501736312 -0.107275433652158
0.0665484984845718 -0.054602373599311
0.25348873237188 0.0579603304359095
0.197099287000799 0.0384379938327593
-0.0609533535837602 0.166073878705452
-0.117567566456806 0.171264076145226
-0.296999890586971 0.0945368247615419
-0.355413088624318 0.0113392674557502
-0.361710883486415 -0.047781149525081
-0.294542245374531 -0.145540513432892
-0.0815632427295364 -0.122737431641517
0.122965679308895 -0.0806919626371959
ID=Prospis_alba_

LM=14
0.315549460170045 0.0375216206687371
0.339328648431645 -0.0187116628050462
0.269025353909479 -0.0989960002074543
0.0481546301899097 -0.0243637113375953
0.247233864993922 0.0388722637648096
0.192371740969995 0.0280620763425688
-0.0556631083991069 0.177079835702801
-0.103572456055501 0.182807603485376
-0.286260948480472 0.0884200435442389
-0.347770083834775 0.00982705083149019
-0.36326190421352 -0.064975746574993
-0.298110334511657 -0.156387108083493
-0.118081420665176 -0.119996896643895
0.161056557495211 -0.0791593686875449
ID=Prospis_noche_

Ojalá la función les sea de mucha utilidad, y espero muy pronto poder añadir otros posts que tengo en mente. Saludos y que la pasen sabroso!

######################################################################################################################
Nota1: la función fue probada con un archivo que contenía 571 especímenes pertenecientes a 18 especies y tardó 0.81 segundos en obtener las formas consenso de todas las especies.

Nota2: se debe tener mucho cuidado con los nombres de los especímenes, asegurándose de que todos los especímenes de una especie estén llamados de la misma manera. Ej.: dos especímenes nombrados como “Genero_Especie” y “genero_espeCie” serán reconocidos como pertenecientes a dos especies diferentes.
######################################################################################################################

Función ProcPca2tnt: construyendo matrices de caracteres continuos (formato TNT) en R, a partir de PCA de landmarks (2D o 3D)

Nota editorial:
Empezaré primero que todo disculpándome por el abandono al que sometí el blog este año. 
La verdad fue un año muy agitado para mi, aunque muy fructífero, puesto que:
  1. Empece a trabajar en docencia.
  2. Logré terminar mi carrera, (si, ya soy Biólogo de la UIS 😀 ).
  3. Publiqué mi primer artículo científico (en co-autoría con mi director de pregrado, Daniel R. Miranda-EsquivelTODOS los análisis se hicieron utilizando R 😀 , y pueden encontrar los scripts y datos en mi cuenta de Github).
  4. Presenté mi primer trabajo en un Meeting de la Willi Hennig Society (en co-autoría con mi director de doctorado, Santiago A. CatalanoALGUNOS de los análisis se hicieron utilizando R 😀 ). (QUIEN DIO LA PRESENTACIÓN EN NUEVA YORK FUE SANTIAGO).
  5. Sometimos con Santiago el trabajo anterior a Zoologica Scripta, y estamos esperando, y cruzando los dedos, para que sea aceptado.
  6. Y finalmente terminé el año con la muy grata noticia de haberme ganado una beca interna del CONICET para irme a San Miguel de Tucumán, a hacer un doctorado en Ciencias Biológicas bajo la estupenda dirección de Santiago Catalano y Pablo Goloboff. De manera que tal parece, ‘R para Chibchombianos’ seguirá, pero ya no será actualizado en Chibchombia, sino en Argentina 😛 .
  7. No está de más recordar que como soy papá desde hace 1 año y casi 5 meses, mi tiempo también se ha visto reducido, aunque mis días se han alegrado mucho con la presencia de la Salo.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –  – – – – – – – – – – –

AHORA SI, A LO QUE VINIMOS! ProcPca2tnt

Introducción

En 2010, tal como lo dije en el post de CARONTE, Catalano y colaboradores implementaron el uso de landmarks en un contexto filogenético utilizando el principio de parsimonia. La nueva versión de TNT es completamente funcional para tratar landmarks directamente:


“La ventaja principal es que las búsquedas pueden hacerse sin necesidad de utilizar scripts en TNT. Además, la nueva implementación a reducido dramáticamente el tiempo de análisis de datos de landmarks (cerca de 20 veces menos para TBR), siendo posible también analizar landmarks bajo algoritmos de “nuevas tecnologías”  (búsquedas sectoriales, ratchet, etc). Otras funciones ahora disponibles para datos de landmarks (solos o en combinación con caracteres tradicionales) son: remuestreo, soporte de Bremer, busquedas bajo ‘constrains’, colapso de ramas. 

Otros cambios adiconales en TNT son:

-Posibilidad para exportar gráficos svg de la optimización de landmarks para cada nodo  (interno o externo).

-Nuevo menu para superimponer configuraciones (versión de windows). Ruta: Data/Edit Data/landmark aligment. 

-Posibilidad para calcular de manera mas precisa el ‘score’ mínimo para cada landmark, muy útil en pesos implicados.

-Posibilidad para calcular la longitud de las ramas como la sumatoria de los cambios en los landmarks sobre cada rama. El árbol con la correspondientes longitudes de ramas puede ser exportado en formato nexus.

-La función “permute” ahora permite la permutación de configuraciones de landmarks entre terminales. Con esta función se facilita el calculo de ‘señal filogenética’ en sets de datos de landmarks (Klingenberg & Gidaszewsky 2010), en este caso, bajo ‘squared change parsimony’. “

Traducido de: Santiago Catalano, Comunicación personal 

Sin embargo, antes de dicha implementación, el uso de caracteres de morfometría geométrica (landmarks) para realizar análisis filogenéticos se hacia de manera indirecta.

Uno de los acercamientos que se han utilizado para ésto, comprende en utilizar los ‘scores’ producto de un análisis de componentes principales de variación de forma (‘PCA of shape variation’), previo alineamiento de las configuraciones de landmarks mediante un Análisis Generalizado de Procrustes (GPA). De manera que cada componente principal es considerado como un caracter continuo diferente, y los ‘scores’ (valores) para cada especie son considerados como los estados del caracter. (ej. González-José et al. 2008)
En 2006, Pablo Goloboff, Camilo Mattoni y Andrés Quinteros, presentaron y discutieron en un paper publicado en Cladistics, la incorporación de algoritmos en TNT para analizar caracteres continuos en un contexto filogenético bajo el criterio de parsimonia, sin discretizar dichos caracteres. De tal modo que los ‘scores’ de los PCA de forma pueden ser tomados como caracteres continuos y analizados en TNT.
No obstante, estos datos deben ser primero generados por fuera de TNT para poderlos analizar; ya que se deben digitalizar los landmarks, alinear las configuraciones de landmarks, realizar el análisis de PCA de forma, tomar los ‘scores’ correspondientes al numero de componentes principales que se deseen utilizar, y escribir el archivo en formato .tnt para poderlo utilizar como archivo de entrada (‘imput’) en TNT. Todo este proceso puede ser tedioso y puede ser necesario utilizar varios programas (desde la digitalización al PCA) para poder generar el archivo de entrada.

ProcPca2tnt

ProcPca2tnt es una función escrita en lenguaje R por Ambrosio Torres (quien les escribe) y Santiago Catalano, que permite tomar un archivo de landmarks en formato .tps, alinear sus configuraciones, realizar un análisis de componentes principales de forma, tomar los ‘scores’ del PCA, y escribir un archivo (formato .tnt) de caracteres continuos para ser analizado en TNT. Cabe recordar que los landmarks también pueden ser digitalizados en R, utilizando el paquete ‘geomorph‘, de tal manera que es posible realizar todo el proceso de generación de datos en R, para luego ser analizados en TNT.
La función necesita que esté instalado el paquete de R ‘geomorph’, escrito por Dean Adams,  Erik Otarola-Castillo y Emma Sherra; además necesita que esté instalada la función ‘implode.R’, y que la versión de R instalada sea  3.2.0.
ProcPca2tnt fue escrita utilizando R 3.2.0, en una distribución Ubuntu 14.04 de 64 bits (x86_64-pc-linux-gnu), bajo licencia GPL 2.
Uso de la función ProcPca2tnt
Una vez hayas descargado la función del repositorio de github (recuerda que la función se llama ‘ProcPca2tnt.R’), solo tienes que cargar el archivo a R o RStudio con el siguiente comando:
>source(‘~Desktop/my_folder/ProcPca2tnt.R’)
>source(“ProcPca2tnt.R”) 
El cuerpo de la función es el siguiente:
>ProcPca2tnt(“data.tps”, cummvar = 0.90)

La función toma dos argumentos que el usuario puede manipular libremente, dependiendo de sus necesidades:
  1. “data.tps” es el nombre del archivo .tps que contiene las configuraciones de landmarks. (de manera que si tu tienes un archivo que se llame “Aves.tps”, cambias en el comando la parte de “data.tps” por “Aves.tps”, así: >ProcPca2tnt(“Aves.tps”, cummvar = 0.90)
  2. El segundo argumento es llamado ‘cummvar’ y se utiliza para que el usuario defina el número de componentes principales (EN ESTE CASO EL NÚMERO DE CARACTERES CONTINUOS QUE VA A UTILIZAR), con base en la cantidad de varianza explicada acumulada que desee utilizar. Por defecto, la función utiliza el 90% (0.90) de la varianza explicada acumulada del PCA, pero éste valor puede ser modificado por el usuario, de tal modo que si desea utilizar el 75% de la varianza explicada acumulada, solo tiene que cambiar en el comando el ‘0.90’ por ‘0.75’, así: >ProcPca2tnt(“data.tps”, cummvar = 0.75)
Si no se va a modificar el parámetro de la varianza explicada acumulada simplemente bastaría ejecutar el comando, indicándole el archivo .tps que debe utilizar:
>ProcPca2tnt(“Aves.tps”)
Finalmente, la función escribirá en nuestro directorio de trabajo un archivo en formato TNT que contenga nuestra matriz de caracteres continuos, llamado “Aves.tnt”, que al abrirlo tendría un aspecto parecido al siguiente:

nstates cont
xread 2 4
Thypld 19.993 43.419
Thyvst 0 65
Ledhal 65 63.127
Graagi 30.925 0
;
proc/ ;
Ejemplos
En el respositorio de github hay dos archivos de ejemplo que pueden ser utilizados para probar la función: el primero que se llama “data.tps” es pequeño (4 especies), el segundo se llama “grande.tps” y contiene 413 especies.  
Adicional se encuentran también los ejemplos de archivos de salida en formato .tnt, de los set de datos anteriormente mencionados: “data.tnt” y “grande.tnt”. De tal manera que podrían contrastar los archivos de resultados que obtengan ustedes con los que están en el repositorio.
Por último se encuentra un script con los pasos para utilizar la función ProcPca2tnt que puede resultar muy útil a la hora de realizar un análisis con datos empíricos: “ProcPca2tnt_script.R”.

El tiempo de ejecución de la función para el archivo “grande.tps” (413 especies, 15 landmarks) es de aproximadamente 1 segundo (s), lo cual indica que la función trabaja bastante bien para sets de datos grandes en un tiempo relativamente corto. 

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Espero que la función les sea de mucha utilidad, que se haya entendido muy bien su funcionalidad y su uso, y que les haya gustado el post. Ojalá pueda escribir muy pronto algunas cosas que quiero compartir y que tengo atrasadas. En épocas de Star Wars: MAY THE CODE BE WITH YOU!
Bye, mano!

Función ProcPca2tnt: construyendo matrices de caracteres continuos (formato TNT) en R, a partir de PCA de landmarks (2D o 3D)

Nota editorial:
Empezaré primero que todo disculpándome por el abandono al que sometí el blog este año. 
La verdad fue un año muy agitado para mi, aunque muy fructífero, puesto que:
  1. Empece a trabajar en docencia.
  2. Logré terminar mi carrera, (si, ya soy Biólogo de la UIS 😀 ).
  3. Publiqué mi primer artículo científico (en co-autoría con mi director de pregrado, Daniel R. Miranda-EsquivelTODOS los análisis se hicieron utilizando R 😀 , y pueden encontrar los scripts y datos en mi cuenta de Github).
  4. Presenté mi primer trabajo en un Meeting de la Willi Hennig Society (en co-autoría con mi director de doctorado, Santiago A. CatalanoALGUNOS de los análisis se hicieron utilizando R 😀 ). (QUIEN DIO LA PRESENTACIÓN EN NUEVA YORK FUE SANTIAGO).
  5. Sometimos con Santiago el trabajo anterior a Zoologica Scripta, y estamos esperando, y cruzando los dedos, para que sea aceptado.
  6. Y finalmente terminé el año con la muy grata noticia de haberme ganado una beca interna del CONICET para irme a San Miguel de Tucumán, a hacer un doctorado en Ciencias Biológicas bajo la estupenda dirección de Santiago Catalano y Pablo Goloboff. De manera que tal parece, ‘R para Chibchombianos’ seguirá, pero ya no será actualizado en Chibchombia, sino en Argentina 😛 .
  7. No está de más recordar que como soy papá desde hace 1 año y casi 5 meses, mi tiempo también se ha visto reducido, aunque mis días se han alegrado mucho con la presencia de la Salo.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –  – – – – – – – – – – –

AHORA SI, A LO QUE VINIMOS! ProcPca2tnt
Introducción

En 2010, tal como lo dije en el post de CARONTE, Catalano y colaboradores implementaron el uso de landmarks en un contexto filogenético utilizando el principio de parsimonia. La nueva versión de TNT es completamente funcional para tratar landmarks directamente:


“La ventaja principal es que las búsquedas pueden hacerse sin necesidad de utilizar scripts en TNT. Además, la nueva implementación a reducido dramáticamente el tiempo de análisis de datos de landmarks (cerca de 20 veces menos para TBR), siendo posible también analizar landmarks bajo algoritmos de “nuevas tecnologías”  (búsquedas sectoriales, ratchet, etc). Otras funciones ahora disponibles para datos de landmarks (solos o en combinación con caracteres tradicionales) son: remuestreo, soporte de Bremer, busquedas bajo ‘constrains’, colapso de ramas. 

Otros cambios adiconales en TNT son:

-Posibilidad para exportar gráficos svg de la optimización de landmarks para cada nodo  (interno o externo).

-Nuevo menu para superimponer configuraciones (versión de windows). Ruta: Data/Edit Data/landmark aligment. 

-Posibilidad para calcular de manera mas precisa el ‘score’ mínimo para cada landmark, muy útil en pesos implicados.

-Posibilidad para calcular la longitud de las ramas como la sumatoria de los cambios en los landmarks sobre cada rama. El árbol con la correspondientes longitudes de ramas puede ser exportado en formato nexus.

-La función “permute” ahora permite la permutación de configuraciones de landmarks entre terminales. Con esta función se facilita el calculo de ‘señal filogenética’ en sets de datos de landmarks (Klingenberg & Gidaszewsky 2010), en este caso, bajo ‘squared change parsimony’. “

Traducido de: Santiago Catalano, Comunicación personal 

Sin embargo, antes de dicha implementación, el uso de caracteres de morfometría geométrica (landmarks) para realizar análisis filogenéticos se hacia de manera indirecta.

Uno de los acercamientos que se han utilizado para ésto, comprende en utilizar los ‘scores’ producto de un análisis de componentes principales de variación de forma (‘PCA of shape variation’), previo alineamiento de las configuraciones de landmarks mediante un Análisis Generalizado de Procrustes (GPA). De manera que cada componente principal es considerado como un caracter continuo diferente, y los ‘scores’ (valores) para cada especie son considerados como los estados del caracter. (ej. González-José et al. 2008)
En 2006, Pablo Goloboff, Camilo Mattoni y Andrés Quinteros, presentaron y discutieron en un paper publicado en Cladistics, la incorporación de algoritmos en TNT para analizar caracteres continuos en un contexto filogenético bajo el criterio de parsimonia, sin discretizar dichos caracteres. De tal modo que los ‘scores’ de los PCA de forma pueden ser tomados como caracteres continuos y analizados en TNT.
No obstante, estos datos deben ser primero generados por fuera de TNT para poderlos analizar; ya que se deben digitalizar los landmarks, alinear las configuraciones de landmarks, realizar el análisis de PCA de forma, tomar los ‘scores’ correspondientes al numero de componentes principales que se deseen utilizar, y escribir el archivo en formato .tnt para poderlo utilizar como archivo de entrada (‘imput’) en TNT. Todo este proceso puede ser tedioso y puede ser necesario utilizar varios programas (desde la digitalización al PCA) para poder generar el archivo de entrada.

ProcPca2tnt
ProcPca2tnt es una función escrita en lenguaje R por Ambrosio Torres (quien les escribe) y Santiago Catalano, que permite tomar un archivo de landmarks en formato .tps, alinear sus configuraciones, realizar un análisis de componentes principales de forma, tomar los ‘scores’ del PCA, y escribir un archivo (formato .tnt) de caracteres continuos para ser analizado en TNT. Cabe recordar que los landmarks también pueden ser digitalizados en R, utilizando el paquete ‘geomorph‘, de tal manera que es posible realizar todo el proceso de generación de datos en R, para luego ser analizados en TNT.
La función necesita que esté instalado el paquete de R ‘geomorph’, escrito por Dean Adams,  Erik Otarola-Castillo y Emma Sherra; además necesita que esté instalada la función ‘implode.R’, y que la versión de R instalada sea  3.2.0.
ProcPca2tnt fue escrita utilizando R 3.2.0, en una distribución Ubuntu 14.04 de 64 bits (x86_64-pc-linux-gnu), bajo licencia GPL 2.
Uso de la función ProcPca2tnt
Una vez hayas descargado la función del repositorio de github (recuerda que la función se llama ‘ProcPca2tnt.R’), solo tienes que cargar el archivo a R o RStudio con el siguiente comando:
>source(‘~Desktop/my_folder/ProcPca2tnt.R’)
>source(“ProcPca2tnt.R”) 
El cuerpo de la función es el siguiente:
>ProcPca2tnt(“data.tps”, cummvar = 0.90)

La función toma dos argumentos que el usuario puede manipular libremente, dependiendo de sus necesidades:
  1. “data.tps” es el nombre del archivo .tps que contiene las configuraciones de landmarks. (de manera que si tu tienes un archivo que se llame “Aves.tps”, cambias en el comando la parte de “data.tps” por “Aves.tps”, así: >ProcPca2tnt(“Aves.tps”, cummvar = 0.90)
  2. El segundo argumento es llamado ‘cummvar’ y se utiliza para que el usuario defina el número de componentes principales (EN ESTE CASO EL NÚMERO DE CARACTERES CONTINUOS QUE VA A UTILIZAR), con base en la cantidad de varianza explicada acumulada que desee utilizar. Por defecto, la función utiliza el 90% (0.90) de la varianza explicada acumulada del PCA, pero éste valor puede ser modificado por el usuario, de tal modo que si desea utilizar el 75% de la varianza explicada acumulada, solo tiene que cambiar en el comando el ‘0.90’ por ‘0.75’, así: >ProcPca2tnt(“data.tps”, cummvar = 0.75)
Si no se va a modificar el parámetro de la varianza explicada acumulada simplemente bastaría ejecutar el comando, indicándole el archivo .tps que debe utilizar:
>ProcPca2tnt(“Aves.tps”)
Finalmente, la función escribirá en nuestro directorio de trabajo un archivo en formato TNT que contenga nuestra matriz de caracteres continuos, llamado “Aves.tnt”, que al abrirlo tendría un aspecto parecido al siguiente:

nstates cont
xread 2 4
Thypld 19.993 43.419
Thyvst 0 65
Ledhal 65 63.127
Graagi 30.925 0
;
proc/ ;
Ejemplos
En el respositorio de github hay dos archivos de ejemplo que pueden ser utilizados para probar la función: el primero que se llama “data.tps” es pequeño (4 especies), el segundo se llama “grande.tps” y contiene 413 especies.  
Adicional se encuentran también los ejemplos de archivos de salida en formato .tnt, de los set de datos anteriormente mencionados: “data.tnt” y “grande.tnt”. De tal manera que podrían contrastar los archivos de resultados que obtengan ustedes con los que están en el repositorio.
Por último se encuentra un script con los pasos para utilizar la función ProcPca2tnt que puede resultar muy útil a la hora de realizar un análisis con datos empíricos: “ProcPca2tnt_script.R”.

El tiempo de ejecución de la función para el archivo “grande.tps” (413 especies, 15 landmarks) es de aproximadamente 1 segundo (s), lo cual indica que la función trabaja bastante bien para sets de datos grandes en un tiempo relativamente corto. 

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Espero que la función les sea de mucha utilidad, que se haya entendido muy bien su funcionalidad y su uso, y que les haya gustado el post. Ojalá pueda escribir muy pronto algunas cosas que quiero compartir y que tengo atrasadas. En épocas de Star Wars: MAY THE CODE BE WITH YOU!
Bye, mano!

Estadística exploratoria de la primera fase del mundial Brasil-2014 y SISTEMA DE GRÁFICOS BASE DE R (PARTE 1)

SE VIENEN LOS OCTAVOS DE FINAL DE LA COPA DEL MUNDO, BRASIL-2014; YA SE CONOCEN LOS 16 EQUIPOS CLASIFICADOS, PERO…..

CÓMO FUE SU RENDIMIENTO EN LA PRIMER FASE?

QUIEN HIZO MÁS GOLES? A QUIEN LE HICIERON MÁS GOLES?
QUIEN HIZO MÁS FALTAS? QUIEN MUERDE MÁS?

Entonces, con el fin de responder estas y otras preguntas, R para Chibchombianos vuelve con este nuevo post cargado de sed de goles y contento con la selección Chibchombia…
Aprovechando en esta ocasión los datos que brinda el mundial para, explicar los fundamentos de funcionamiento del SISTEMA DE GRÁFICOS BASE DE R.

En esta parte (parte 1) mostraré de los gráficos obtenidos usando el sistema base de R, utilizando los datos proporcionados por Google acerca de los equipos que clasificaron a octavos de final.
En la parte número 2 (siguiente post) explicaré como realizar los gráficos aquí mostrados con R y los parámetros básicos de gráficas en R.
(NOTA: por tal motivo no se afanen o se alarmen por el uso indiscriminado de colores ya que he utilizado diferentes colores y diferentes tipos de gráficos, olvidándome del “estilo correcto” de presentación de datos, en beneficio de explicar como cambiar parámetros de los gráficos en R)

A continuación como quedan las llaves (pueden hacer sus predicciones, al final de este post presento mi predicción INTUITIVA con base a los gráficos obtenidos y un poquito de amor a la camiseta):

Fuente: Google

1. EFECTIVIDAD DE LOS PAÍSES CLASIFICADOS (ANOTACIONES, GOLAZOS!):


En el gráfico se puede que, las tres selecciones con mayor número de goles anotados en la primera fase del mundial son Holanda, Colombia y Francia, con 10, 9 y 8 goles respectivamente, seguidas por Alemania, Suiza y Brasil, todas con 7 goles. Los equipos que menos anotaciones han convertido son Grecia y Nigeria, con 2 y 3 goles, respectivamente.

En cuanto a goles en contra se puede observar que Suiza y Argelia, son los equipos que más goles han recibido, con 6 y 5 goles respectivamente; seguidos por Estados Unidos, Uruguay y Grecia, con 4 goles. Por otra parte, los equipos que menos goles han recibido son Bélgica, Costa Rica y México (el arquero de México es tremendo), que solo recibieron un gol; mientras que Brasil, Colombia, Francia y Alemania recibieron 2 tantos.

Ahora bien, los goles a favor y en contra muestran la efectividad de sus delanteros y por otro lado las proezas de las defensas y los arqueros (sin tener en cuenta otro tipo de variables y condiciones), pero entonces para medir el equipo en su totalidad se utiliza la diferencia de goles (goles a favor – goles en contra = diferencia de goles), para la primera fase del mundial tenemos que, aunque Holanda haya anotado 1 tanto más que Colombia, también recibió un gol más, lo cual hace que sean los dos equipos con mejor rendimiento con una diferencia de goles de +7, seguidos de Francia con +6 y de Brasil y Alemania con +5. El caso de Grecia es único, se clasifico con una diferencia de goles de -2 “dejando pelo en el alambre”, en mi concepto tuvieron un poco de suerte, pero habría que ver si les funciona con esta Costa Rica que viene a “matar y comer del muerto”;

Finalmente, Estados Unidos, Nigeria y Uruguay, se clasificaron con una diferencia de goles de 0.


2. ATAQUE DE LOS PAÍSES CLASIFICADOS A TRAVÉS DE LOS PARTIDOS DE LA PRIMERA FASE:



Brasil es un equipo que siempre trata de mantener el mismo ritmo en todo el partido y durante todos los tres partidos de la primera fase se mantuvo con el balón mucho más tiempo que su rival (>50% de posesión del balón en los 3 partidos); del mismo modo Colombia y Costa Rica, aunque no mantuvieron la mayor cantidad de tiempo el balón que sus rivales (~45% de posesión del balón), son equipos que dejan jugar, mantienen un ritmo constante y son INFALIBLES Y LETALES EN EL CONTRAGOLPE y la generación de opciones de gol, en especial Colombia que tiene la mayor efectividad junto con Holanda, en todo el campeonato. Estos tres equipos, son equipos calientes, que en el segundo tiempo a pulmón definen partidos y soportan humedades y calor de ollas de presión. Con respecto a la posesión del balón, los equipos que más tratan de mantener el balón y de atacar (así no hayan sido tan efectivos, como en el caso de Argentina, exceptuando a Messi), son Argentina, Chile (aunque varía mucho de un partido a otro, es decir, en unos partidos atacaba más que otros), Francia (con gran variación también entre los partidos) y Alemania (que es una máquina de atacar); mientras que los equipos que menos tienen el balón son Estados Unidos, Argelia, y Grecia (aunque este tiene variación entre partidos).

Con respecto a remates y remates directos al arco Francia es la campeona en ataque, los delanteros prueban mucho la media distancia, y la mayoría de balones van directo a la portería, se conviertan en gol o no. Francia es un inquietador con remates y puede verse claramente que así se ha comportado en todos los partidos y supera a los demás equipos considerablemente; del mismo modo Suiza, Argentina y Brasil prueban mucho el arco contrario, aunque varían en comportamiento de un rival a otro. Los equipos que menos prueban la media distancia y rematan al arco son Argelia, Estados Unidos, Chile, Costa Rica y México, aunque los tres primeros varían mucho de un partido al otro. Los tiros de esquina para Argentina son un reflejo de su baja definición, supera a los demás países con un margen muy amplio, pero también es evidente que intentan e intentan y por alguna razón no convierten tanto como quisieran; por otra parte, Brasil y Francia son los siguientes que más han cobrado tiros de esquina en el mundial.

3. ATAQUE TOTAL DE LOS PAÍSES CLASIFICADOS A OCTAVOS EN LA PRIMERA FASE:


Con respecto a la totalidad de ataques y posesión del balón promedio en los tres partidos que ha jugado cada seleccionado se puede evidenciar lo siguiente:
Francia remata MUCHO MÁS que la mayoría de los equipos, Seguido por Suiza, Argentina, Brasil y Belgica, mientras que Chile es el equipo que menos remata, seguido de Costa Rica, USA y Argelia. Este mismo comportamiento puede observarse en los remates que van directo al arco, y se puede ver que Colombia, Holanda y Alemania tienen una cantidad de remates al arco similar, pero que a la hora de rematar o definir es muy difícil que no conviertan un gol, quizá porque los remates de media distancia no son su fuerte como es el caso de Messi (Argentina) sino el juego colectivo.
En cuanto a tiros de esquina totales se observan los mismos resultados que el numeral anterior y con respecto a la posesión del balón puede observarse que los equipos que más mantienen el balón a sus pies son Argentina, Chile, Alemania, Francia, Bélgica y Brasil, mientras que los demás equipos tienen posesión de balón similares.

4. RENDIMIENTO EN LA PRIMERA FASE DE LOS PAÍSES CLASIFICADOS A OCTAVOS DE FINAL:



Primero que todo se puede observar que ningún equipo de los clasificados perdió más de 1 partido (Argelia, USA, Nigeria, Suiza, Uruguay, Grecia y Chile perdieron de a un partido en la fase de grupos), y que ninguno empato más de 1 partido en la fase de grupos (Argelia, USA, Alemania, Nigeria, Francia, Costa Rica, Grecia, México y Brasil empataron de a 1 partido en la fase de grupos).

Por otra parte se puede observar que el patron mínimo de rendimiento para que un equipo pase a la segunda fase del mundial es 1 empate, 1 derrota y 1 victoria (Argelia, USA, Nigeria y Grecia cumplieron con este patrón al cual también quería acceder Portugal pero no le alcanzo, y son los 4 equipos con el peor rendimiento de los 16 clasificados a la segunda fase cada uno con 4 puntos y con rivales difíciles por delante).

Por otra parte los 4 equipos con mejor rendimiento en la fase de grupos que lograron 9 puntos de 9 son Colombia, Holanda (estos dos con mayor diferencia de goles), Argentina y Bélgica. 




5. TARJETAS Y JUEGO SUCIO:



Se puede observar que el equipo con menos faltas cometidas y menos tarjetas (1 tarjeta amarilla y 24 faltas) recibidas en lo que va del Mundial es Argentina, y su buen comportamiento se ha mantenido constante en los tres partidos jugados. Al seleccionado Argentino le siguen en muestra de Fair Play y buen comportamiento las selecciones de Alemania, Suiza y Francia; que también se mantienen constantes aunque Francia varia un poco. 

Las selecciones que más han variado en comportamiento con el trascurrir de los partidos son Holanda, Brasil y Bélgica (Colombia también varia un poco pero en menor medida).

Por otra parte las selecciones que más han cometido faltas en lo que va del mundial son Costa Rica, Uruguay, Holanda, Argelia, Colombia, Grecia y Bélgica en ese orden.
La gravedad de las faltas puede ser medida también por el número de tarjetas amarillas y rojas obtenidas en los primeros tres partidos, en este sentido, los equipos que se ganaron más tarjetas amarillas son Uruguay (6), Grecia (6), México (5), Argelia (5), Bélgica (4), Francia (4), Chile (4), Brasil (4).

Mientras que Holanda, a pesar de cometer tantas faltas, solo tiene 3 tarjetas amarillas y Colombia y Costa Rica 2 cada una. 
Con respecto a las tarjetas rojas, solo 2 de los equipos clasificados obtuvieron cada uno una tarjeta roja, Uruguay y Bélgica. 
TENIENDO EN CUENTA QUE URUGUAY TIENE EL MAYOR NÚMERO DE TARJETAS AMARILLAS, TIENE UNA TARJETA ROJA, Y ES EL SEGUNDO EQUIPO QUE HA COMETIDO MÁS FALTAS, ESTA CLARO QUE DE LOS EQUIPOS CLASIFICADOS URUGUAY ES EL EQUIPO MÁS SUCIO O “PUERCO” PARA JUGAR. (sin mencionar a Luis “mordelon” Suarez quien fue suspendido por un comportamiento que no tiene presentación).
Nota: independientemente de que a Uruguay le toque jugar en octavos contra Colombia, en mi opinión la sanción a Suarez es justa, lo que hizo no tiene forma de ser aceptado.
Y advierto que gane o pierda Colombia, nuestra selección es UN EQUIPO!
Y no por el hecho de que Radamel Falcao García no este jugando, estamos anticipando, pronosticando o justificando nuestras derrotas, así Falcao sea una pieza clave en nuestra cuadrilla! Así que Uruguay tiene que responder sin Suarez como Francia responde sin Ribery o Colombia sin Falcao (AUN MÁS PORQUE EL SE HIZO SACAR DEL MUNDIAL Y NO FUE POR LESIÓN). Y ganemos o perdamos no se justificara por la presencia de Falcao o la ausencia de Suarez.

6. QUIEN ES EL MÁS “MORDELON”?:

“Obviamente sho soy el ma’ mordelon” Luis Suarez 

######################################################################
######################################################################
######################################################################

LES DEJO MI APUESTA/PREDICCIÓN DE COMO RESULTARÁ EL MUNDIAL…
espero que hayan disfrutado este post y para la próxima (parte 2), les compartiré como se hacen los gráficos que les presente, el código, scripts, datos, parámetros y fundamentos del sistema de gráficos base de R. 

HASTA LA VISTA Y “QUE VIVA CHIBCHOMBIA, MI PATRIA QUERIDA, CON AGUARDIENTE ‘MAGUILA'”