install.packages(c('readr', 'ggplot2', 'dplyr', 'Amelia'))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(readr)
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(Amelia)
## Loading required package: Rcpp
## ##
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.2, built: 2024-04-10)
## ## Copyright (C) 2005-2024 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
# Leer el archivo CSV
df <- read_csv("water_potability.csv")
## Rows: 3276 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (10): ph, Hardness, Solids, Chloramines, Sulfate, Conductivity, Organic_...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Ver dimensiones
dim(df)
## [1] 3276 10
# Ver primeras filas
head(df)
## # A tibble: 6 × 10
## ph Hardness Solids Chloramines Sulfate Conductivity Organic_carbon
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NA 205. 20791. 7.30 369. 564. 10.4
## 2 3.72 129. 18630. 6.64 NA 593. 15.2
## 3 8.10 224. 19910. 9.28 NA 419. 16.9
## 4 8.32 214. 22018. 8.06 357. 363. 18.4
## 5 9.09 181. 17979. 6.55 310. 398. 11.6
## 6 5.58 188. 28749. 7.54 327. 280. 8.40
## # ℹ 3 more variables: Trihalomethanes <dbl>, Turbidity <dbl>, Potability <dbl>
# Estructura de datos
str(df)
## spc_tbl_ [3,276 × 10] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ph : num [1:3276] NA 3.72 8.1 8.32 9.09 ...
## $ Hardness : num [1:3276] 205 129 224 214 181 ...
## $ Solids : num [1:3276] 20791 18630 19910 22018 17979 ...
## $ Chloramines : num [1:3276] 7.3 6.64 9.28 8.06 6.55 ...
## $ Sulfate : num [1:3276] 369 NA NA 357 310 ...
## $ Conductivity : num [1:3276] 564 593 419 363 398 ...
## $ Organic_carbon : num [1:3276] 10.4 15.2 16.9 18.4 11.6 ...
## $ Trihalomethanes: num [1:3276] 87 56.3 66.4 100.3 32 ...
## $ Turbidity : num [1:3276] 2.96 4.5 3.06 4.63 4.08 ...
## $ Potability : num [1:3276] 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, "spec")=
## .. cols(
## .. ph = col_double(),
## .. Hardness = col_double(),
## .. Solids = col_double(),
## .. Chloramines = col_double(),
## .. Sulfate = col_double(),
## .. Conductivity = col_double(),
## .. Organic_carbon = col_double(),
## .. Trihalomethanes = col_double(),
## .. Turbidity = col_double(),
## .. Potability = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
# Gráfico de barras para Potabilidad
barplot(sort(table(df$Potability), decreasing = TRUE), las = 2, col = c("lightblue", "lightgreen"), main = "Potability Distribution", xlab = "Potability", ylab = "Frequency")
# Histograma de Hardness
hist(df$Hardness, main = "Histograma de Hardness", xlab = "Hardness", col = "lightblue", border = "black")
# Histograma de Chloramines
hist(df$Chloramines, main = "Histograma de Chloramines", xlab = "Chloramines", col = "lightgreen", border = "black")
# Mapa de valores perdidos
missmap(df, main = "Mapa de Valores Perdidos")
## Warning: Unknown or uninitialised column: `arguments`.
## Unknown or uninitialised column: `arguments`.
## Warning: Unknown or uninitialised column: `imputations`.
# Calcular las densidades density_hardness <- density(df\(Hardness, na.rm = TRUE) density_chloramines <-
density(df\)Chloramines, na.rm = TRUE)
# Calcular las densidades
density_hardness <- density(df$Hardness, na.rm = TRUE)
density_chloramines <- density(df$Chloramines, na.rm = TRUE)
# Graficar la densidad de Hardness y Chloramines
plot(density_hardness, main = "Density Plot of Hardness and Chloramines",
xlab = "Value", col = "blue", lwd = 2,
xlim = range(c(density_hardness$x, density_chloramines$x)))
lines(density_chloramines, col = "red", lwd = 2)
legend("topright", legend = c("Hardness", "Chloramines"), col = c("blue", "red"), lwd = 2)
#Comparación de Distribuciones: Si las líneas de densidad están cerca
una de la otra, esto indica que las dos variables tienen distribuciones
similares en cuanto a sus valores. Si las líneas están lejos una de la
otra, esto indica que las distribuciones son diferentes.Picos en la
Densidad: Los picos en las líneas de densidad indican las áreas donde la
concentración de valores es mayor.Este gráfico es útil para entender
cómo las dos variables se comportan en términos de su distribución y si
existe alguna relación entre ellas.
# Boxplot: Hardness vs Potability
ggplot(df, aes(x = factor(Potability), y = Hardness, fill = factor(Potability))) +
geom_boxplot() +
scale_fill_manual(values = c("lightblue", "lightgreen")) +
labs(title = "Hardness vs Potability", x = "Potability", y = "Hardness") +
theme_minimal()
#Este gráfico permite comparar la dureza del agua entre las muestras que
son potables y no potables. Si hay diferencias notables en la
distribución de Hardness entre las categorías de Potability, esto podría
sugerir una relación entre la dureza del agua y su potabilidad.
# Boxplot: Chloramines vs Potability
ggplot(df, aes(x = factor(Potability), y = Chloramines, fill = factor(Potability))) +
geom_boxplot() +
scale_fill_manual(values = c("lightblue", "lightgreen")) +
labs(title = "Chloramines vs Potability", x = "Potability", y = "Chloramines") +
theme_minimal()
#Este gráfico te permite comparar cómo varía la concentración de
cloraminas en el agua entre las muestras que se consideran potables y no
potables. Si existe una diferencia significativa en la distribución de
Chloramines entre las categorías de Potability, esto puede sugerir que
la concentración de cloraminas tiene una relación con la potabilidad del
agua.
# Gráfico de dispersión (Hardness vs Chloramines) coloreado por Potability
ggplot(df, aes(x = Hardness, y = Chloramines, color = factor(Potability))) +
geom_point(alpha = 0.6) +
scale_color_manual(values = c("red", "green")) +
labs(title = "Hardness vs Chloramines", x = "Hardness", y = "Chloramines") +
theme_minimal() +
theme(legend.position = "right") +
guides(color = guide_legend(title = "Potability"))
#Este gráfico de dispersión muestra la relación entre dos variables
cuantitativas: Hardness (dureza del agua) y Chloramines (cloraminas en
el agua). Además, los puntos en el gráfico están coloreados según la
variable categórica Potability (potabilidad del agua), que indica si el
agua es potable (1) o no potable (0).