IoT

Análisis de Datos de Calidad del Agua HydroSense

Índice

  1. Introducción
  2. Carga y Transformación de Datos
    1. Eliminar filas con valores negativos en las columnas específicas
    2. Verificar los datos limpios
    3. Guardar el dataset limpio en un nuevo archivo CSV
  3. Análisis de los Datos
    1. Histograma de ORP
    2. Histograma de pH
    3. Histograma de Temperatura
    4. Histograma de TDS
    5. Histograma de Turbidez
  4. Gráficos de Dispersión
    1. Dispersión de Temperatura vs. TDS con Color Indicado por pH
  5. Boxplots
    1. Boxplot de pH por Rango de Temperatura
  6. Conclusiones

Introducción

En este análisis se examinan datos obtenidos del dispositivo HydroSense, el cual mide diversos parámetros del agua en un filtro para agua potable. Las mediciones son realizadas antes y después de que el filtro realice la limpieza del agua, sin embargo, debido a que el tiempo de filtración del filtro varia y no siempre es el mismo, no se realizaron el mismo número de lectura de agua antes y después de filtrar.

A continuación se presentan los valores o sensores de los cuales se realizaron las lecturas, Indicando en primer lugar el nombre del parámetro y en segundo lugar con negritas el nombre con el que se identifica en el dataset:

  • Temperatura (en grados Celsius) temp

  • TDS (Total de Sólidos Disueltos, medidos en ppm) tds

  • Turbidez (en NTU) tur

  • pH ph

  • ORP (Oxidacion-Reduccion-Potencial, medidos en mV) orp

  • Fecha (En formato Epoch) date

Estos datos (Al derredor de 2000) son fundamentales para evaluar la calidad del agua filtrada, ya que afectan tanto su seguridad como su sabor y apariencia. Los histogramas y gráficos de dispersión presentados revelan la distribución y las relaciones entre estos parámetros, proporcionando una visión integral del comportamiento del agua filtrada y ayudando a identificar posibles áreas de mejora en el proceso de filtración.

Carga y Transformación de Datos

library(jsonlite)
data_list <- fromJSON("/Users/vicentcodes/Documents/VSC/Pisinator/firebaseData.json")
View(data_list)
write.csv(data_list, "/Users/vicentcodes/Documents/VSC/Pisinator/firebaseData.csv", row.names = FALSE)

library(ggplot2)
library(dplyr)

data <- read.csv("/Users/vicentcodes/Downloads/Simulated water quality (4).csv")
data$date <- as.POSIXct(data$date / 1000, origin="1970-01-01")

str(data)
summary(data)

Inicialmente, se carga un archivo JSON que contiene datos de calidad del agua, y se convierte a un archivo CSV. Luego, se cargan los datos desde el CSV, y se convierte la columna de fecha a un formato de fecha y hora legible.

summary(data)

Eliminar filas con valores negativos en las columnas específicas

data_clean <- data[data$temp >= 0 & data$tds >= 0 & data$ph >= 0 & data$tur >= 0 & data$orp >= 0, ]

Verificar los datos limpios

summary(data_clean)

Guardar el dataset limpio en un nuevo archivo CSV

write.csv(data_clean, "/Users/vicentcodes/Downloads/archivo_limpio.csv", row.names = FALSE)
data <- read.csv("/Users/vicentcodes/Downloads/archivo_limpio.csv")

Análisis de los Datos

Histograma de ORP

ggplot(data, aes(x = orp)) +
  geom_histogram(binwidth = 10, fill = "orange", color = "black") +
  labs(x = "ORP", y = "Frecuencia") +
  ggtitle("Histograma de ORP (Oxidación-Reducción-Potencial)")

El ORP es una medida importante de la calidad del agua, ya que refleja la capacidad del agua para oxidar contaminantes y agentes patógenos. Un ORP más alto generalmente indica una mayor capacidad de oxidación, lo que puede ser beneficioso para la desinfección. La concentración de valores en el rango medio-alto (650-700 mV) con lo que se puede deducir que las muestras de agua tienen buenas propiedades redox, adecuadas para mantener la calidad y seguridad del agua.

Histograma de ORP
Histograma de ORP

Histograma de pH

ggplot(data, aes(x = ph)) +
  geom_histogram(binwidth = 1, fill = "orange", color = "black") +
  labs(x = "pH", y = "Frecuencia") +
  ggtitle("Histograma de pH")

La mayoría de los valores de pH se concentran entre 6 y 8, con un pico alrededor de 7, indicando que la mayoría de las muestras de agua tienen un pH cercano a neutro. La mayor frecuencia se observa en el valor de pH 7, con más de 800 observaciones, lo que sugiere que el agua analizada tiende a ser neutra, típica de agua potable de buena calidad. Los valores de pH varían desde aproximadamente 4.5 hasta 9.5, indicando la fluctuacion tipica del filtro antes y despues de ser analizada.

Histograma de Temperatura

ggplot(data, aes(x = temp)) +
  geom_histogram(binwidth = 0.5, fill = "ORANGE", color = "black") +
  labs(x = "Temperatura", y = "Frecuencia") +
  ggtitle("Histograma de Temperatura")

La mayoría de los valores de temperatura se concentran entre 20 y 30 grados Celsius, con un pico alrededor de 25 grados, indicando que la mayoría de las muestras de agua tienen temperaturas moderadas. La mayor frecuencia se observa en el rango de 24 a 26 grados, con más de 80 observaciones, lo que sugiere que el agua analizada tiende a tener temperaturas confortables. Los valores de temperatura varían desde aproximadamente 5 hasta 40 grados, lo que se explica con que estos valores de temperaturas superiores a 30 grados corresponden a cuando el tanque del filtro se vacía y recibe el agua del tinaco en el día cuando el calor del sol está en su máxima capacidad.

Histograma de TDS

ggplot(data, aes(x = tds)) +
  geom_histogram(binwidth = 50, fill = "orange", color = "black") +
  labs(x = "TDS", y = "Frecuencia") +
  ggtitle("Histograma de TDS")

La mayoría de los valores de TDS (Total de Sólidos Disueltos) se concentran entre 500 y 1500 mg/L, con un pico alrededor de 1000 mg/L, indicando que la mayoría de las muestras de agua tienen una cantidad moderada de sólidos disueltos. La mayor frecuencia se observa en el rango de 900 a 1100 mg/L, con más de 80 observaciones, lo que sugiere que el agua analizada tiende a tener una concentración de sólidos disueltos típica de aguas de buena calidad. Los valores de TDS varían desde aproximadamente 0 hasta 3000 mg/L.

Histograma de Turbidez

ggplot(data, aes(x = tur)) +
  geom_histogram(binwidth = 0.01, fill = "orange", color = "black") +
  labs(x = "Turbidez", y = "Frecuencia") +
  ggtitle("Histograma de Turbidez")

La mayoría de los valores de turbidez se encuentran entre 0 y 1 NTU (Unidades Nefelométricas de Turbidez), con un pico alrededor de 0.5 NTU, indicando que la mayoría de las muestras de agua son relativamente claras. La frecuencia máxima supera las 150 observaciones en este rango, mientras que las muestras con valores de turbidez mayores a 1 NTU son mucho menos comunes, disminuyendo rápidamente en frecuencia a medida que aumenta la turbidez. Esto sugiere que la calidad del agua en términos de turbidez es mayormente buena, con pocas muestras mostrando niveles elevados de partículas suspendidas.

Análisis de los Gráficos de Densidad

Los gráficos de densidad permiten visualizar la distribución de las variables pH y TDS de una manera suavizada, lo que facilita la identificación de las concentraciones de los datos y las posibles asimetrías en las distribuciones.

Gráficos de Dispersión

Dispersión de Temperatura vs. TDS con Color Indicado por pH

ggplot(data, aes(x = temp, y = tds, color = ph)) +
  geom_point() +
  labs(x = "Temperatura", y = "TDS", color = "pH") +
  ggtitle("Gráfico de Dispersión de Temperatura vs. TDS con Color Indicado por pH")

El gráfico de dispersión muestra una relación entre la temperatura y los sólidos disueltos totales (TDS), con el color de los puntos indicando los valores de pH. Se observa que a temperaturas más bajas, específicamente por debajo de los 15 grados Celsius, los valores de TDS tienden a ser menores, generalmente por debajo de los 1000 mg/L, y predominan los valores de pH más bajos (colores más claros). A medida que la temperatura aumenta, los valores de TDS también aumentan, alcanzando su pico entre 20 y 25 grados Celsius, con TDS frecuentemente superiores a los 1000 mg/L. En este rango de temperatura, se observa una mayor variabilidad en los valores de pH, con una mezcla de puntos claros y oscuros. En temperaturas superiores a los 25 grados Celsius, los TDS empiezan a disminuir ligeramente, y los valores de pH más altos (colores más oscuros) se vuelven más comunes. Este patrón sugiere que la temperatura influye en la concentración de TDS y que los valores de pH tienden a ser más altos a temperaturas más elevadas.

Boxplots

Boxplot de pH por Rango de Temperatura

data$temp_range <- cut(data$temp, breaks=seq(0, 50, by=2))
ggplot(data, aes(x = temp_range, y = ph)) +
  geom_boxplot(fill = "orange") +
  labs(x = "Rango de Temperatura", y = "pH") +
  ggtitle("Boxplot de pH por Rango de Temperatura")

El boxplot de pH por rango de temperatura revela que la mediana del pH se mantiene alrededor de 8 en la mayoría de los rangos de temperatura, indicando un pH ligeramente alcalino. A medida que la temperatura aumenta, hay una ligera tendencia a la disminución del pH, especialmente en los rangos de temperatura más altos (por encima de 30 grados Celsius). Sin embargo, esta tendencia es leve y el pH permanece relativamente estable. Hay considerable variabilidad en el pH en todos los rangos de temperatura, con amplios rangos intercuartiles y presencia de outliers, lo que sugiere la influencia de otros factores además de la temperatura.

Conclusiones

A partir de los análisis de las gráficas anteriores se pueden destacar varios puntos importantes que proporcionan una visión general de los datos:

  • El histograma de pH muestra que la mayoría de los valores de pH se encuentran alrededor de 7, lo que indica una tendencia hacia la neutralidad, con menos frecuencias en los extremos ácido y alcalino, sugiriendo que el agua estudiada tiende a ser neutra.

  • El histograma de temperatura revela una distribución aproximadamente normal con la mayoría de las temperaturas concentradas entre 20 y 30 grados Celsius, lo que sugiere que el agua está generalmente dentro de un rango templado, sin extremos significativos de frío o calor.

  • El histograma de TDS (Total de Sólidos Disueltos) también muestra una distribución aproximadamente normal con un pico alrededor de 1000 mg/L, indicando que la mayoría de las muestras tienen una concentración moderada de sólidos disueltos, lo que podría estar dentro de un rango aceptable para ciertos usos del agua.

  • El histograma de turbidez revela una alta frecuencia de valores bajos, con una disminución gradual hacia valores más altos, lo que sugiere que la mayoría de las muestras de agua tienen baja turbidez, lo que indica que el agua es mayormente clara con pocas partículas suspendidas.

  • El gráfico de dispersión de Temperatura vs. TDS, con color indicado por pH, sugiere que no hay una relación clara entre la temperatura y la concentración de sólidos disueltos, aunque se observa una leve tendencia de mayores TDS en temperaturas intermedias y un pH que varía sin un patrón claro, destacando la independencia entre estos parámetros.

En resumen, los datos revelan que el agua estudiada es mayormente neutra en términos de pH, tiene temperaturas templadas, una concentración moderada de sólidos disueltos y baja turbidez, con correlación entre la temperatura y los niveles de TDS o pH, lo que sugiere una relativa estabilidad en la calidad del agua en los parámetros analizados.