Open data y twitter fuentes de datos al publico

En las publicaciones anteriores que he venido realizando trabajo con algunas de las fuentes más importantes para diferentes estudios como las redes sociales, ya sea para análisis de comportamientos en ambientes políticos como también  los seguidores de algún candidato se perfilan de acuerdo con alguna corriente política.

En este caso se exploró una fuente de datos nueva, como lo es el open data (datos abiertos), que para nuestro caso es los datos abiertos del gobierno colombiano,  el cual pueden acceder en el siguiente link; https://www.datos.gov.co/.

Esta fuente de datos, es un impulso del gobierno colombiano para que las personas estén informadas con cifras oficiales y puedan de alguna forma ser partícipes de encontrar en esta fuente de dato, una nueva forma de analizar las cifras o tener un criterio con datos para refutar cualquier cifra oficial sea de periódicos, entidades del gobierno o cualquier sistema de información. Además como una tarea de ciudadanía se puede plantear soluciones a problemas sociales con fuentes de datos oficiales.

En este caso nombré twitter, porque se va realizar un análisis de las dos fuentes de datos en un ejercicio muy particular, que consiste:

  • Descargar los tweets de “@SismosColombia”, el cual es un robot que tuitea los sismos en Colombia de una página oficial.
  • Descargar de la página de datos abiertos del gobierno los sismos registrados del 2015.

Fuente: “https://www.datos.gov.co/Minas-y-Energ-a/Reporte-de-Sismicidad-del-Servicio-Geol-gico-Colom/c6z5-qfp4”

  • Realizar un mapa para graficar zonas alta intensidad de reportes de sismos de ambas fuentes.

En el siguiente ejercicio se usó los siguientes paquetes de R: leaflet ,leaflet.extras, ggmap, tidytext, tidyverse, twitteR, plyr y tm.

El trabajo de obtener las coordenadas de los puntos geográficos de cada tweet de  @SismosColombia”, se realiza por el contenido del texto del tweet, por ejemplo:

“Sismo de 2.8 Mw a 9 km de Los Santos Santander https://t.co/zD7wWwZMfA

  1. Se obtiene los valores del tweet en una lista, mediante el siguiente código: values<-unlist(str_split(pattern = “,”,string = text))
  2. Se obtiene la magnitud del tweet:
  3. mag<-str_extract(string=values[1],pattern =”[0-9]\\.[0-9]” )
  4. Se crea la variable ciudad para obtener el nombre del municipo y departamento:ciudad<-gsub(“.*\\sde “,””,values[1])
  5. Se limpia el tweet sin la url, para dejar en un solo campo las el municipio y departamento: municipio_departamento<-gsub(“\\<https.*”,””,ciudad)
  6. Se crea un nombre país, pais<-“Colombia”
  7. Se crea una variable dirección para tener el nombre del sitio donde ocurrio el reporte, dirección<-str_c(municipio_departamento,pais,sep = “,”)

Con el paquete ggmap y la función geocode, se pueden obtener las coordenadas longitud y latitud, con los nombres. Se debe tener en cuenta que este paquete se puede trabajar hasta 2500 mil consultas al día, ya que es una restricción que tiene la Api de google en sus peticiones.

Teniendo las coordenadas de los reportes de los tweets y la tabla de la fuente de los datos abiertos que ya tienen la coordenadas, se obtienen los siguientes plots:

Reporte de sismos en el 2015 Datos Abiertos

mapdatos abiertos

mapclusterabiertos

Reporte de sismos en “@SismosColombia

heapmaptwet.png

tweetsmapcluster.png

Vemos que la distribución de los sismos en el mapa por medio de twitter es similar a los reportados por datos abiertos, en este caso el centro del país presenta mayor cantidad de sucesos reportados en ambos sistemas.

la idea principal de este escrito es analizar las diferentes fuentes de información que pueden usar para analizar en diferentes campos sea de la ciencia o entender fenómenos sociales que pueden ayudar a la comunidad.

Espero que les guste

 

 

 

Anuncios

Análisis de Sentimientos De los candidatos Presidenciales en Colombia segunda vuelta 2018

En este post se trabajará el análisis de sentimientos usando R y el léxico Affin, de 10.000 mil tweets de cada candidato presidencial. Ademas de las comunidades de cada candidato en esta red social.

El léxico Afinn es un conjunto de palabras, puntuadas de acuerdo a qué tan positivamente o negativamente son percibidas. Las palabras que son percibidas de manera positiva tienen puntuaciones de -4 a -1; y las positivas de 1 a 4. La versión que se usó esta presente en el conjunto de datos sentiments de la libreria tidytext, traducidas de ingles a español.

Análisis 

  • palabras positivas y negativas

positiva1negativa1.png

Al analizar las palabras positivas y negativas, se puede ver que los tweets están marcados por unas palabras que básicamente definen algo de intensión en sus campañas. Lo que se puede resaltar es que el candidato Ivan Duque tiene muchos tweets donde las palabras positivas son mas diversas que en los tweets del candidato gustavo petro ,algo curioso pasa con la palabra “paz”, la cual es fundamental en los tweets del candidato petro caso contrario del candidato duque. Al calcular la correlación de esta palabra, el candidato Duque tiene una correlación mayor 0.2 con la palabra “modificaciónes”, pero el candidato gustavo petro tiene una correlación mayor al 0.3 con la palabra “luchar”. Esto quiere decir que a pesar que es una palabra que el léxico propone como positiva, el contexto de cada uno es contrario para los intereses políticos.

  • Barplot,Boxplot y density plot 

sentimientos.png

boxplotdistribucion

La puntuación en este léxico se define como positiva si es mayor que cero y negativa si es menor que cero, al analizar los tweets vemos que las densidades de ambos candidatos en palabras clasificadas como negativas son uniformes, mientras que para las palabras positivas vemos que los tweets del candidato ivan duque tienen mayor densidad.

  • Comunidades de los candidatos

redtwiiter.png

en este caso el candidato ivan duque tiene un peso en la comunidad analizada aproximadamente del 25%, mientras que el candidato petro del 13%. Cabe resaltar que la comunidad del candidato gustavo petro se compone de comunidades pequeñas que tienen muchos seguidores. Esto se debe a el apoyo de algunas actores o personas que están ayudando al candidato. Caso contrario del candidato van duque donde su comunidad no es tan influenciada, solo por el economista ricardo hausmann, gran critico del gobierno de Venezuela.

Saquen sus propias conclusiones

Tendencias presidenciales en Colombia de los pre-candidatos en Facebook

Las redes sociales son un buen insumo de información a la hora de analizar opiniones en diferentes ángulos. En este caso se utilizará la información de los precandidatos presidenciales para las elecciones del 2018 en Colombia, con el objetivo de analizar algunas tendencias que se tienen de los candidatos en esta red social.

La información es tomada mediante el software R de todos los post de lo que va trascurrido el año 2017, de algunos pre-candidatos y comparar las encuestas de este año.

Rplot

En el grafico vemos una gran presencia en las redes de robledo,fajardo,Claudia lopez ,clara lopez,martha lucia y ordez, ya que son los que mayor post han tenido en la redes.

Miremos ahora las tendencias en el tiempo de las reacciones “positivas” de los pre-candidatos.

rposi-4

Los 4 pre-candidatos que tienen mayor post publicados tienen tendencias positivas en las reacciones positivas, mientras que Clara Lopez viene con una tendencia negativa. Aunque se debe tener en cuenta que los conteos fueron transformados bajo una transformación log, para tener un gráfico mejor a la hora de comparar.

rposi-5

En los otros 5 pre-candidatos, vemos que son muy estables las tendencias  a pesar de que Petro supera los otros candidatos, no es contundente  su tendencia parece ser estable.

Ahora miremos las reacciones negativas de los pre-candidatos.

rnega-4

Claudia lopez y Robledo a pesar de que genera tendencia positiva en sus reacciones positivas, vemos que también genera tendencia positiva en las reacciones negativas, contrario a el pre-candidato fajardo que la tendencia es negativa en sus reacciones negativas.

rnega-5

En este caso es contundente que Vargas lleras, desde abril la tendencia positiva está muy marcada en la reacción de enojo, mientras que Petro tendencia negativa. Ordoñez en un pre-candidato que genera también mucho enojo en las personas es sus post.

Ahora miremos un contraste de reacciones(Amor y enojo).

contra-4

En el gráfico de contraste se ve que fajardo tiene siempre valores mayores que 0, esto quiere decir que supera el amor al enojo en sus post publicados, Claudia Lopez solo tiene un pico y a pesar que siempre es positivo, no es tan marcado como el de Sergio Fajardo.

contra5

En este grupo vemos que Humberto provoca un contraste muy positivo, mientras que Petro es más volátil, mientras que Vargas lleras siempre es negativo, parece ser que las personas en Facebook no creen mucho en su campaña.

Vemos que los post de los pre-candidatos generan muchas reacciones, ahora miremos las interacciones de las personas por cada uno de los pre-candidatos.

Rplot01

Vemos a Claudia Lopez punteando con Petro, donde fajardo no se queda atrás. Ordoñez sorprende porque a pesar que no postea mucho genera mucha interacción, es un personaje muy polémico.

Algo que se debe tener en cuenta es el género que interactúan con los pre-candidatos, miremos la participación.

genero

Sorprende Humberto de la calle donde la mayor participación de interacción de usuarios del género femenino con un 43%, es lógico que las interacciones de las pre-candidatas tengan un porcentaje mayor en el género femenino. Parece que robledo y Petro no generan mucho interés en las mujeres con sus post.

En lo que va del 2017, los pre-candidatos generan mucha polémica en Facebook pero cabe resaltar que existen algunos que generan mejores reacciones unos que otros en las personas.

Espero que cada uno saque sus propias conclusiones

 

 

 

 

“Infeliz es el que asume la carga de una deuda cuyo valor no puede ser medido por los medios sencillos de su propia inteligencia.”

El problema de trigo y el ajedrez aparece en diferentes historias sobre la invención del ajedrez.El registro más antiguo del escrito está contenido en el Shahnameh, un poema épico escrito por el poeta persa Ferdowsi entre c. 977 y 1010 la CE. Otra versión cuenta que el inventor del ajedrez fue Lahur Sessa  para el rey Iadava. El rey estaba muy satisfecho con el juego y dijo a Lahur “Pídeme lo que quieras y te lo daré inmediatamente.”

Lahur pidió al rey que colocar un grano de arroz en la primera casilla de un tablero de ajedrez, dos en el siguiente cuadrado, cuatro en la tercera plaza y así sucesivamente hasta que se llena el tablero. Al escuchar tal petición humilde Iadava comenzó a reír sin parar.Después de un tiempo, ordenó que se le daría lo que había solicitado. Pasado el tiempo Matemáticos  muy confusos vinieron al rey para decirle que era imposible dar cabida a esa petición. La cantidad de trigo era tan grande que todo el trigo de su reino no era suficiente para pagar lo que había prometido al creador del juego Lahur Sessa. Esta es la cantidad de  trigo después de llegar al ultimo cuadro: 18.446.744.073.709.551.615 y bajo el supuesto que 25 granos de trigo es un gramo , el último campo contendrá más de 461,168,602,000 toneladas de trigo.

Definición del Problema 16 de Euler.

La historia mencionada nos transporta al problema 16 de Euler donde se define a continuación:

2 ^ {15} = 32,768  y la suma de sus dígitos es 3 + 2 + 7 + 6 + 8 = 26 . ¿Cuál es la suma de los dígitos del número 2 ^ {1000} ?

Solución

La solución más sencilla es utilizar el lenguaje R con el paquete GMP  para realizar grandes cálculos de números enteros. en este caso la funcion as.bigz contenida en el paquete es una clase especial que ayuda a calcular grandes cantidades de números enteros. La solución es la siguiente:

##instalar paquete de R
install.packages(“gmp”)
library(gmp)
# 2 a la potencia 1000

digitos<- as.bigz(2^1000) # Definir numero
# Suma todos los dígitos
respuesta <- sum(as.numeric(unlist(strsplit(as.character(digitos), “”))))
print(respuesta)

Otra solucion al problema anterior es mediante la funcion suma.grande, que utiliza como principio que un numero a la potencia se puede escribir como una serie de sumas, de la siguiente forma:

2^4= 2 x 2 x 2 x 2 = ((2+2)+(2+2)+(2+2)+(2+2))

la funcion suma.grande se define en R:

# suma de números de muchos digitos

Suma.grande <- function(a, b) {
if (nchar(a) < nchar(b))
a <- paste0(paste(rep(0, nchar(b) – nchar(a)), collapse = “”), a)
if (nchar(a) > nchar(b))
b <- paste0(paste(rep(0, nchar(a) – nchar(b)), collapse = “”), b)
solution <- vector()
remainder <- 0
for (i in nchar(b):1) {
p <- as.numeric(substr(a, i, i))
q <- as.numeric(substr(b, i, i))
r <- p + q + remainder
if (r >= 10 & i!=1) {
solution <- c(solution, r %% 10)
remainder <- (r – (r %% 10))/10
} else {
solution <- c(solution, r)
remainder <- 0
}
}
return(paste(rev(solution), collapse = “”))
}

La solución a este problema es sumar 2+2 y sumar el resultado de esa operación por si mismo repitiéndolo sucesivamente. En este caso 1000 veces, en R sera:

# 2 a la potencia 1000
base <- 2
for (i in 2:1000)
base<- Suma.grande(base, base)
# sumar todos los digitos
respuesta <- sum(as.numeric(unlist(strsplit(base, “”))))
print(respuesta)

 

Espero que les guste!

El Hombre que Calculaba

El hombre que calculaba, es un libro de gran interés que trata historias matemáticas, del escritor brasilero Julio Cesar de Mello e Souza(publicada bajo el seudónimo de Malba Tahan).

En el capitulo V, “In so many words”, Malba describe un simple problema algebraico  de proporciones entre el precio por hospedaje ofrecido y el precio por joya vendida. El cual dice:

“Ese hombre, y señaló al joyero, vino desde Siria a vender joyas en Bagdad, prometiéndome pagar por el hospedaje veinte dracmas si vendía las joyas por 100 dracmas, pagando 35 si las vendía por 200.  Al cabo de varios días de ir y venir de aquí para allá, vendió todo en 140 dracmas. ¿Cuánto debe pagar, en consecuencia, ateniéndose a lo convenido, por concepto de hospedaje? “.

Cada uno joyero y dueño de hospedería calcula  el resultado resolviendo un problema de proporción porcentual, tanto que termina con resultados erróneos.El problema es resuelto de la siguiente manera:

1- Proporción que planteó el mercader de joyas:

200 : 35 = 140 : x

x = (35 x 140) / 200 = 24,5

2-Proporción que planteó el dueño de la hospedería:

100 : 20 = 140 : x

x = (20 x 140) / 100 = 28

 Ambos personajes terminan su argumento, pero en el libro el calculista recién llegado explica la siguiente solución:

3- Calculista

                               Precio de Venta                 Precio Hospedaje

                                     200                                               35

                                     100                                                20

Diferencia                 100                                                15

“- Ahora –prosiguió el calculista-, si un acrecentamiento de 100 en la venta produce un aumento de 15 en el hospedaje, un acrecentamiento de 40 (que es los dos quintos de 100) debe producir un aumento de 6 (que es los dos quintos de 15) a favor del posadero. El pago que corresponde a los 140 dracmas es, pues, 20 más 6, o sea, 26. “

Proporción que planteó el calculista:

100 : 15 = 40 : x

El valor de x es 6

Matemáticamente hablando, el problema es muy interesante pero también se puede resolver mediante un planteamiento de regresión lineal, ya que los dos pares de puntos [200, 35] y [100, 20] forman una función de predicción lineal y que se necesita para predecir cuál sería el precio del alojamiento , cuando el precio de venta para la joya es 140.

Para resolver el problema se plantea la siguiente solución en R:

joyas <- c (100, 200)
hospedaje <- c (20, 35)

# regresión
hospedaje_modelo <- lm (hospedaje ~ joyas)

plot (x = joyas, y = hospedaje)
abline (lm (hospedaje ~ joyas))

Rplot01

prediccion_dato <- data.frame(joyas=140)
hospedaje_prediccion <- predict(hospedaje_modelo, prediccion_dato ,interval=”predict”)

#nuevo valor cuando la joya=140
hospedaje_prediccion [1]

El resultado es 26 , que es estrictamente algebraica y hablando de la predicción realizada es correcta.

En este caso, la regresión hace el mismo calculo que la proporción, pero lo mas interesante es cual calculo (no matemáticamente hablando), tiene mas sentido?, 26,24 o 28? y cual método para el siguiente precio de hospedaje puede satisfacer tanto al joyero como el dueño de la hospedería.

Espero que les guste!!

 

Data Applied

En muchas situaciones del trabajo o de la vida cotidiana se observan fenómenos que producen información, y qué más que nuestro cuerpo humano emitiendo cantidad de datos con nuestros movimientos u órdenes, que nuestro cerebro está dando para cada acción. Hoy en día las redes sociales conectan el mundo; donde cada persona es un ser diferente que emite información valiosa de sus creencias, cultura, costumbres y formas de expresar en cualquier momento lo que desea. Es así que se puede analizar todos estos millones de datos para encontrar de forma cuantitativa, focos de comportamientos que expresen una idea que es difícil percibir en texto, una foto o diferentes lenguajes de expresión. Con el objetivo de aprender como analizar un dato para que de alguna forma hable y exprese una realidad se crea este blog, que ayudará a proporcionar herramientas de análisis datos en lenguaje R.