Extracción y selección de variables

Es en el proceso de Feature engineering, donde se extraen o se seleccionan variables de un conjunto de datos de espacio p-dimensional ,en el cual cada dimensión es una variable. Es muy frecuente, que en un conjunto de datos de alta dimensión donde p es muy grande, algunas variables no son importantes, y la alta dimensionalidad afecta la clasificación(Modelamiento de dos clases, machine learning supervised), de la siguiente manera:

  1.  El error de los métodos basados en distancias (k-NN) aumenta exponencialmente con p.
  2.  El error de los clasificadores lineales aumenta linealmente con p.
  3. Entonces es muy importante mantener p tan bajo como sea posible:

-Reducción de la dimensionalidad

Reducir la dimensionalidad de p variables de un conjunto de datos se define en dos enfoques:

  1. Extracción de variables
  2. Selección de variables

Preguntas:

  1. ¿Cuáles variables se pueden eliminar de manera segura?
  2. ¿Cuál es el mejor subconjunto de variables a mantener?

Se puede usar la reducción de la dimensionalidad para:

  1. Tener un conjunto reducido de variables que entregue algoritmos más rápidos y los parámetros sean más fáciles de estimar. Nota: La alta dimensionalidad en p implica que descartar información puede en realidad mejorar los resultados !
  2. Explicar cuales variables son útiles y cuáles no (reducción de redundancia).
  3. Visualizar datos y diseñar sistemas de reconocimiento de patrones.
  4. Mejora la precisión de un modelo si se elige el subconjunto correcto.
  5. Reduce el sobreajuste.

En la siguiente figura, se define la selección y extracción de variables de un conjunto de datos:

En la figura izquierda, se define la extracción de variables donde se tiene que mapear p variables, en d variables de salida. En la figura de la derecha , la selección de variables, donde se selecciona d variables de p variables.

En ciertas ocasiones no se percibe con gran facilidad la diferencia, pero ahora vamos analizar cual es la gran ventaja y las diferencias entre las dos.

Al analizar un conjunto de datos en el cual se quiere garantizar la separabilidad de las clases, la línea roja representa una extracción de variables en la cual se reduce la dimensionalidad en dos ejes, pero el criterio es subóptimo. Esto quiere decir, que una técnica de extracción de variables, como por ejemplo el análisis de componentes principales(ACP), ayudará a reducir la dimensión de p variables en dos factores, pero como el criterio no es la clasificación de las clases no garantizará la separabilidad y se perderá algunas direcciones en los factores que son importantes.  La ventaja que tiene la extracción de variables es que es barata computacionalmente, pero una desventaja que se puede observar es el traslape en la distribución de las clases, verde y azul cuando se obtiene la extracción de variables, es así que se habla de un criterio subóptimo en la extracción de variables. Por otro lado, la linea azul representa la selección de variables, a pesar que la representación grafica no divide la nube de puntos verde y azul, podemos observar que el traslape comparando las distribuciones de frecuencia de las clases ,es mucho menor que aplicando la extracción de variables. La desventaja de utilizar la selección de variables es el costo computacional que representa, pero es de fácil interpretación. Este costo computacional, se define de la siguiente forma:

¿ Cuál sería el enfoque más directo para resolver el problema de selección de variables?.

R/ Examinar todos los posibles subconjuntos de la combinación de p y d seleccionando el subconjunto con el mayor valor de J, donde J es la función del criterio de selección de variables para el conjunto X.

Asumamos que un MAYOR valor de J indica un mejor subconjunto de variables, una selección natural de la función criterio es JPe, donde Pe es el error de clasificación.

¿ Cuál es la desventaja de este enfoque?

R/ El numero de subconjuntos posibles crece de manera combinatoria
Ejemplo: p=50

  1. d=2: 1225 subconjuntos
  2. d=5: 2.1×10^6 subconjuntos
  3. d=25: 1.3×10^14 subconjuntos

Ninguna búsqueda secuencial no exhaustiva garantiza un subconjunto óptimo de variables

Pensemos en la selección y extracción como un mapeo y para cada x y para ambos necesitamos:

  • Una función criterio: un modelo de lo que hace a un mapeo bueno:
    ej: error, traslape de clases, pérdida de información.
  • Un algoritmo de búsqueda: un método para encontrar un mapeo
    dado el criterio, ej: escoger la mejor  única variable cada vez.

En conclusión ya sabemos cual es la diferencia entre extracción de variables y selección de variables, además de sus ventajas y desventajas. En el siguiente blog se hablará del proceso que se debe tener en cuenta para la selección de variables en problemas de clasificación, pero debemos saber que la selección de variables en el proceso de la construcción de un clasificador, se debe hacer antes de introducir los datos para el entrenamiento del modelo.  Principalmente cuando se utiliza métodos de estimación de precisión como la validación cruzada . Esto asegura que la selección de variables se realice en el conjunto de datos antes de entrenar un clasificador. Si se realiza la selección de variables primero para preparar sus datos, y luego se realiza la selección del modelo y el entrenamiento con las variables seleccionadas, entonces sería un error.

Si realiza la selección de variables en todos los datos y luego realiza una validación cruzada, los datos de test en cada fold del procedimiento de validación cruzada también se usaron para elegir las variables, y esto tiende a sesgar el rendimiento de su clasificador.

El material fue tomado del curso reconocimiento de patrones, dictado por el profesor Hernán Dario Benítez.

 

 

 

 

 

 

Paradoja de Simpson

En tiempos de pandemia, pronósticos y furor por la “ciencia de datos”, existe muchos predicadores de esta gran “ciencia” que hoy en día esta cambiando el mundo y las organizaciones. Algunos de estos grandes pensadores contemporáneos , se han dado la tarea hasta de hablar de causalidades que son un poco cuestionables.Por ejemplo, esta frase de un diario refiriéndose al COVID19, “La calvicie es un predictor perfecto de la severidad de la enfermedad”, ver enlace (Estudio).

Este tipo de información que lleva de algún u otro modo a extraer esta clase de conclusiones a partir de datos,  nos demuestra  que debemos tener mucho cuidado con el análisis y las métricas que se calculan. Un análisis entre los efectos correlativos de dos variables, nos puede llevar a cometer errores interpretativos.

Con esta premisa, cito la paradoja de Simpson o efecto Yule-Simpson es una paradoja en la cual una tendencia que aparece en varios grupos de datos desaparece cuando estos grupos se combinan y en su lugar aparece la tendencia contraria para los datos agregados (Paradoja).

Estos efectos son muy frecuentes en estudios de medicina, ya que los pacientes sino son tratados como un efecto aleatorio se puede perder el  resultado de una matriz de varianzas y covarianzas que cambia presentando efectos de correlación entre variables y  componentes de varianza diferentes.

En el siguiente ejemplo, se simulan datos con una distribución normal multivariada con los siguientes parámetros y las salidas gráficas, en R:

library(tidyverse)
library(dslabs)

N <- 100
Sigma <- matrix(c(1,0.75,0.75, 1), 2, 2)*1.5
means <- list(c(11,3), c(9,5), c(7,7), c(5,9), c(3,11))

dat <- lapply(means, function(mu)
MASS::mvrnorm(N, mu, Sigma))

dat <-Reduce(rbind, dat)

dat <- tibble::as.tibble(dat) %>% dplyr::mutate(Z = as.character(rep(seq_along(means), each = N)))

names(dat) <- c(“X”, “Y”, “Z”)

dat %>% ggplot(aes(X,Y)) + geom_point(alpha = .5) +
ggtitle(paste(“correlacion = “, round(cor(dat$X, dat$Y), 2))) +
geom_smooth(method=lm, se = FALSE)

means <- tibble::as.tibble(Reduce(rbind, means)) %>% setNames(c(“x”,”y”)) %>%
mutate(z = as.character(seq_along(means)))

corrs <- dat %>% group_by(Z) %>% summarize(cor = cor(X,Y)) %>% .$cor

p <- dat %>% ggplot(aes(X, Y, color = Z)) +
geom_point(show.legend = FALSE, alpha = 0.5) +
ggtitle(paste(“correlaciones =”, paste(signif(corrs,2), collapse=” “)))+
geom_smooth(method=lm, se = FALSE)
p

p + annotate(“text”, x = means$x, y = means$y,
label = paste(“Z=”, means$z), cex = 5)

ezgif.com-apng-to-gif

En la representación gráfica se muestra  una correlación negativa de X y Y en general, pero al comparar los datos bajo efectos combinados, se puede ver correlaciones positivas y ademas con diferentes componentes de variabilidad  entre los grupos. Estos comportamientos, se suelen dar cuando se aplica tratamientos a pacientes y se debe controlar esa variación entre ellos y la correlación si se presenta.

 

 

La paradoja del cumpleaños

Hay muchos problemas de probabilidad que se salen un poco de la lógica. Esto pasa con la paradoja del cumpleaños, para eso imaginemos la siguiente situación:

Dos compañeros de trabajo (A y B ), salen a celebrar el cumpleaños de A a un restaurante, al llegar otra persona C esta celebrando  su cumpleaños. La situación hace que A manifieste, ¡que casualidad, cumplimos años el mismo día…!.

Lo anterior no es tanta casualidad por lo tanto se plantea a partir del siguiente problema, llamado la paradoja del cumpleaños, el cual dice lo siguiente: ¿ Cuantas personas debe haber en una fiesta para que haya un 50% de probabilidades de que al menos dos cumplan años el mismo día?.

Resolver esta pregunta que no es tan intuitiva se debe recordar tres reglas de la teoría de la probabilidad:

1- la regla de laplace

P(A)= probabilidad de que el evento suceda

P(A)= Casos favorables / casos totales

Entender la regla es simple, supongamos que se quiere obtener 6 lanzando un dado de 6 caras iguales enumeradas del 1 al 6. ¿ cual es la probabilidad de que al lanzar el dado el resultado sea 6?

P(6)= cantidad de caras del dado que tenga el 6 / cantidad total de caras del dado=1/6

2 – Regla del complemento

P(A)= Probabilidad de que el evento A suceda

P(A) = 1 –  P( No A), Probabilidad de que el evento A no suceda.

Cual es la probabilidad de que al lanzar el dado no obtenga el 6?

P (No 6) = 1 – P (6) = 1 – 1/6 = 5/6

3- Regla del producto

La probabilidad de que ocurra a la vez dos sucesos independientes se define como:

P(A Y B ) = P (A) * P (B)

Seguimos con el ejemplo del dado. Supongamos que tenemos dos dados y calculamos la probabilidad de que al lanzar los dos dados obtenga un 6 en el primer dado y 6 en el segundo dado.

P (6 y 6) = P(6)*P(6) = 1/6 * 1/6 = 1/36

Teniendo en cuenta las reglas, vamos a resolver el problema de la paradoja del cumpleaños. Para resolver la paradoja simulemos una fiesta y calculemos la probabilidad de que nadie comparte cumpleaños con nadie, quiere decir todos tienen cumpleaños diferentes.

Regla 1 y 3

P (No coincide cumpleaños) = Casos Favorables / casos Totales

Supongamos que el año tiene 365  fechas posibles, si se quiere calcular la probabilidad para dos personas, entonces la primera persona tiene 365 fechas posibles de que ella cumpla años divido por la cantidad de fechas posibles y  para la segunda persona como ya usé para la primera persona una fecha, por tanto para la segunda se resta una fecha que use del primero, esto quiere decir:

P (No coincide cumpleaños Dos personas) = 365/365 * 364/365

P (No coincide cumpleaños Tres personas) = 365/365 * 364/365 * 363/365

P (No coincide cumpleaños Cuatro personas) = 365/365 * 364/365 * 363/365 * 362/365

P ( No coincide cumpleaños n personas) = 365-n+1/365

Ahora aplicando la regla 2, podemos calcular que coincida la fecha de cumpleaños.

1 – P ( No coincide cumpleaños n personas)

Simulemos esta formula en R:

n = 100 # numero de personas en la fiesta
p <- numeric(n) # crear vector
for (i in 1:n) {
q <- 1 – (0:(i – 1))/365 # 1 – prob(no coincide)
p[i] <- 1 – prod(q) }
plot(p, main=”Probabilidad de que al menos dos personas cumplan años el mismo día”,
xlab =”Numero de personas”, ylab = “Probabilidad de coincidencia”, col=”blue”)

probabilidad_intervalo<-p[p>=0.5 & p<=0.6]
numero_personas<- match(p[p>=0.5],p[p<=0.6])

abline(v=numero_personas,h=probabilidad_intervalo)

probabilidad_cumpleaños

Resolviendo la pregunta,¿ Cuantas personas debe haber en una fiesta para que haya un 50% de probabilidades de que al menos dos cumplan años el mismo día?. Seria 23 personas y para que la probabilidad sea mayor al 90% se necesitan 40 personas.

 

Espero que les guste.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Análisis de comunidades en meetup

Como en los anteriores blogs se trató de temas como open data(datos abiertos) y análisis de redes sociales (tweeter). En esta ocasión se trabajará con la plataforma de redes sociales meetup. Esta plataforma permite a sus miembros reunirse en la vida real via grupos unidos por un interés común​ como política, deporte, cultura, senderismo,libros,tecnología, idiomas y otros treinta temas. La suscripción en el sitio y en las aplicaciones móviles es gratis y no contiene publicidad,(https://es.wikipedia.org/wiki/Meetup).

El proceso para el análisis de datos mediante el lenguaje R, se realiza con los siguientes pasos:

1- Abrir cuenta en meetup y obtener la llave(api_key), para ingresar al api de meetup.

2-Definir parámetros(ciudad,radio,palabras claves,etc..) para obtener la información de interés.

3- Hacer los llamados al api, con los parámetros definidos.

4- Gráficos comparativos

En este blog se trabajará un comparativo dependiendo el grupo y que tan grande es la comunidad de los grupos.

Grupos Tecnologia

Comunidades de Python por ciudades principales:

Rplot_python

Vemos como Medellin y Bogotá , lideran con comunidades con mas de 2000 mil usuarios apasionados por temas de python y en su suma acumulada menos de 5000 mil usuarios por ciudad. Cabe resaltar que un usuario puede estar en diferentes comunidades.

Otro tema muy de la actualidad es el AI(Artifial Intelligence), se puede mirar las comunidades con respecto a este tema, en el siguiente gráfico:

Rplot-ai

en estas comunidades de AI, vemos como el api de meetup agrupa o los relaciona con otros temas de interés, por ejemplo Cali R users o Machine Learnin & Data science | Bogotá. Lo que es claro son las relaciones entre los grupos y el interés en temas de tecnología y que están a la vanguardia hoy en día.

Otro tema de interés muy de moda es el blockchain, miremos que comunidades existen.

Rplot-blockchain

Vemos como ciudades como Cali y Barranquilla no tienen una participación tan activa comparadas con Medellin y Bogotá.

Otras Comunidades

Que otras comunidades podemos encontrar en esta red social, miremos por ejemplo temas de deportes y emprendimiento. En este caso miremos comunidades fitness ,hiking y emprendimiento.

Rplot-fitnessRplot-hiking

Rplot-emprendimiento
Vemos como existen diferentes comunidades de interés entre las personas para estar en contacto y retroalimentarse en temas específicos. Estos grupos pueden ser focos para utilizar sus gustos por un tema en especifico para generar ideas o informar nuevas trasformaciones en un tema en común, para alguna empresa o personas que quieren tener diferentes puntos de vista.

Espero que les guste!

Si necesitan el código fuente de la función para generar el llamado al Api y generar el gráfico, pueden dejar el correo.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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&#8221;

  • 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

 

 

 

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.