El presente trabajo busca aplicar los conocimientos adquiridos en el curso, mediante el uso de una base de datos que simula escenarios reales de contaminación del suelo y sus efectos en la salud. Se analizan 3,000 registros con variables ambientales, agrícolas, demográficas y de salud.
La contaminación del suelo afecta a más de 2 mil millones de personas, con pérdidas económicas anuales superiores a 20 billones de dólares. Se busca asociar estos escenarios con enfermedades en las personas expuestas y estudiar variables clave para la toma de decisiones.
Establecer los efectos de la contaminación del suelo y su relación con la salud humana, a través del análisis multivariado.
Región: Zona geográfica dentro del país donde se registró el caso.
Tipo de Contaminante: Sustancia química o elemento identificado como contaminante del suelo (plomo, mercurio, pesticidas).
Industria Cercana: Presencia y tipo de industria cercana a la zona del caso.
Tipo de Enfermedad: Tipo de enfermedad o condición de salud relacionada con la exposición a contaminantes.
Género más afectado: Género predominante entre los afectados (masculino, femenino, otro).
# Llamamos las librerías
library(readxl)
library(dplyr)
library(ggplot2)
library(psych)
library(skimr)
library(corrplot)
library(plotrix)
library("RColorBrewer")
library(car)
# Leer el archivo
datos <- read_excel("soil_pollution_diseases_2.1.xlsx")
# Ver los nombres de las columnas para confirmar
colnames(datos)
## [1] "Región" "Tipo_de_Contaminante"
## [3] "Concentración_de_Contaminante_mg_kg" "Suelo_pH"
## [5] "Temperatura_C" "Humedad_%"
## [7] "Lluvia_mm" "Industria_Cercana"
## [9] "Materia_Orgánica_del_Suelo_%" "Tipo_de_Enfermedad."
## [11] "Severidad_de_Enfermedad" "Género_más_afectado"
# Le mostramos a R qué tipo de dato tenemos en cada columna
datos <- read_excel("soil_pollution_diseases_2.1.xlsx",
col_types = c("text", "text", "numeric", "numeric", "numeric", "numeric","numeric", "text", "numeric", "text", "text", "text"))
head(datos)
## # A tibble: 6 × 12
## Región Tipo_de_Contaminante Concentración_de_Contamin…¹ Suelo_pH Temperatura_C
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Africa Plomo 7804 83 356
## 2 Africa Plomo 1633 796 310
## 3 Europa Plomo 16733 535 164
## 4 Asia Plomo 8923 566 314
## 5 Africa Cromo 9393 764 170
## 6 Europa Plomo 12347 518 123
## # ℹ abbreviated name: ¹Concentración_de_Contaminante_mg_kg
## # ℹ 7 more variables: `Humedad_%` <dbl>, Lluvia_mm <dbl>,
## # Industria_Cercana <chr>, `Materia_Orgánica_del_Suelo_%` <dbl>,
## # Tipo_de_Enfermedad. <chr>, Severidad_de_Enfermedad <chr>,
## # Género_más_afectado <chr>
tail(datos)
## # A tibble: 6 × 12
## Región Tipo_de_Contaminante Concentración_de_Con…¹ Suelo_pH Temperatura_C
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Australia Cromo 11012 769 395
## 2 Asia Mercurio 1427 706 123
## 3 Asia Pesticidas 11021 523 254
## 4 Europa Cromo 14615 525 358
## 5 Asia Plomo 14318 463 204
## 6 América de… Cadmio 14693 699 366
## # ℹ abbreviated name: ¹Concentración_de_Contaminante_mg_kg
## # ℹ 7 more variables: `Humedad_%` <dbl>, Lluvia_mm <dbl>,
## # Industria_Cercana <chr>, `Materia_Orgánica_del_Suelo_%` <dbl>,
## # Tipo_de_Enfermedad. <chr>, Severidad_de_Enfermedad <chr>,
## # Género_más_afectado <chr>
str(datos)
## tibble [3,000 × 12] (S3: tbl_df/tbl/data.frame)
## $ Región : chr [1:3000] "Africa" "Africa" "Europa" "Asia" ...
## $ Tipo_de_Contaminante : chr [1:3000] "Plomo" "Plomo" "Plomo" "Plomo" ...
## $ Concentración_de_Contaminante_mg_kg: num [1:3000] 7804 1633 16733 8923 9393 ...
## $ Suelo_pH : num [1:3000] 83 796 535 566 764 518 489 814 524 819 ...
## $ Temperatura_C : num [1:3000] 356 310 164 314 170 123 339 191 439 131 ...
## $ Humedad_% : num [1:3000] 649 731 338 305 586 912 530 697 781 347 ...
## $ Lluvia_mm : num [1:3000] 624 82 1217 1169 2370 ...
## $ Industria_Cercana : chr [1:3000] "Minería" "Minería" "Químico" "Ninguno" ...
## $ Materia_Orgánica_del_Suelo_% : num [1:3000] 198 971 549 398 94 818 52 544 90 359 ...
## $ Tipo_de_Enfermedad. : chr [1:3000] "Enfermedad gastrointestinal" "Cáncer" "Enfermedad gastrointestinal" "Trastorno Neurológico" ...
## $ Severidad_de_Enfermedad : chr [1:3000] "Moderado" "Leve" "Grave" "Grave" ...
## $ Género_más_afectado : chr [1:3000] "masculino" "Ambos" "Ambos" "masculino" ...
options(scipen = 999)
names(datos)[3] <- "Concentracion"
mean(datos$Concentracion, na.rm = TRUE)
## [1] 9385.452
media_conc=mean(datos$Concentracion)
varianza_conc=var(datos$Concentracion)
sd_conc=sd(datos$Concentracion)
#calcular cve
cve_media_conc=100*sd_conc/media_conc
medianaConc=median(datos$Concentracion)
MAD_conc=mad(datos$Concentracion)
cve_mediana_conc=100*MAD_conc/medianaConc
#min,max,cuartiles,media y median
resumen=data.frame(Estadísticos_Descriptivos_univariados=c(mean(datos$Concentracion),var(datos$Concentracion),sd(datos$Concentracion),100*sd(datos$Concentracion)/mean(datos$Concentracion),median(datos$Concentracion),100*mad(datos$Concentracion),mad(datos$Concentracion)/median(datos$Concentracion)))
rownames(resumen)=c("Promedio","Varianza","Desv_estandar","cve_media","Mediana","MAD","cve_mediana")
resumen
## Estadísticos_Descriptivos_univariados
## Promedio 9385.4516667
## Varianza 35880381.3527815
## Desv_estandar 5990.0234852
## cve_media 63.8224318
## Mediana 9376.0000000
## MAD 794747.7300000
## cve_mediana 0.8476405
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Suelo_pH
media_pH <- mean(datos$Suelo_pH, na.rm = TRUE)
varianza_pH <- var(datos$Suelo_pH, na.rm = TRUE)
sd_pH <- sd(datos$Suelo_pH, na.rm = TRUE)
cve_media_pH <- 100 * sd_pH / media_pH
mediana_pH <- median(datos$Suelo_pH, na.rm = TRUE)
MAD_pH <- mad(datos$Suelo_pH, na.rm = TRUE)
cve_mediana_pH <- 100 * MAD_pH / mediana_pH
# Crear data.frame con los resultados
resumen_pH <- data.frame(
Valor = c(media_pH, varianza_pH, sd_pH, cve_media_pH, mediana_pH, MAD_pH, cve_mediana_pH),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media", "Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_pH
## Valor
## Promedio 593.19667
## Varianza 41165.10102
## Desv_estandar 202.89185
## cve_media 34.20313
## Mediana 624.00000
## MAD 167.53380
## cve_mediana 26.84837
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Temperatura_C
media_temp <- mean(datos$Temperatura_C, na.rm = TRUE)
varianza_temp <- var(datos$Temperatura_C, na.rm = TRUE)
sd_temp <- sd(datos$Temperatura_C, na.rm = TRUE)
cve_media_temp <- 100 * sd_temp / media_temp
mediana_temp <- median(datos$Temperatura_C, na.rm = TRUE)
MAD_temp <- mad(datos$Temperatura_C, na.rm = TRUE)
cve_mediana_temp <- 100 * MAD_temp / mediana_temp
# Crear data.frame con los resultados
resumen_temp <- data.frame(
Valor = c(media_temp, varianza_temp, sd_temp, cve_media_temp, mediana_temp, MAD_temp, cve_mediana_temp),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media", "Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_temp
## Valor
## Promedio 272.25100
## Varianza 10169.86862
## Desv_estandar 100.84577
## cve_media 37.04147
## Mediana 270.00000
## MAD 128.98620
## cve_mediana 47.77267
names(datos)[6] <- "Humedad"
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Humedad_%
media_humedad <- mean(datos$Humedad, na.rm = TRUE)
varianza_humedad <- var(datos$Humedad, na.rm = TRUE)
sd_humedad <- sd(datos$Humedad, na.rm = TRUE)
cve_media_humedad <- 100 * sd_humedad / media_humedad
mediana_humedad <- median(datos$Humedad, na.rm = TRUE)
MAD_humedad <- mad(datos$Humedad, na.rm = TRUE)
cve_mediana_humedad <- 100 * MAD_humedad / mediana_humedad
# Crear data.frame con los resultados
resumen_humedad <- data.frame(
Valor = c(media_humedad, varianza_humedad, sd_humedad, cve_media_humedad,
mediana_humedad, MAD_humedad, cve_mediana_humedad),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_humedad
## Valor
## Promedio 582.22867
## Varianza 45615.18344
## Desv_estandar 213.57711
## cve_media 36.68269
## Mediana 584.50000
## MAD 273.53970
## cve_mediana 46.79892
# Calcular estadísticas para la variable Lluvia_mm
media_lluvia <- mean(datos$Lluvia_mm, na.rm = TRUE)
varianza_lluvia <- var(datos$Lluvia_mm, na.rm = TRUE)
sd_lluvia <- sd(datos$Lluvia_mm, na.rm = TRUE)
cve_media_lluvia <- 100 * sd_lluvia / media_lluvia
mediana_lluvia <- median(datos$Lluvia_mm, na.rm = TRUE)
MAD_lluvia <- mad(datos$Lluvia_mm, na.rm = TRUE)
cve_mediana_lluvia <- 100 * MAD_lluvia / mediana_lluvia
# Crear data.frame con los resultados
resumen_lluvia <- data.frame(
Valor = c(media_lluvia, varianza_lluvia, sd_lluvia, cve_media_lluvia,
mediana_lluvia, MAD_lluvia, cve_mediana_lluvia),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_lluvia
## Valor
## Promedio 2003.16600
## Varianza 1328760.39524
## Desv_estandar 1152.71870
## cve_media 57.54484
## Mediana 1990.00000
## MAD 1481.11740
## cve_mediana 74.42801
# Cambiar el nombre de la columna problemática
names(datos)[9] <- "Materia_Orgánica_del_Suelo"
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Materia_Orgánica_del_Suelo_%
media_mos <- mean(datos$Materia_Orgánica_del_Suelo, na.rm = TRUE)
varianza_mos <- var(datos$Materia_Orgánica_del_Suelo, na.rm = TRUE)
sd_mos <- sd(datos$Materia_Orgánica_del_Suelo, na.rm = TRUE)
cve_media_mos <- 100 * sd_mos / media_mos
mediana_mos <- median(datos$Materia_Orgánica_del_Suelo, na.rm = TRUE)
MAD_mos <- mad(datos$Materia_Orgánica_del_Suelo, na.rm = TRUE)
cve_mediana_mos <- 100 * MAD_mos / mediana_mos
# Crear data.frame con los resultados
resumen_mos <- data.frame(
Valor = c(media_mos, varianza_mos, sd_mos, cve_media_mos,
mediana_mos, MAD_mos, cve_mediana_mos),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Crear data.frame con los resultados
resumen_mos
## Valor
## Promedio 464.49033
## Varianza 89163.33302
## Desv_estandar 298.60230
## cve_media 64.28601
## Mediana 454.00000
## MAD 395.85420
## cve_mediana 87.19256
summary(datos$Concentracion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 61 3898 9376 9385 14585 19999
summary(datos$Temperatura_C)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 100.0 185.0 270.0 272.3 358.2 450.0
summary(datos$Suelo_pH)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 45.0 514.0 624.0 593.2 739.0 849.0
summary(datos$Humedad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 200.0 399.0 584.5 582.2 768.0 950.0
summary(datos$Lluvia_mm)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 1006 1990 2003 2998 3997
summary(datos$Materia_Orgánica_del_Suelo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.0 191.8 454.0 464.5 722.0 999.0
min_datos <- min(datos$Concentracion)
min_datos
## [1] 61
max_datos <- max(datos$Concentracion)
max_datos
## [1] 19999
range(datos$Concentracion)
## [1] 61 19999
rango_datos=max(datos$Concentracion)-min(datos$Concentracion)
cuartiles_datos <- quantile(datos$Concentracion,probs = seq(0,1,by=0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 61.00 3898.25 9376.00 14585.25 19999.00
#Cuartil 3 - Cuartil !
rango_intercuartil_datos<- IQR(datos$Concentracion)
rango_intercuartil_datos
## [1] 10687
Medidas_Posic=data.frame("Medidas de posición"=c(min(datos$Concentracion),max(datos$Concentracion),max(datos$Concentracion)-min(datos$Concentracion),quantile(datos$Concentracion,probs = seq(0,1,by=0.25)),IQR(datos$Concentracion)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 61.00
## Máximo 19999.00
## Rango 19938.00
## Cuartil0_min 61.00
## Cuartil_1 3898.25
## Cuartil_2 9376.00
## Cuartil_3 14585.25
## Cuartil_4_max 19999.00
## IQR 10687.00
min_datos <- min(datos$Temperatura_C)
min_datos
## [1] 100
max_datos <- max(datos$Temperatura_C)
max_datos
## [1] 450
range(datos$Temperatura_C)
## [1] 100 450
rango_datos <- max(datos$Temperatura_C) - min(datos$Temperatura_C)
cuartiles_datos <- quantile(datos$Temperatura_C, probs = seq(0, 1, by = 0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 100.00 185.00 270.00 358.25 450.00
# Cálculo del Rango Intercuartílico (IQR = Cuartil 3 - Cuartil 1)
rango_intercuartil_datos <- IQR(datos$Temperatura_C)
rango_intercuartil_datos
## [1] 173.25
# Creación del data frame con las medidas de posición
Medidas_Posic <- data.frame(
"Medidas de posición" = c(
min(datos$Temperatura_C),
max(datos$Temperatura_C),
max(datos$Temperatura_C) - min(datos$Temperatura_C),
quantile(datos$Temperatura_C, probs = seq(0, 1, by = 0.25)),
IQR(datos$Temperatura_C)
)
)
rownames(Medidas_Posic) <- c("Mínimo", "Máximo", "Rango",
"Cuartil0_min", "Cuartil_1", "Cuartil_2",
"Cuartil_3", "Cuartil_4_max", "IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 100.00
## Máximo 450.00
## Rango 350.00
## Cuartil0_min 100.00
## Cuartil_1 185.00
## Cuartil_2 270.00
## Cuartil_3 358.25
## Cuartil_4_max 450.00
## IQR 173.25
min_datos <- min(datos$Suelo_pH)
min_datos
## [1] 45
max_datos <- max(datos$Suelo_pH)
max_datos
## [1] 849
range(datos$Suelo_pH)
## [1] 45 849
rango_datos=max(datos$Suelo_pH)-min(datos$Suelo_pH)
cuartiles_datos <- quantile(datos$Suelo_pH,probs = seq(0,1,by=0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 45 514 624 739 849
#Cuartil 3 - Cuartil 1
rango_intercuartil_datos<- IQR(datos$Suelo_pH)
rango_intercuartil_datos
## [1] 225
Medidas_Posic=data.frame("Medidas de posición"=c(min(datos$Suelo_pH),max(datos$Suelo_pH),max(datos$Suelo_pH)-min(datos$Suelo_pH),quantile(datos$Suelo_pH,probs = seq(0,1,by=0.25)),IQR(datos$Suelo_pH)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 45
## Máximo 849
## Rango 804
## Cuartil0_min 45
## Cuartil_1 514
## Cuartil_2 624
## Cuartil_3 739
## Cuartil_4_max 849
## IQR 225
min_datos <- min(datos$Humedad)
min_datos
## [1] 200
max_datos <- max(datos$Humedad)
max_datos
## [1] 950
range(datos$Humedad)
## [1] 200 950
rango_datos=max(datos$Humedad)-min(datos$Humedad)
cuartiles_datos <- quantile(datos$Humedad,probs = seq(0,1,by=0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 200.0 399.0 584.5 768.0 950.0
#Cuartil 3 - Cuartil 1
rango_intercuartil_datos<- IQR(datos$Humedad)
rango_intercuartil_datos
## [1] 369
Medidas_Posic=data.frame("Medidas de posición"=c(min(datos$Humedad),max(datos$Humedad),max(datos$Humedad)-min(datos$Humedad),quantile(datos$Humedad,probs = seq(0,1,by=0.25)),IQR(datos$Humedad)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 200.0
## Máximo 950.0
## Rango 750.0
## Cuartil0_min 200.0
## Cuartil_1 399.0
## Cuartil_2 584.5
## Cuartil_3 768.0
## Cuartil_4_max 950.0
## IQR 369.0
min_datos <- min(datos$Lluvia_mm)
min_datos
## [1] 0
max_datos <- max(datos$Lluvia_mm)
max_datos
## [1] 3997
range(datos$Lluvia_mm)
## [1] 0 3997
rango_datos=max(datos$Lluvia_mm)-min(datos$Lluvia_mm)
cuartiles_datos <- quantile(datos$Lluvia_mm,probs = seq(0,1,by=0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 0.0 1006.0 1990.0 2997.5 3997.0
#Cuartil 3 - Cuartil 1
rango_intercuartil_datos<- IQR(datos$Lluvia_mm)
rango_intercuartil_datos
## [1] 1991.5
Medidas_Posic=data.frame("Medidas de posición"=c(min(datos$Lluvia_mm),max(datos$Lluvia_mm),max(datos$Lluvia_mm)-min(datos$Lluvia_mm),quantile(datos$Lluvia_mm,probs = seq(0,1,by=0.25)),IQR(datos$Lluvia_mm)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 0.0
## Máximo 3997.0
## Rango 3997.0
## Cuartil0_min 0.0
## Cuartil_1 1006.0
## Cuartil_2 1990.0
## Cuartil_3 2997.5
## Cuartil_4_max 3997.0
## IQR 1991.5
min_datos <- min(datos$Materia_Orgánica_del_Suelo)
min_datos
## [1] 5
max_datos <- max(datos$Materia_Orgánica_del_Suelo)
max_datos
## [1] 999
range(datos$Materia_Orgánica_del_Suelo)
## [1] 5 999
rango_datos=max(datos$Materia_Orgánica_del_Suelo)-min(datos$Materia_Orgánica_del_Suelo)
cuartiles_datos <- quantile(datos$Materia_Orgánica_del_Suelo,probs = seq(0,1,by=0.25))
cuartiles_datos
## 0% 25% 50% 75% 100%
## 5.00 191.75 454.00 722.00 999.00
#Cuartil 3 - Cuartil 1
rango_intercuartil_datos<- IQR(datos$Materia_Orgánica_del_Suelo)
rango_intercuartil_datos
## [1] 530.25
Medidas_Posic=data.frame("Medidas de posición"=c(min(datos$Materia_Orgánica_del_Suelo),max(datos$Materia_Orgánica_del_Suelo),max(datos$Materia_Orgánica_del_Suelo)-min(datos$Materia_Orgánica_del_Suelo),quantile(datos$Materia_Orgánica_del_Suelo,probs = seq(0,1,by=0.25)),IQR(datos$Materia_Orgánica_del_Suelo)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 5.00
## Máximo 999.00
## Rango 994.00
## Cuartil0_min 5.00
## Cuartil_1 191.75
## Cuartil_2 454.00
## Cuartil_3 722.00
## Cuartil_4_max 999.00
## IQR 530.25
# Tabla de frecuencia por región
tabla_region <- table(datos$Región)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_region), name = "Spectral")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_region,
radius = 0.9,
main = "Distribución de registros por Región",
labels = names(tabla_region),
explode = 0.1,
col = colores,
border = "black",
labelcex = 0.7
)
# Tabla de frecuencia por contaminante
tabla_contaminante <- table(datos$Tipo_de_Contaminante)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_contaminante), name = "BrBG")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_contaminante,
radius = 0.9,
main = "Tipo de contaminante presente en el suelo",
labels = names(tabla_contaminante),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
# Tabla de frecuencia por Industria_Cercana
tabla_Industria_Cercana <- table(datos$Industria_Cercana)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Industria_Cercana), name = "PiYG")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Industria_Cercana,
radius = 0.9,
main = "Presencia de Industrias Cercanas en la Zona",
labels = names(tabla_Industria_Cercana),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
# Tabla de frecuencia por Enfermedad
tabla_Enfermedad <- table(datos$Tipo_de_Enfermedad.)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Enfermedad), name = "Dark2")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Enfermedad,
radius = 0.9,
main = "Tipo de Enfermedad que padece la población",
labels = names(tabla_Enfermedad),
explode = 0.1,
col = colores,
border = "blue",
labelcex = 0.7
)
# Tabla de frecuencia por severidad de enfermedad
tabla_Severidad_de_Enfermedad <- table(datos$Severidad_de_Enfermedad)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Severidad_de_Enfermedad), name = "BuGn")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Severidad_de_Enfermedad,
radius = 0.9,
main = "Severidad de la Enfermedad que padece la población",
labels = names(tabla_Severidad_de_Enfermedad),
explode = 0.1,
col = colores,
border = "green",
labelcex = 0.7
)
# Tabla de frecuencia por contaminante
tabla_Género <- table(datos$Género_más_afectado)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Género), name = "BuPu")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Género,
radius = 0.9,
main = "Tipo de Genero más afectado",
labels = names(tabla_Género),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
barplot(table(datos$Región),col="#66CDAA",main="Frecuencias de la variable Región")
barplot(table(datos$Tipo_de_Contaminante),col="#E066FF",main="Frecuencias de la variable tipo de contaminante")
barplot(table(datos$Industria_Cercana),col="#FFE7BA",main="Frecuencias de la variable Industria cercana")
barplot(table(datos$Tipo_de_Enfermedad.),
col = "#87CEFF",
main = "Frecuencias de la variable Tipo de Enfermedad",
cex.names = 0.6,
las = 1, # Gira las etiquetas de eje y
horiz = TRUE) # Gráfico horizontal
barplot(table(datos$Severidad_de_Enfermedad),
col = "#FFB90F",
main = "Frecuencias de la variable Severidad de Enfermedad")
barplot(table(datos$Género_más_afectado),
col = "#458B00",
main = "Frecuencias de la variable Género más afectado")
hist(datos$Concentracion,col="#556B2F",freq=F,main="Distribución de frecuencias de la concentración de contaminantes",xlab="Concentración",ylab="Frecuencias")
hist(datos$Suelo_pH,col="#AB82FF",freq=F,main="Distribución de frecuencias de la concentración de pH en el suelo",xlab="Concentración",ylab="Frecuencias")
hist(datos$Temperatura_C,col="#E0EEE0",freq=F,main="Distribución de frecuencias de la Temperatura C°",xlab="Concentración",ylab="Frecuencias")
hist(datos$Humedad,col="#EE1289",freq=F,main="Distribución de frecuencias de la Humedad",xlab="Concentración",ylab="Frecuencias")
hist(datos$Lluvia_mm,col="#00CDCD",freq=F,main="Distribución de frecuencias de la Lluvia",xlab="Concentración",ylab="Frecuencias")
hist(datos$Materia_Orgánica_del_Suelo,col="#FFE4E1",freq=F,main="Distribución de frecuencias de la concentración de Materia Orgánica",xlab="Concentración",ylab="Frecuencias")
boxplot(datos$Concentracion,col="#8B5F65",ylab="Concentraciodel contaminante",main="Diagrama de caja de Concentración")
stripchart(datos$Concentracion, method = "jitter", pch = 16, add = TRUE, col = "red", cex = 0.3, vertical = TRUE)
boxplot(datos$Suelo_pH,col="#FFA07A",ylab="pH del",main="Diagrama de caja de Suelo pH")
stripchart(datos$Suelo_pH, method = "jitter", pch = 16, add = TRUE, col = "yellow", cex = 0.3, vertical = TRUE)
boxplot(datos$Temperatura_C,col="#6B8E23",ylab="Temperatura C°",main="Diagrama de caja de Temperatura C°")
stripchart(datos$Temperatura_C, method = "jitter", pch = 16, add = TRUE, col = "brown", cex = 0.3, vertical = TRUE)
boxplot(datos$Humedad,col="#A4D3EE",ylab="Humedad",main="Diagrama de caja de Humedad ")
stripchart(datos$Humedad, method = "jitter", pch = 16, add = TRUE, col = "green", cex = 0.3, vertical = TRUE)
boxplot(datos$Lluvia_mm,col="#CD6839",ylab="Lluvia",main="Diagrama de caja de LLuvia")
stripchart(datos$Lluvia_mm, method = "jitter", pch = 16, add = TRUE, col = "black", cex = 0.3, vertical = TRUE)
boxplot(datos$Materia_Orgánica_del_Suelo,col="#FF00FF",ylab="Materia orgánica",main="Diagrama de caja de Materia orgánica del suelo")
stripchart(datos$Materia_Orgánica_del_Suelo, method = "jitter", pch = 16, add = TRUE, col = "blue", cex = 0.3, vertical = TRUE)
boxplot(datos$Suelo_pH~ datos$Tipo_de_Contaminante,col="#FFE4E1",ylab="Suelo pH",main="Diagrama de caja de Suelo pH")
stripchart(datos$Suelo_pH~ datos$Tipo_de_Contaminante, method = "jitter", pch = 12, add = TRUE, col = "#6A5ACD", vertical = TRUE)
boxplot(datos$Concentracion~ datos$Tipo_de_Enfermedad.,col="#00E5EE",ylab="Suelo pH",main="Diagrama de caja de Concentración del contaminante")
stripchart(datos$Concentracion~ datos$Tipo_de_Enfermedad., method = "jitter", pch = 12, add = TRUE, col = "#EE3A8C", vertical = TRUE)
##Tablas de contingencia, conteos, proporción, porcentajes con respecto al total, porcentajes por fila y porcentajes por columna, diagramas de barras bivariados
# 1. Crear tabla cruzada y proporciones
TablaCruzada <- table(datos$Región, datos$Tipo_de_Contaminante)
TablaCruzada_propFilas <- prop.table(TablaCruzada, margin = 1)
TablaCruzada_propColumnas <- prop.table(TablaCruzada, margin = 2)
# 2. Definir colores (tantos como regiones)
colores <- rainbow(nrow(TablaCruzada)) # 1 color por región
# 3. Gráfico 1: Barras apiladas con etiquetas verticales
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2)) # espacio para etiquetas
barplot(TablaCruzada,
col = colores,
las = 2, # etiquetas verticales
cex.names = 0.8,
main = "Frecuencia de Contaminantes por Región",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada), fill = colores, cex = 0.8)
# 4. Gráfico 2: Mosaicplot claro y proporcionado
mosaicplot(TablaCruzada,
color = colores,
cex.axis = 0.4,
main = " Región vs Contaminante",
las = 1)
# Asegúrate de tener la tabla
TablaCruzada <- table(datos$Región, datos$Tipo_de_Contaminante)
TablaCruzada_propColumnas <- prop.table(TablaCruzada, margin = 2)
# Define colores (tantos como regiones)
colores6 <- rainbow(nrow(TablaCruzada)) # o usa tus propios colores
# Crear gráfico de proporciones por columna (apilado)
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2)) # margen inferior ampliado para etiquetas
barplot(TablaCruzada_propColumnas,
col = colores6,
las = 2, # etiquetas verticales en eje X
cex.names = 0.8,
main = "Proporción por Tipo de Contaminante (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada), fill = colores6, cex = 0.8)
# 1. Crear tabla cruzada y proporciones
TablaCruzada2 <- table(datos$Industria_Cercana, datos$Tipo_de_Enfermedad.)
TablaCruzada2_propFilas <- prop.table(TablaCruzada2, margin = 1)
TablaCruzada2_propColumnas <- prop.table(TablaCruzada2, margin = 2)
# Por ejemplo con RColorBrewer
library(RColorBrewer)
colores <- brewer.pal(n = min(nrow(TablaCruzada2), 8), name = "Set2")
# Gráfico de barras
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2))
barplot(TablaCruzada2,
col = colores,
las = 2,
cex.names = 0.8,
main = "Frecuencia de Enfermedades por Industria cercana",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada2), fill = colores, cex = 0.8)
# Mosaico
mosaicplot(TablaCruzada2,
color = colores,
cex.axis = 0.4,
main = "Industria vs Enfermedad",
las = 1)
# Gráfico de proporciones por columnas
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2))
barplot(prop.table(TablaCruzada2, margin = 2),
col = colores,
las = 2,
cex.names = 0.8,
main = "Proporción por Tipo de Industria (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada2), fill = colores, cex = 0.8)
# 1. Crear tabla cruzada y proporciones
TablaCruzada3 <- table(datos$Severidad_de_Enfermedad , datos$Género_más_afectado)
TablaCruzada3_propFilas <- prop.table(TablaCruzada3, margin = 1)
TablaCruzada3_propColumnas <- prop.table(TablaCruzada3, margin = 2)
# Por ejemplo con RColorBrewer
library(RColorBrewer)
colores <- brewer.pal(n = min(nrow(TablaCruzada3), 8), name = "Dark2")
# Gráfico de barras
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2))
barplot(TablaCruzada3,
col = colores,
las = 2,
cex.names = 0.8,
main = "Frecuencia de Enfermedades por Industria cercana",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada3), fill = colores, cex = 0.8)
# Mosaico
mosaicplot(TablaCruzada3,
color = colores,
cex.axis = 0.7,
main = "Industria vs Enfermedad",
las = 1)
# Gráfico de proporciones por columnas
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2))
barplot(prop.table(TablaCruzada3, margin = 2),
col = colores,
las = 2,
cex.names = 0.8,
main = "Proporción por Tipo de Industria (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada3), fill = colores, cex = 0.8)
plot(datos$Concentracion,
datos$Suelo_pH,
main = "Diagrama de Dispersión: Concentración vs Suelo pH",
xlab = "Concentración",
ylab = "Suelo pH",
col = "blue", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
plot(datos$Temperatura_C,
datos$Humedad,
main = "Diagrama de Dispersión: Temperatura C° vs Humedad",
xlab = "Temperatura C°",
ylab = "Humedad",
col = "#40E0D0", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
plot(datos$Lluvia_mm,
datos$Materia_Orgánica_del_Suelo,
main = "Diagrama de Dispersión: Lluvia vs Materia Orgánica del Suelo",
xlab = "Lluvia",
ylab = "Materia Orgánica del Suelo",
col = "#FF3E96", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos,
diagonal = list(method = "boxplot"))
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos,
diagonal = list(method = "histogram"))
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Región, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Tipo_de_Contaminante, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Industria_Cercana, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Tipo_de_Enfermedad., by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Severidad_de_Enfermedad, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = datos, groups=datos$Género_más_afectado, by.groups=T)
MatrizCor <- cor(datos[, c(3, 4, 5, 6, 7, 9)])
MatrizCor
## Concentracion Suelo_pH Temperatura_C
## Concentracion 1.0000000000 0.0007527591 0.001566910
## Suelo_pH 0.0007527591 1.0000000000 0.001965225
## Temperatura_C 0.0015669102 0.0019652248 1.000000000
## Humedad -0.0380629061 -0.0092036187 -0.026801707
## Lluvia_mm 0.0024470456 -0.0226729597 0.032773458
## Materia_Orgánica_del_Suelo 0.0123516074 -0.0183117339 -0.031524663
## Humedad Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion -0.038062906 0.002447046 0.012351607
## Suelo_pH -0.009203619 -0.022672960 -0.018311734
## Temperatura_C -0.026801707 0.032773458 -0.031524663
## Humedad 1.000000000 -0.002770009 0.015540659
## Lluvia_mm -0.002770009 1.000000000 0.007668716
## Materia_Orgánica_del_Suelo 0.015540659 0.007668716 1.000000000
MatrizCov=cov(datos[, c(3, 4, 5, 6, 7, 9)])
MatrizCov
## Concentracion Suelo_pH Temperatura_C Humedad
## Concentracion 35880381.3528 914.84846 946.52114 -48695.0910
## Suelo_pH 914.8485 41165.10102 40.21004 -398.8209
## Temperatura_C 946.5211 40.21004 10169.86862 -577.2645
## Humedad -48695.0910 -398.82091 -577.26448 45615.1834
## Lluvia_mm 16896.3902 -5302.68888 3809.80960 -681.9606
## Materia_Orgánica_del_Suelo 22092.5147 -1109.39756 -949.29517 991.0996
## Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion 16896.3902 22092.5147
## Suelo_pH -5302.6889 -1109.3976
## Temperatura_C 3809.8096 -949.2952
## Humedad -681.9606 991.0996
## Lluvia_mm 1328760.3952 2639.6061
## Materia_Orgánica_del_Suelo 2639.6061 89163.3330
MatrizVar=var(datos[, c(3, 4, 5, 6, 7, 9)])
MatrizVar
## Concentracion Suelo_pH Temperatura_C Humedad
## Concentracion 35880381.3528 914.84846 946.52114 -48695.0910
## Suelo_pH 914.8485 41165.10102 40.21004 -398.8209
## Temperatura_C 946.5211 40.21004 10169.86862 -577.2645
## Humedad -48695.0910 -398.82091 -577.26448 45615.1834
## Lluvia_mm 16896.3902 -5302.68888 3809.80960 -681.9606
## Materia_Orgánica_del_Suelo 22092.5147 -1109.39756 -949.29517 991.0996
## Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion 16896.3902 22092.5147
## Suelo_pH -5302.6889 -1109.3976
## Temperatura_C 3809.8096 -949.2952
## Humedad -681.9606 991.0996
## Lluvia_mm 1328760.3952 2639.6061
## Materia_Orgánica_del_Suelo 2639.6061 89163.3330
datos <- read_excel("soil_pollution_diseases_2.1.xlsx")
set.seed(123) # para que el resultado sea reproducible
muestra50 <- datos[sample(nrow(datos), 50), ]
options(scipen = 999)
names(muestra50)[3] <- "Concentracion"
mean(muestra50$Concentracion, na.rm = TRUE)
## [1] 8522.22
media_conc=mean(muestra50$Concentracion)
varianza_conc=var(muestra50$Concentracion)
sd_conc=sd(muestra50$Concentracion)
#calcular cve
cve_media_conc=100*sd_conc/media_conc
medianaConc=median(muestra50$Concentracion)
MAD_conc=mad(muestra50$Concentracion)
cve_mediana_conc=100*MAD_conc/medianaConc
#min,max,cuartiles,media y median
resumen=data.frame(Estadísticos_Descriptivos_univariados=c(mean(muestra50$Concentracion),var(muestra50$Concentracion),sd(muestra50$Concentracion),100*sd(muestra50$Concentracion)/mean(muestra50$Concentracion),median(muestra50$Concentracion),100*mad(muestra50$Concentracion),mad(muestra50$Concentracion)/median(muestra50$Concentracion)))
rownames(resumen)=c("Promedio","Varianza","Desv_estandar","cve_media","Mediana","MAD","cve_mediana")
resumen
## Estadísticos_Descriptivos_univariados
## Promedio 8522.2200000
## Varianza 30911609.6853061
## Desv_estandar 5559.8210120
## cve_media 65.2391162
## Mediana 8846.5000000
## MAD 689038.3500000
## cve_mediana 0.7788824
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Suelo_pH
media_pH <- mean(muestra50$Suelo_pH, na.rm = TRUE)
varianza_pH <- var(muestra50$Suelo_pH, na.rm = TRUE)
sd_pH <- sd(muestra50$Suelo_pH, na.rm = TRUE)
cve_media_pH <- 100 * sd_pH / media_pH
mediana_pH <- median(muestra50$Suelo_pH, na.rm = TRUE)
MAD_pH <- mad(muestra50$Suelo_pH, na.rm = TRUE)
cve_mediana_pH <- 100 * MAD_pH / mediana_pH
# Crear data.frame con los resultados
resumen_pH <- data.frame(
Valor = c(media_pH, varianza_pH, sd_pH, cve_media_pH, mediana_pH, MAD_pH, cve_mediana_pH),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media", "Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_pH
## Valor
## Promedio 630.08000
## Varianza 37443.91184
## Desv_estandar 193.50429
## cve_media 30.71107
## Mediana 652.50000
## MAD 194.96190
## cve_mediana 29.87922
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Temperatura_C
media_temp <- mean(muestra50$Temperatura_C, na.rm = TRUE)
varianza_temp <- var(muestra50$Temperatura_C, na.rm = TRUE)
sd_temp <- sd(muestra50$Temperatura_C, na.rm = TRUE)
cve_media_temp <- 100 * sd_temp / media_temp
mediana_temp <- median(muestra50$Temperatura_C, na.rm = TRUE)
MAD_temp <- mad(muestra50$Temperatura_C, na.rm = TRUE)
cve_mediana_temp <- 100 * MAD_temp / mediana_temp
# Crear data.frame con los resultados
resumen_temp <- data.frame(
Valor = c(media_temp, varianza_temp, sd_temp, cve_media_temp, mediana_temp, MAD_temp, cve_mediana_temp),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media", "Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_temp
## Valor
## Promedio 267.88000
## Varianza 8864.43429
## Desv_estandar 94.15112
## cve_media 35.14675
## Mediana 274.00000
## MAD 95.62770
## cve_mediana 34.90062
names(muestra50)[6] <- "Humedad"
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Humedad_%
media_humedad <- mean(muestra50$Humedad, na.rm = TRUE)
varianza_humedad <- var(muestra50$Humedad, na.rm = TRUE)
sd_humedad <- sd(muestra50$Humedad, na.rm = TRUE)
cve_media_humedad <- 100 * sd_humedad / media_humedad
mediana_humedad <- median(muestra50$Humedad, na.rm = TRUE)
MAD_humedad <- mad(muestra50$Humedad, na.rm = TRUE)
cve_mediana_humedad <- 100 * MAD_humedad / mediana_humedad
# Crear data.frame con los resultados
resumen_humedad <- data.frame(
Valor = c(media_humedad, varianza_humedad, sd_humedad, cve_media_humedad,
mediana_humedad, MAD_humedad, cve_mediana_humedad),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_humedad
## Valor
## Promedio 582.36000
## Varianza 39031.94939
## Desv_estandar 197.56505
## cve_media 33.92490
## Mediana 609.50000
## MAD 221.64870
## cve_mediana 36.36566
# Calcular estadísticas para la variable Lluvia_mm
media_lluvia <- mean(muestra50$Lluvia_mm, na.rm = TRUE)
varianza_lluvia <- var(muestra50$Lluvia_mm, na.rm = TRUE)
sd_lluvia <- sd(muestra50$Lluvia_mm, na.rm = TRUE)
cve_media_lluvia <- 100 * sd_lluvia / media_lluvia
mediana_lluvia <- median(muestra50$Lluvia_mm, na.rm = TRUE)
MAD_lluvia <- mad(muestra50$Lluvia_mm, na.rm = TRUE)
cve_mediana_lluvia <- 100 * MAD_lluvia / mediana_lluvia
# Crear data.frame con los resultados
resumen_lluvia <- data.frame(
Valor = c(media_lluvia, varianza_lluvia, sd_lluvia, cve_media_lluvia,
mediana_lluvia, MAD_lluvia, cve_mediana_lluvia),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Mostrar resumen
resumen_lluvia
## Valor
## Promedio 1481.3400
## Varianza 1442161.1269
## Desv_estandar 1200.9001
## cve_media 81.0685
## Mediana 1101.0000
## MAD 1190.5278
## cve_mediana 108.1315
# Cambiar el nombre de la columna problemática
names(muestra50)[9] <- "Materia_Orgánica_del_Suelo"
# Evitar notación científica
options(scipen = 999)
# Calcular estadísticas para la variable Materia_Orgánica_del_Suelo_%
media_mos <- mean(muestra50$Materia_Orgánica_del_Suelo, na.rm = TRUE)
varianza_mos <- var(muestra50$Materia_Orgánica_del_Suelo, na.rm = TRUE)
sd_mos <- sd(muestra50$Materia_Orgánica_del_Suelo, na.rm = TRUE)
cve_media_mos <- 100 * sd_mos / media_mos
mediana_mos <- median(muestra50$Materia_Orgánica_del_Suelo, na.rm = TRUE)
MAD_mos <- mad(muestra50$Materia_Orgánica_del_Suelo, na.rm = TRUE)
cve_mediana_mos <- 100 * MAD_mos / mediana_mos
# Crear data.frame con los resultados
resumen_mos <- data.frame(
Valor = c(media_mos, varianza_mos, sd_mos, cve_media_mos,
mediana_mos, MAD_mos, cve_mediana_mos),
row.names = c("Promedio", "Varianza", "Desv_estandar", "cve_media",
"Mediana", "MAD", "cve_mediana")
)
# Crear data.frame con los resultados
resumen_mos
## Valor
## Promedio 459.38000
## Varianza 102775.09755
## Desv_estandar 320.58555
## cve_media 69.78657
## Mediana 361.00000
## MAD 423.28230
## cve_mediana 117.25271
summary(muestra50$Concentracion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 94 3772 8846 8522 12758 19858
summary(muestra50$Temperatura_C)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 102.0 202.2 274.0 267.9 336.2 444.0
summary(muestra50$Suelo_pH)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 49.0 537.2 652.5 630.1 787.5 849.0
summary(muestra50$Humedad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 218.0 433.0 609.5 582.4 725.8 936.0
summary(muestra50$Lluvia_mm)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 26 492 1101 1481 2200 3892
summary(muestra50$Materia_Orgánica_del_Suelo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19.0 174.8 361.0 459.4 736.5 987.0
min_muestra50 <- min(muestra50$Concentracion)
min_muestra50
## [1] 94
max_muestra50 <- max(muestra50$Concentracion)
max_muestra50
## [1] 19858
range(muestra50$Concentracion)
## [1] 94 19858
rango_muestra50=max(muestra50$Concentracion)-min(muestra50$Concentracion)
cuartiles_muestra50 <- quantile(muestra50$Concentracion,probs = seq(0,1,by=0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 94.00 3771.50 8846.50 12758.25 19858.00
#Cuartil 3 - Cuartil !
rango_intercuartil_muestra50<- IQR(muestra50$Concentracion)
rango_intercuartil_muestra50
## [1] 8986.75
Medidas_Posic=data.frame("Medidas de posición"=c(min(muestra50$Concentracion),max(muestra50$Concentracion),max(muestra50$Concentracion)-min(muestra50$Concentracion),quantile(muestra50$Concentracion,probs = seq(0,1,by=0.25)),IQR(muestra50$Concentracion)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 94.00
## Máximo 19858.00
## Rango 19764.00
## Cuartil0_min 94.00
## Cuartil_1 3771.50
## Cuartil_2 8846.50
## Cuartil_3 12758.25
## Cuartil_4_max 19858.00
## IQR 8986.75
min_muestra50 <- min(muestra50$Temperatura_C)
min_muestra50
## [1] 102
max_muestra50 <- max(muestra50$Temperatura_C)
max_muestra50
## [1] 444
range(muestra50$Temperatura_C)
## [1] 102 444
rango_muestra50 <- max(muestra50$Temperatura_C) - min(muestra50$Temperatura_C)
cuartiles_muestra50 <- quantile(muestra50$Temperatura_C, probs = seq(0, 1, by = 0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 102.00 202.25 274.00 336.25 444.00
# Cálculo del Rango Intercuartílico (IQR = Cuartil 3 - Cuartil 1)
rango_intercuartil_muestra50 <- IQR(muestra50$Temperatura_C)
rango_intercuartil_muestra50
## [1] 134
# Creación del data frame con las medidas de posición
Medidas_Posic <- data.frame(
"Medidas de posición" = c(
min(muestra50$Temperatura_C),
max(muestra50$Temperatura_C),
max(muestra50$Temperatura_C) - min(muestra50$Temperatura_C),
quantile(muestra50$Temperatura_C, probs = seq(0, 1, by = 0.25)),
IQR(muestra50$Temperatura_C)
)
)
rownames(Medidas_Posic) <- c("Mínimo", "Máximo", "Rango",
"Cuartil0_min", "Cuartil_1", "Cuartil_2",
"Cuartil_3", "Cuartil_4_max", "IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 102.00
## Máximo 444.00
## Rango 342.00
## Cuartil0_min 102.00
## Cuartil_1 202.25
## Cuartil_2 274.00
## Cuartil_3 336.25
## Cuartil_4_max 444.00
## IQR 134.00
min_muestra50 <- min(muestra50$Suelo_pH)
min_muestra50
## [1] 49
max_muestra50 <- max(muestra50$Suelo_pH)
max_muestra50
## [1] 849
range(muestra50$Suelo_pH)
## [1] 49 849
rango_muestra50=max(muestra50$Suelo_pH)-min(muestra50$Suelo_pH)
cuartiles_muestra50 <- quantile(muestra50$Suelo_pH,probs = seq(0,1,by=0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 49.00 537.25 652.50 787.50 849.00
#Cuartil 3 - Cuartil 1
rango_intercuartil_muestra50<- IQR(muestra50$Suelo_pH)
rango_intercuartil_muestra50
## [1] 250.25
Medidas_Posic=data.frame("Medidas de posición"=c(min(muestra50$Suelo_pH),max(muestra50$Suelo_pH),max(muestra50$Suelo_pH)-min(muestra50$Suelo_pH),quantile(muestra50$Suelo_pH,probs = seq(0,1,by=0.25)),IQR(muestra50$Suelo_pH)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 49.00
## Máximo 849.00
## Rango 800.00
## Cuartil0_min 49.00
## Cuartil_1 537.25
## Cuartil_2 652.50
## Cuartil_3 787.50
## Cuartil_4_max 849.00
## IQR 250.25
min_muestra50 <- min(muestra50$Humedad)
min_muestra50
## [1] 218
max_muestra50 <- max(muestra50$Humedad)
max_muestra50
## [1] 936
range(muestra50$Humedad)
## [1] 218 936
rango_muestra50=max(muestra50$Humedad)-min(muestra50$Humedad)
cuartiles_muestra50 <- quantile(muestra50$Humedad,probs = seq(0,1,by=0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 218.00 433.00 609.50 725.75 936.00
#Cuartil 3 - Cuartil 1
rango_intercuartil_muestra50<- IQR(muestra50$Humedad)
rango_intercuartil_muestra50
## [1] 292.75
Medidas_Posic=data.frame("Medidas de posición"=c(min(muestra50$Humedad),max(muestra50$Humedad),max(muestra50$Humedad)-min(muestra50$Humedad),quantile(muestra50$Humedad,probs = seq(0,1,by=0.25)),IQR(muestra50$Humedad)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 218.00
## Máximo 936.00
## Rango 718.00
## Cuartil0_min 218.00
## Cuartil_1 433.00
## Cuartil_2 609.50
## Cuartil_3 725.75
## Cuartil_4_max 936.00
## IQR 292.75
min_muestra50 <- min(muestra50$Lluvia_mm)
min_muestra50
## [1] 26
max_muestra50 <- max(muestra50$Lluvia_mm)
max_muestra50
## [1] 3892
range(muestra50$Lluvia_mm)
## [1] 26 3892
rango_muestra50=max(muestra50$Lluvia_mm)-min(muestra50$Lluvia_mm)
cuartiles_muestra50 <- quantile(muestra50$Lluvia_mm,probs = seq(0,1,by=0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 26.0 492.0 1101.0 2199.5 3892.0
#Cuartil 3 - Cuartil 1
rango_intercuartil_muestra50<- IQR(muestra50$Lluvia_mm)
rango_intercuartil_muestra50
## [1] 1707.5
Medidas_Posic=data.frame("Medidas de posición"=c(min(muestra50$Lluvia_mm),max(muestra50$Lluvia_mm),max(muestra50$Lluvia_mm)-min(muestra50$Lluvia_mm),quantile(muestra50$Lluvia_mm,probs = seq(0,1,by=0.25)),IQR(muestra50$Lluvia_mm)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 26.0
## Máximo 3892.0
## Rango 3866.0
## Cuartil0_min 26.0
## Cuartil_1 492.0
## Cuartil_2 1101.0
## Cuartil_3 2199.5
## Cuartil_4_max 3892.0
## IQR 1707.5
min_muestra50 <- min(muestra50$Materia_Orgánica_del_Suelo)
min_muestra50
## [1] 19
max_muestra50 <- max(muestra50$Materia_Orgánica_del_Suelo)
max_muestra50
## [1] 987
range(muestra50$Materia_Orgánica_del_Suelo)
## [1] 19 987
rango_muestra50=max(muestra50$Materia_Orgánica_del_Suelo)-min(muestra50$Materia_Orgánica_del_Suelo)
cuartiles_muestra50 <- quantile(muestra50$Materia_Orgánica_del_Suelo,probs = seq(0,1,by=0.25))
cuartiles_muestra50
## 0% 25% 50% 75% 100%
## 19.00 174.75 361.00 736.50 987.00
#Cuartil 3 - Cuartil 1
rango_intercuartil_muestra50<- IQR(muestra50$Materia_Orgánica_del_Suelo)
rango_intercuartil_muestra50
## [1] 561.75
Medidas_Posic=data.frame("Medidas de posición"=c(min(muestra50$Materia_Orgánica_del_Suelo),max(muestra50$Materia_Orgánica_del_Suelo),max(muestra50$Materia_Orgánica_del_Suelo)-min(muestra50$Materia_Orgánica_del_Suelo),quantile(muestra50$Materia_Orgánica_del_Suelo,probs = seq(0,1,by=0.25)),IQR(muestra50$Materia_Orgánica_del_Suelo)))
rownames(Medidas_Posic)=c("Mínimo","Máximo","Rango","Cuartil0_min","Cuartil_1","Cuartil_2","Cuartil_3","Cuartil_4_max","IQR")
Medidas_Posic
## Medidas.de.posición
## Mínimo 19.00
## Máximo 987.00
## Rango 968.00
## Cuartil0_min 19.00
## Cuartil_1 174.75
## Cuartil_2 361.00
## Cuartil_3 736.50
## Cuartil_4_max 987.00
## IQR 561.75
# Tabla de frecuencia por región
tabla_region <- table(muestra50$Región)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_region), name = "Spectral")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_region,
radius = 0.9,
main = "Distribución de registros por Región",
labels = names(tabla_region),
explode = 0.1,
col = colores,
border = "black",
labelcex = 0.7
)
# Tabla de frecuencia por contaminante
tabla_contaminante <- table(muestra50$Tipo_de_Contaminante)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_contaminante), name = "BrBG")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_contaminante,
radius = 0.9,
main = "Tipo de contaminante presente en el suelo",
labels = names(tabla_contaminante),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
# Tabla de frecuencia por Industria_Cercana
tabla_Industria_Cercana <- table(muestra50$Industria_Cercana)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Industria_Cercana), name = "PiYG")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Industria_Cercana,
radius = 0.9,
main = "Presencia de Industrias Cercanas en la Zona",
labels = names(tabla_Industria_Cercana),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
# Tabla de frecuencia por Enfermedad
tabla_Enfermedad <- table(muestra50$Tipo_de_Enfermedad.)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Enfermedad), name = "Dark2")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Enfermedad,
radius = 0.9,
main = "Tipo de Enfermedad que padece la población",
labels = names(tabla_Enfermedad),
explode = 0.1,
col = colores,
border = "blue",
labelcex = 0.7
)
# Tabla de frecuencia por severidad de enfermedad
tabla_Severidad_de_Enfermedad <- table(muestra50$Severidad_de_Enfermedad)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Severidad_de_Enfermedad), name = "BuGn")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Severidad_de_Enfermedad,
radius = 0.9,
main = "Severidad de la Enfermedad que padece la población",
labels = names(tabla_Severidad_de_Enfermedad),
explode = 0.1,
col = colores,
border = "green",
labelcex = 0.7
)
# Tabla de frecuencia por contaminante
tabla_Género <- table(muestra50$Género_más_afectado)
# Obtener colores de RColorBrewer
colores <- brewer.pal(n = length(tabla_Género), name = "BuPu")
# Gráfico de pastel 3D con colores RColorBrewer
pie3D(
tabla_Género,
radius = 0.9,
main = "Tipo de Genero más afectado",
labels = names(tabla_Género),
explode = 0.1,
col = colores,
border = "white",
labelcex = 0.7
)
barplot(table(muestra50$Región),col="#66CDAA",main="Frecuencias de la variable Región")
barplot(table(muestra50$Tipo_de_Contaminante),col="#E066FF",main="Frecuencias de la variable tipo de contaminante")
barplot(table(muestra50$Industria_Cercana),col="#FFE7BA",main="Frecuencias de la variable Industria cercana")
barplot(table(muestra50$Tipo_de_Enfermedad.),
col = "#87CEFF",
main = "Frecuencias de la variable Tipo de Enfermedad",
cex.names = 0.6,
las = 1, # Gira las etiquetas de eje y
horiz = TRUE) # Gráfico horizontal
barplot(table(muestra50$Severidad_de_Enfermedad),
col = "#FFB90F",
main = "Frecuencias de la variable Severidad de Enfermedad")
barplot(table(muestra50$Género_más_afectado),
col = "#458B00",
main = "Frecuencias de la variable Género más afectado")
hist(muestra50$Concentracion,col="#556B2F",freq=F,main="Distribución de frecuencias de la concentración de contaminantes",xlab="Concentración",ylab="Frecuencias")
hist(muestra50$Suelo_pH,col="#AB82FF",freq=F,main="Distribución de frecuencias de la concentración de pH en el suelo",xlab="Concentración",ylab="Frecuencias")
hist(muestra50$Temperatura_C,col="#E0EEE0",freq=F,main="Distribución de frecuencias de la Temperatura C°",xlab="Concentración",ylab="Frecuencias")
hist(muestra50$Humedad,col="#EE1289",freq=F,main="Distribución de frecuencias de la Humedad",xlab="Concentración",ylab="Frecuencias")
hist(muestra50$Lluvia_mm,col="#00CDCD",freq=F,main="Distribución de frecuencias de la Lluvia",xlab="Concentración",ylab="Frecuencias")
hist(muestra50$Materia_Orgánica_del_Suelo,col="#FFE4E1",freq=F,main="Distribución de frecuencias de la concentración de Materia Orgánica",xlab="Concentración",ylab="Frecuencias")
boxplot(muestra50$Concentracion,col="#8B5F65",ylab="Concentraciodel contaminante",main="Diagrama de caja de Concentración")
stripchart(muestra50$Concentracion, method = "jitter", pch = 16, add = TRUE, col = "red", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Suelo_pH,col="#FFA07A",ylab="pH del",main="Diagrama de caja de Suelo pH")
stripchart(muestra50$Suelo_pH, method = "jitter", pch = 16, add = TRUE, col = "yellow", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Temperatura_C,col="#6B8E23",ylab="Temperatura C°",main="Diagrama de caja de Temperatura C°")
stripchart(muestra50$Temperatura_C, method = "jitter", pch = 16, add = TRUE, col = "brown", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Humedad,col="#A4D3EE",ylab="Humedad",main="Diagrama de caja de Humedad ")
stripchart(muestra50$Humedad, method = "jitter", pch = 16, add = TRUE, col = "green", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Lluvia_mm,col="#CD6839",ylab="Lluvia",main="Diagrama de caja de LLuvia")
stripchart(muestra50$Lluvia_mm, method = "jitter", pch = 16, add = TRUE, col = "black", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Materia_Orgánica_del_Suelo,col="#FF00FF",ylab="Materia orgánica",main="Diagrama de caja de Materia orgánica del suelo")
stripchart(muestra50$Materia_Orgánica_del_Suelo, method = "jitter", pch = 16, add = TRUE, col = "blue", cex = 0.3, vertical = TRUE)
boxplot(muestra50$Suelo_pH~ muestra50$Tipo_de_Contaminante,col="#FFE4E1",ylab="Suelo pH",main="Diagrama de caja de Suelo pH")
stripchart(muestra50$Suelo_pH~ muestra50$Tipo_de_Contaminante, method = "jitter", pch = 12, add = TRUE, col = "#6A5ACD", vertical = TRUE)
boxplot(muestra50$Concentracion~ muestra50$Tipo_de_Enfermedad.,col="#00E5EE",ylab="Suelo pH",main="Diagrama de caja de Concentración del contaminante")
stripchart(muestra50$Concentracion~ muestra50$Tipo_de_Enfermedad., method = "jitter", pch = 12, add = TRUE, col = "#EE3A8C", vertical = TRUE)
##Tablas de contingencia, conteos, proporción, porcentajes con respecto al total, porcentajes por fila y porcentajes por columna, diagramas de barras bivariados
# 1. Crear tabla cruzada y proporciones
TablaCruzada <- table(muestra50$Región, muestra50$Tipo_de_Contaminante)
TablaCruzada_propFilas <- prop.table(TablaCruzada, margin = 1)
TablaCruzada_propColumnas <- prop.table(TablaCruzada, margin = 2)
# 2. Definir colores (tantos como regiones)
colores <- rainbow(nrow(TablaCruzada)) # 1 color por región
# 3. Gráfico 1: Barras apiladas con etiquetas verticales
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2)) # espacio para etiquetas
barplot(TablaCruzada,
col = colores,
las = 2, # etiquetas verticales
cex.names = 0.8,
main = "Frecuencia de Contaminantes por Región",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada), fill = colores, cex = 0.8)
# 4. Gráfico 2: Mosaicplot claro y proporcionado
mosaicplot(TablaCruzada,
color = colores,
cex.axis = 0.4,
main = " Región vs Contaminante",
las = 1)
# Asegúrate de tener la tabla
TablaCruzada <- table(muestra50$Región, muestra50$Tipo_de_Contaminante)
TablaCruzada_propColumnas <- prop.table(TablaCruzada, margin = 2)
# Define colores (tantos como regiones)
colores6 <- rainbow(nrow(TablaCruzada)) # o usa tus propios colores
# Crear gráfico de proporciones por columna (apilado)
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2)) # margen inferior ampliado para etiquetas
barplot(TablaCruzada_propColumnas,
col = colores6,
las = 2, # etiquetas verticales en eje X
cex.names = 0.8,
main = "Proporción por Tipo de Contaminante (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada), fill = colores6, cex = 0.8)
# 1. Crear tabla cruzada y proporciones
TablaCruzada2 <- table(muestra50$Industria_Cercana, muestra50$Tipo_de_Enfermedad.)
TablaCruzada2_propFilas <- prop.table(TablaCruzada2, margin = 1)
TablaCruzada2_propColumnas <- prop.table(TablaCruzada2, margin = 2)
# Por ejemplo con RColorBrewer
library(RColorBrewer)
colores <- brewer.pal(n = min(nrow(TablaCruzada2), 8), name = "Set2")
# Gráfico de barras
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2))
barplot(TablaCruzada2,
col = colores,
las = 2,
cex.names = 0.8,
main = "Frecuencia de Enfermedades por Industria cercana",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada2), fill = colores, cex = 0.8)
# Mosaico
mosaicplot(TablaCruzada2,
color = colores,
cex.axis = 0.4,
main = "Industria vs Enfermedad",
las = 1)
# Gráfico de proporciones por columnas
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2))
barplot(prop.table(TablaCruzada2, margin = 2),
col = colores,
las = 2,
cex.names = 0.8,
main = "Proporción por Tipo de Industria (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada2), fill = colores, cex = 0.8)
# 1. Crear tabla cruzada y proporciones
TablaCruzada3 <- table(muestra50$Severidad_de_Enfermedad , muestra50$Género_más_afectado)
TablaCruzada3_propFilas <- prop.table(TablaCruzada3, margin = 1)
TablaCruzada3_propColumnas <- prop.table(TablaCruzada3, margin = 2)
# Por ejemplo con RColorBrewer
library(RColorBrewer)
colores <- brewer.pal(n = min(nrow(TablaCruzada3), 8), name = "Dark2")
# Gráfico de barras
par(mfrow = c(1, 2), mar = c(8, 4, 4, 2))
barplot(TablaCruzada3,
col = colores,
las = 2,
cex.names = 0.8,
main = "Frecuencia de Enfermedades por Industria cercana",
ylab = "Frecuencia")
legend("topright", legend = rownames(TablaCruzada3), fill = colores, cex = 0.8)
# Mosaico
mosaicplot(TablaCruzada3,
color = colores,
cex.axis = 0.7,
main = "Industria vs Enfermedad",
las = 1)
# Gráfico de proporciones por columnas
par(mfrow = c(1, 1), mar = c(8, 4, 4, 2))
barplot(prop.table(TablaCruzada3, margin = 2),
col = colores,
las = 2,
cex.names = 0.8,
main = "Proporción por Tipo de Industria (columnas)",
ylab = "Proporción")
legend("topright", legend = rownames(TablaCruzada3), fill = colores, cex = 0.8)
plot(muestra50$Concentracion,
muestra50$Suelo_pH,
main = "Diagrama de Dispersión: Concentración vs Suelo pH",
xlab = "Concentración",
ylab = "Suelo pH",
col = "blue", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
plot(muestra50$Temperatura_C,
muestra50$Humedad,
main = "Diagrama de Dispersión: Temperatura C° vs Humedad",
xlab = "Temperatura C°",
ylab = "Humedad",
col = "#40E0D0", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
plot(muestra50$Lluvia_mm,
muestra50$Materia_Orgánica_del_Suelo,
main = "Diagrama de Dispersión: Lluvia vs Materia Orgánica del Suelo",
xlab = "Lluvia",
ylab = "Materia Orgánica del Suelo",
col = "#FF3E96", # color de los puntos
pch = 19, # tipo de punto sólido
cex = 1.2, # tamaño del punto
bg = "lightblue")
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50,
diagonal = list(method = "boxplot"))
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50,
diagonal = list(method = "histogram"))
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Región, by.groups=T)
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit smooth
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Tipo_de_Contaminante, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Industria_Cercana, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Tipo_de_Enfermedad., by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Severidad_de_Enfermedad, by.groups=T)
scatterplotMatrix(~ Concentracion + Suelo_pH + Temperatura_C + Humedad + Lluvia_mm + `Materia_Orgánica_del_Suelo`,
data = muestra50, groups=muestra50$Género_más_afectado, by.groups=T)
MatrizCor <- cor(muestra50[, c(3, 4, 5, 6, 7, 9)])
MatrizCor
## Concentracion Suelo_pH Temperatura_C Humedad
## Concentracion 1.0000000 0.25963914 -0.10320199 -0.13290964
## Suelo_pH 0.2596391 1.00000000 0.07516461 0.20571126
## Temperatura_C -0.1032020 0.07516461 1.00000000 -0.03908819
## Humedad -0.1329096 0.20571126 -0.03908819 1.00000000
## Lluvia_mm 0.1753748 -0.10017351 0.08000613 -0.06838996
## Materia_Orgánica_del_Suelo -0.0886731 -0.26543464 -0.20661093 -0.18595552
## Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion 0.17537485 -0.08867310
## Suelo_pH -0.10017351 -0.26543464
## Temperatura_C 0.08000613 -0.20661093
## Humedad -0.06838996 -0.18595552
## Lluvia_mm 1.00000000 -0.07499781
## Materia_Orgánica_del_Suelo -0.07499781 1.00000000
MatrizCov=cov(muestra50[, c(3, 4, 5, 6, 7, 9)])
MatrizCov
## Concentracion Suelo_pH Temperatura_C Humedad
## Concentracion 30911609.69 279332.574 -54022.4629 -145991.4482
## Suelo_pH 279332.57 37443.912 1369.3976 7864.2767
## Temperatura_C -54022.46 1369.398 8864.4343 -727.0784
## Humedad -145991.45 7864.277 -727.0784 39031.9494
## Lluvia_mm 1170941.01 -23278.252 9045.9804 -16225.9208
## Materia_Orgánica_del_Suelo -158050.78 -16466.153 -6236.2392 -11777.7722
## Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion 1170941.01 -158050.779
## Suelo_pH -23278.25 -16466.153
## Temperatura_C 9045.98 -6236.239
## Humedad -16225.92 -11777.772
## Lluvia_mm 1442161.13 -28873.499
## Materia_Orgánica_del_Suelo -28873.50 102775.098
MatrizVar=var(muestra50[, c(3, 4, 5, 6, 7, 9)])
MatrizVar
## Concentracion Suelo_pH Temperatura_C Humedad
## Concentracion 30911609.69 279332.574 -54022.4629 -145991.4482
## Suelo_pH 279332.57 37443.912 1369.3976 7864.2767
## Temperatura_C -54022.46 1369.398 8864.4343 -727.0784
## Humedad -145991.45 7864.277 -727.0784 39031.9494
## Lluvia_mm 1170941.01 -23278.252 9045.9804 -16225.9208
## Materia_Orgánica_del_Suelo -158050.78 -16466.153 -6236.2392 -11777.7722
## Lluvia_mm Materia_Orgánica_del_Suelo
## Concentracion 1170941.01 -158050.779
## Suelo_pH -23278.25 -16466.153
## Temperatura_C 9045.98 -6236.239
## Humedad -16225.92 -11777.772
## Lluvia_mm 1442161.13 -28873.499
## Materia_Orgánica_del_Suelo -28873.50 102775.098
Conclusiones Generales
A partir del análisis de los diferentes gráficos y representaciones estadísticas, se obtuvieron las siguientes conclusiones:
Diagramas Circulares 3D y Diagramas de Barras En la mayoría de los gráficos, incluso con una base de 3.000 datos, se observa una distribución relativamente uniforme. Sin embargo, existen excepciones importantes. Por ejemplo, en la variable Severidad de la enfermedad que padece la población, el porcentaje correspondiente a casos graves es notablemente mayor. Asimismo, en la variable Tipo de género más afectado, ambos géneros presentan porcentajes elevados, sin una diferencia marcada entre ellos.
Tablas de Frecuencia Las tablas de frecuencia tienden a mostrar una distribución similar entre sí, independientemente del valor máximo que puedan presentar. Esto sugiere una homogeneidad general en la dispersión de los datos categóricos.
Histogramas de Frecuencia Absoluta
Concentración de Contaminante: Se observa que a menor concentración, mayor es la frecuencia absoluta, lo que indica una alta presencia de valores bajos en la muestra.
Concentración de pH en el Suelo: En los intervalos con concentraciones mayores a 100 y menores a 450, no se registran frecuencias absolutas, lo cual representa una discontinuidad en la distribución.
Concentración de Materia Orgánica: Se repite el patrón donde a menor concentración, mayor es la frecuencia absoluta.
En general, en algunas variables se observa que las frecuencias tienden a ser similares independientemente de la concentración, lo que indica una posible distribución uniforme en ciertos casos.
Diagramas de Caja La mayoría de los diagramas de caja presentan una dispersión de datos similar. No obstante, se identifican diferencias significativas en dos casos:
Diagrama de Caja de pH del Suelo: Se evidencia una discontinuidad o espacio vacío en un intervalo específico de concentración, lo que sugiere ausencia de datos en ese rango.
Esta misma situación se repite en otro gráfico relacionado con el pH del suelo, reforzando la presencia de un patrón irregular en la distribución de esta variable.
Variables Cualitativas Las tablas correspondientes a las variables cualitativas muestran una distribución equitativa entre las distintas categorías, lo cual indica una representación balanceada dentro de los datos analizados.