Reglas del sistema de predicción del clima.
En ocasiones no necesitamos de un modelo complejo.
El siguiente cuaderno es un ejemplo de un buen análisis para encontrar reglas lógicas que podemos integrar en nuestro código.
El interés del análisis es encontrar una regla para determinar en qué condiciones un niño puede salir a jugar.
#Paqueterías a usar en el siguiente script
library(dplyr)
library(tidyr)
library(ggplot2)
options(repr.plot.width=10, repr.plot.height=8)
Nuestro conjunto de datos tiene cuenta con 4 variables Perspectiva, Temperatura, Humedad, Viento.
Busquemos las condiciones en que los niños salen a jugar.
#Importación de la base de datos
Clima <- read.csv("~/Documentos/2_Facultad/IA/Proyecto_1/Clima.csv")
Clima
Soleado | 29.0 | 85 | No | No |
Soleado | 27.0 | 90 | Si | No |
Nublado | 28.0 | 86 | No | Si |
Lluvioso | 21.0 | 96 | No | Si |
Lluvioso | 20.0 | 80 | No | Si |
Lluvioso | 18.0 | 70 | Si | No |
Nublado | 17.0 | 65 | Si | Si |
Soleado | 22.0 | 95 | No | No |
Soleado | 20.5 | 70 | No | Si |
Lluvioso | 24.0 | 80 | No | Si |
Soleado | 24.0 | 70 | Si | Si |
Nublado | 22.0 | 90 | Si | Si |
Nublado | 27.0 | 75 | No | Si |
Lluvioso | 21.6 | 91 | Si | No |
Antes de contestar preguntas particulares ¿Cuándo se considera una alta temperatura “hace calor” y cuándo se tiene una alta humedad?
Primero veamos cómo tenemos dividos nuestros datos
¿Cuántos Si y No tengo en la variable jugar?
Clima %>%
group_by(Jugar) %>%
summarise(Conteo = n())
No | 5 |
Si | 9 |
Ahora veamos si existe un patrón para salir a jugar, tomando en cuenta sólo la variable perspectiva.
Conteo = Clima %>%
group_by(Jugar, Perspectiva) %>%
summarise(Conteo = n())
Conteo
No | Lluvioso | 2 |
No | Soleado | 3 |
Si | Lluvioso | 3 |
Si | Nublado | 4 |
Si | Soleado | 2 |
Podemos ver que nublado es un buen clima para salir a jugar.
ggplot(Clima, aes(x = Jugar, fill = Perspectiva)) + geom_bar() +
labs(title = 'Casos en los que se juega',subtitle = 'En los días nublados siempre se juega')
Comencemos a vizualizar la variable temperatura y humedad para encontrar un patrón.
Veamos estadísticas descriptivas.
summary(Clima)
Perspectiva Temperatura Humedad Viento Jugar
Lluvioso:5 Min. :17.00 Min. :65.00 No:8 No:5
Nublado :4 1st Qu.:20.62 1st Qu.:71.25 Si:6 Si:9
Soleado :5 Median :22.00 Median :82.50
Mean :22.94 Mean :81.64
3rd Qu.:26.25 3rd Qu.:90.00
Max. :29.00 Max. :96.00
Podemos ver que la temperatura mínima es 17 con una máxima de 29 y la humedad mínima de 65 con máxima de 96.
Visualizando la temperatura y humedad de forma individual podemos comenzar a observar que si la temperatura es mayor a 25 grados los niños no salen a jugar, de igual forma, si la humedad es mayor a 85.
ggplot(Clima, aes(x = Temperatura, y = Perspectiva)) +
geom_point(aes(color = Jugar)) +
labs(title = "Temperatura Mínima de 17 y Máxima de 29",subtitle = "¿Qué pasará con temperaturas bajas, influye el viento?")
ggplot(Clima, aes(x = Humedad, y = Perspectiva)) +
geom_point(aes(color = Jugar)) +
labs(title = "Humedad Mínima de 65 y Máxima de 96",subtitle = "¿Qué pasa con humedades altas, influye el viento?")
Veamos la relación de todas las variables, temperatura, humedad y viento.
ggplot(Clima, aes(x = Temperatura, y = Humedad, size = Viento)) +
geom_point(aes(color = Perspectiva)) +
facet_wrap(~Jugar) +
labs(title = 'Humedad, Temperatura y Viento',subtitle = 'Los niños salen a jugar cuando está nublado')
Warning message:
“Using size for a discrete variable is not advised.”
Podemos concluir que los niños siempre salen cuando está nublado.
Ahora sólo enfoquemonos en los días soleados y lluviosos.
-
Juegan cuando está lluvioso y no hay viento aunque la humedad sea mayor a 90
-
Juegan cuando la temperatura es menor a 27 grados y la humedad es menor que 95
#Enfoquemonos en los días Soleados y Lluviosos,
ggplot(filter(Clima,Perspectiva != 'Nublado'), aes(x = Temperatura, y = Humedad, size = Viento)) +
geom_point(aes(color = Perspectiva)) +
facet_wrap(~Jugar) +
labs(title = 'Soleado y Lluvioso',subtitle = '')
Warning message:
“Using size for a discrete variable is not advised.”
¿Cuándo la humedad es alta?
No podemos determinar cuándo se considera una humedad alta, la variable viento parece tener relevancia al momento de decidir, ya que en días soleados la humedad mayor a 94 se considera alta.
¿A qué temperatura se considera como calor?
Aunque tengamos viento, si la temperatura es mayor a 27 grados no salen a jugar.
Podemos decir que a más de 27 grados tenemos temperaturas altas.
#Hemos creados las reglas para salir a jugar para este conjunto de datos.
Clima[Clima$Perspectiva == 'Nublado',]
Clima[Clima$Perspectiva == 'Lluvioso' & Clima$Viento == 'No',]
Clima[Clima$Perspectiva == 'Soleado' & Clima$Temperatura < 27 & Clima$Humedad < 95,]
<th scope=col>Perspectiva</th><th scope=col>Temperatura</th><th scope=col>Humedad</th><th scope=col>Viento</th><th scope=col>Jugar</th> | ||||
---|---|---|---|---|
<th scope=col><fct></th><th scope=col><dbl></th><th scope=col><int></th><th scope=col><fct></th><th scope=col><fct></th> | ||||
Nublado | 28 | 86 | No | Si |
Nublado | 17 | 65 | Si | Si |
Nublado | 22 | 90 | Si | Si |
Nublado | 27 | 75 | No | Si |
<th scope=col>Perspectiva</th><th scope=col>Temperatura</th><th scope=col>Humedad</th><th scope=col>Viento</th><th scope=col>Jugar</th> | ||||
---|---|---|---|---|
<th scope=col><fct></th><th scope=col><dbl></th><th scope=col><int></th><th scope=col><fct></th><th scope=col><fct></th> | ||||
Lluvioso | 21 | 96 | No | Si |
Lluvioso | 20 | 80 | No | Si |
Lluvioso | 24 | 80 | No | Si |
<th scope=col>Perspectiva</th><th scope=col>Temperatura</th><th scope=col>Humedad</th><th scope=col>Viento</th><th scope=col>Jugar</th> | ||||
---|---|---|---|---|
<th scope=col><fct></th><th scope=col><dbl></th><th scope=col><int></th><th scope=col><fct></th><th scope=col><fct></th> | ||||
Soleado | 20.5 | 70 | No | Si |
Soleado | 24.0 | 70 | Si | Si |
Al introducir todo en una misma sentencia de código hemos creado una regla estándar.
#Todo junto
Clima$test <- ifelse((Clima$Perspectiva == 'Nublado') |
(Clima$Perspectiva == 'Lluvioso' & Clima$Viento == 'No') |
(Clima$Perspectiva == 'Soleado' & Clima$Temperatura < 27 & Clima$Humedad < 95),'SI','NO')
Clima
Soleado | 29.0 | 85 | No | No | NO |
Soleado | 27.0 | 90 | Si | No | NO |
Nublado | 28.0 | 86 | No | Si | SI |
Lluvioso | 21.0 | 96 | No | Si | SI |
Lluvioso | 20.0 | 80 | No | Si | SI |
Lluvioso | 18.0 | 70 | Si | No | NO |
Nublado | 17.0 | 65 | Si | Si | SI |
Soleado | 22.0 | 95 | No | No | NO |
Soleado | 20.5 | 70 | No | Si | SI |
Lluvioso | 24.0 | 80 | No | Si | SI |
Soleado | 24.0 | 70 | Si | Si | SI |
Nublado | 22.0 | 90 | Si | Si | SI |
Nublado | 27.0 | 75 | No | Si | SI |
Lluvioso | 21.6 | 91 | Si | No | NO |
Wow!! hemos creado Inteligencia Artificial apartir de entender el comportamiento descriptivo de nuestros datos.