Empezamos llamando las librerias necesarias para este proceso
library("easypackages")
lib_req<-c("lubridate","dplyr","visdat","missMDA","mice","DMwR2","editrules", "corrplot","paletteer","tidyverse","rstatix","ggpubr")# Listado de librerias requeridas por el script
easypackages::packages(lib_req)
Corremos esa parte del código

https://drive.google.com/file/d/1Pj1IJ2m1xxOnVSimA139KArnG3RdZfNQ/view

https://drive.google.com/file/d/1WGP88ANhr9oXcUjRjzs5tPRNI54r4O0H/view
A continuación, se llaman las librerias “readr” y “here”, para asi continuar con la lectura de Datos en R
library(readr)
library(here)
huella.Completo <- read_tsv(here("datos","BD_huella.txt"))
names(huella.Completo)
dim(huella.Completo)
str(huella.Completo)
Corremos esa parte del código

https://drive.google.com/file/d/1zdR19ZuHQUWeF6Mngtt0v8k8QzOa96Xz/view

https://drive.google.com/file/d/1Itpej2usNkChaBHa8_AiHQeZElehVNwq/view
Observando las etiquetas en algunas de las variables tipo Factor
table(huella.Completo$genero)
table(huella.Completo$zona)
table(huella.Completo$grado)
table(huella.Completo$comp_HHD)
table(huella.Completo$comp_HHI)
Corremos esa parte del código


https://drive.google.com/file/d/1hucr-L5t60nhQk8LMgMNsAfDuRGVRtNH/view
https://drive.google.com/file/d/1_WBjuSThzY7WUzUQT4Y92_fOJ-LVzKHR/view
Declaración de niveles correctos para las variables tipo Factor
level_genero <- c("1"="femenino", femenino="femenino", Femenino="femenino", FEMENINO="femenino","2"="masculino", masculino="masculino",Masculino="masculino",MASCULINO="masculino")
level_zona <- c("1"="urbano", Urbano="urbano", URBANO="urbano", "2"="rural", Rural="rural",RURAL="rural")
level_grado <- c("6"="sexto",sexto="sexto",SEXTO="sexto","7"="séptimo", septimo="séptimo",SEPTIMO="séptimo", "8"="octavo", octavo="octavo", OCTAVO="octavo","9"="noveno", noveno="noveno", NOVENO="noveno", "10"="decimo", decimo="decimo", DECIMO="decimo", "11"="once", once="once", ONCE="once")
level_comp_HHD <- c(Lavado.ropa="lavado.ropa", Riego.jardin="riego.jardin", uso.baño="uso.baño", Uso.baño="uso.baño", USO.BAÑO="uso.baño", Uso_baño="uso.baño", uso.cocina="uso.cocina")
level_comp_HHI <- c(Café="Café", CAFÉ="Café", Carne="Carne", CARNE="Carne", Fruta="Fruta")
huella.Completo2 <- transform(huella.Completo,
genero=factor(dplyr::recode(genero, !!!level_genero)),
zona=factor(dplyr::recode(zona, !!!level_zona)),
grado=factor(dplyr::recode(grado, !!!level_grado)),
comp_HHD=factor(dplyr::recode(comp_HHD, !!!level_comp_HHD)),
comp_HHI=factor(dplyr::recode(comp_HHI, !!!level_comp_HHI)),
ID=as.integer(huella.Completo$ID),
edad=as.integer(huella.Completo$edad),
HHD=as.integer(huella.Completo$HHD),
HHI=as.integer(huella.Completo$HHI),
per.hog=as.integer(huella.Completo$per.hog)
)
str(huella.Completo2)
dim(huella.Completo2)
summary(huella.Completo2)
Corremos esa parte del código

https://drive.google.com/file/d/1FgUj93Uexuodv1jkUK-huMzdsowFyWFy/view

https://drive.google.com/file/d/1Y9IDbrsSKiXc5xsAKDV7Z53JONrw4jxM/view
Creación del archivo “consistencia.txt” con las siguientes ecuaciones:

https://drive.google.com/file/d/1k4ZADEIo_Yuktu6HlnB5VrOyUVGobOUM/view
Carga del archivo de reglas de validación
Rules <- editrules::editfile("consistencia.txt")
Corremos esa parte del código

https://drive.google.com/file/d/1KJ_ohfaBzKeJHffrgGQ-9HVCn94zf0JJ/view
Conexión entre las reglas
windows()
plot(Rules)
Corremos esa parte del código

https://drive.google.com/open?id=1dQiYbIePusWHMb9wu4qUgcMrqn6pWUdd&authuser=0

https://drive.google.com/file/d/1rzoztFhXu31ywQ0gCAgAzQe7M4vvz1RX/view
Verificación de las reglas sobres los datos
editrules::violatedEdits(Rules, huella.Completo2)
Valid_Data = editrules::violatedEdits(Rules, huella.Completo2)
summary(Valid_Data)

https://drive.google.com/file/d/16U81yaIIpccrgtZw_dEFdCL-ei8e0VgX/view

https://drive.google.com/file/d/1xY47K-l9pyjt_C56ypA0SL-hR6Ti6KKR/view
visualizacion del diagnostico
windows()
plot(Valid_Data)
Corremos esa parte del código

https://drive.google.com/file/d/1bu6lJF5koeVlE38xh7u8FbJkXqVDZH45/view

https://drive.google.com/file/d/1OKtJEvK43U40tu_Nhidx3c4-hOf0LV4R/view
Identificar que observaciones presentan violaciones a las reglas y reemplazarlas por NA
which(Valid_Data)
matrix(1:960,nrow=120,ncol = 8)
Datos_malos <- huella.Completo2$per.hog[c(5,31,74,76,90,105,110)]
Datos_malos
Corremos esa parte del código

https://drive.google.com/file/d/1tzm1TrE72tNgsWKG8DabApcMvyarzben/view

https://drive.google.com/file/d/1ypbNwAkVIuIl44Ce3Yv_aX_-aaL6x1mE/view
Convertir los datos que no cumplen las ecuaciones de consistencia a NA
huella.Completo2$per.hog <- replace(huella.Completo2$per.hog,huella.Completo2$per.hog>=12 ,NA) huella.Completo2$per.hog <- replace(huella.Completo2$per.hog,huella.Completo2$per.hog==1 ,NA) summary(huella.Completo2)
Corremos esa parte del código

https://drive.google.com/file/d/1rUnfS4EfQkPKSCs-LH45OJues0TccWBc/view
is.na(huella.Completo2)
x11()
visdat::vis_miss(huella.Completo2)
apply(is.na(huella.Completo2), 2, which)
Corremos esa parte del código

https://drive.google.com/file/d/1koaC6Vs0QBPBHxrfLapRUYF-ahi3jBHa/view

https://drive.google.com/file/d/14gTkyBSS-8jroI3EIIY1P-ez-vebgrBM/view

https://drive.google.com/file/d/1wIrDahPmYwpxsfr54OMK2WfjesNwFwsA/view
id.out.uni=function(x,method=c("Standarized","Tukey","Cook")){
id.out=NULL
if(method=="Standarized"){id.out=which(abs(scale(x))>3)}
else if(method=="Tukey"){id.out=which(x%in%(boxplot.stats(x)$out))}
else if(method=="Cook"){model=lm(x~1);CD=cooks.distance(model)
id.out=unname(which(CD>4*mean(CD)))}
return(id.out)
}
id.out.uni(huella.Completo2$edad,method="Tukey")
id.out.uni(huella.Completo2$HHD,method="Tukey")
id.out.uni(huella.Completo2$HHI,method="Tukey")
id.out.uni(huella.Completo2$per.hog,method="Tukey")
Corremos esta parte del código

https://drive.google.com/file/d/1jovkq5cPo-aA_nfuTK53g5xYdR_xZnZW/view
Visualizar
windows(20,10)
par(mfrow=c(1,4))
lapply(huella.Completo2[,-c(1,3,4,5,8,9)],boxplot,col="Blue")
Corremos el código

https://drive.google.com/file/d/11wvW-EDQ9bbmw5w5BKijcGV_bPfr3eDJ/view

https://drive.google.com/file/d/1Azuxq8Cdc2ktpxwzmkP5GCp5YZ26UE9M/view
Identificar los Datos Atipicos
out_Tukey = lapply(huella.Completo2[,c(1,2,6,7,10)],id.out.uni,method="Tukey")
out_Tukey[["HHD"]]
out_Tukey[["per.hog"]]
Datos_atipicos_HHD <- huella.Completo2$HHD[c(27,66,68,84,110)]
Datos_atipicos_HHD
Datos_atipicos_per.hog <-huella.Completo2$per.hog[47]
Datos_atipicos_per.hog
Corremos esa parte del código

https://drive.google.com/file/d/1iCOgfvfOoL3A61VXs7tyHTp5M4NBVxxU/view
Convertir los datos atipicos en NA
huella.Completo2$per.hog <- replace(huella.Completo2$per.hog,huella.Completo2$per.hog==9 ,NA)
huella.Completo2$HHD <- replace(huella.Completo2$HHD,huella.Completo2$HHD>=300 ,NA)
summary(huella.Completo2)
Corremos esa parte del código

https://drive.google.com/file/d/18YAQtNf6MZElEZmfz5N5dw5sywaUSU_U/view
Función que evalua e identifica los datos faltantes por variable e individuo.
miss<-function(huella.Completo2,plot=T){
n=nrow(huella.Completo2);p=ncol(huella.Completo2)
names.obs<-rownames(huella.Completo2)
nobs.comp=sum(complete.cases(huella.Completo2))
Obs.comp=which(complete.cases(huella.Completo2))
nobs.miss = sum(!complete.cases(huella.Completo2))
Obs.miss=which(!complete.cases(huella.Completo2))
Datos.NA<-is.na(huella.Completo2)
Var_Num<- sort(colSums(Datos.NA),decreasing=T)
Var_per<-round(Var_Num/n,3)
Obs_Num<-rowSums(Datos.NA)
names(Obs_Num)<-names.obs
Obs_Num<-sort(Obs_Num

https://drive.google.com/file/d/1oIAsSIXmhiYNEX592CVl_1JEx8RzBApF/view

https://drive.google.com/file/d/17rMbzmCEAXvVR1qdm9sue5Y5tEI3JoFY/view
imputación por KNN
Datos_ImputKNN<-DMwR2::knnImputation(huella.Completo2, k=5, scale=T, meth = "weighAvg")
str(Datos_ImputKNN)
clean_huella <- transform(Datos_ImputKNN,
HHD=as.integer(Datos_ImputKNN$HHD),
HHI=as.integer(Datos_ImputKNN$HHI),
per.hog=as.integer(Datos_ImputKNN$per.hog)
)
str(clean_huella)
summary(clean_huella)
write.csv(clean_huella,file="clean_huella.csv")
Corremos esa parte del código


https://drive.google.com/file/d/1A9c3Wv220DOzZ47eMiQ19f1JS2btIyhX/view
https://drive.google.com/file/d/1LvVJxx8hq0m2m9u_WccqGOdGc6Jx13DA/view
i.Genere una nueva variable denominada huella hídrica total (HHT), que equivale a la suma entre HHD y HHI
HHT <- clean_huella$HHD + clean_huella$HHI
clean_huella <- dplyr::mutate(clean_huella, HHT)
Corremos esa parte del código

https://drive.google.com/file/d/1rrz4kPUPzzOnJOKQM-CMXviBGlZ6cPri/view
ii.Sobre la nueva variable calculada (HHT), clasifíquela (HHT_clas) en 3 grupos que cumplan con las siguientes condiciones:
clean_huella <- dplyr::mutate(clean_huella,
HHT_clas= ifelse(HHT > 1887,"alto",
ifelse(HHT<=1789,"bajo","medio"))
)
clean_huella <- transform(clean_huella,
HHT_clas=as.factor(clean_huella$HHT_clas)
)
Corremos esa parte del código

https://drive.google.com/file/d/1vDmHxyEL1ZmsW02OC1ObuYZgy4CEMRrn/view
windows()
par(mfrow=c(1,3))
barplot(table(clean_huella$HHT_clas), main="Clases de Huella Hídrica total",names=c("alto","bajo","medio"),cex.names=1.2,col="purple",xlab = "Clases", ylab = "Frecuencia", ylim = c(0,120))
barplot(table(clean_huella$comp_HHD), main="Componentes Huella Hídrica Directa",names=c("lavado.ropa","riego.jardin","uso.baño", "Uso.cocina"),cex.names=1.2,col="darkgreen",xlab = "Componentes", ylab = "Frecuencia",ylim = c(0,120))
barplot(table(clean_huella$comp_HHI), main="Componentes Huella Hídrica Indirecta",names=c("Café","Carne","Fruta"),cex.names=1.2,cex.axis = 1.5 ,col="orange",xlab = "Componentes", ylab = "Frecuencia",ylim = c(0,120))
Corremos esa parte del código

https://drive.google.com/file/d/1av2Jkh1CQsARZfssHhIoReMKUEKfe2Id/view

https://drive.google.com/file/d/1ZTm-5bAkwDwMPw7AVvFRjD57o7-DvY_E/view
ii. Presente en una sola ventana grafica el comportamiento de los puntajes de la huella hídrica directa e indirecta por cada uno de los factores de estudio (sexo, grado escolar y zona).
windows()
par(mfrow=c(3,2))
boxplot(clean_huella$HHD~clean_huella$genero,names=rep(c("femenino","masculino")),main="Comportaiento de HHD respecto al sexo",ylab = "genero",xlab = "Huella Hídirica directa",horizontal = T,cex.names=0.8,col=rep(c("lightpink","lightblue")))
boxplot(clean_huella$HHI~clean_huella$genero,names=rep(c("femenino","masculino")),main="Comportaiento de HHI respecto al sexo",ylab = "genero",xlab = "Huella Hídirica indirecta",horizontal = T,cex.names=0.8,col=rep(c("lightpink","lightblue")))
boxplot(clean_huella$HHD~clean_huella$grado,names=rep(c("sexto","séptimo","octavo","noveno","decimo","once")),main="Comportaiento de HHD respecto al grado escolar",ylab = "grado",xlab = "Huella Hídirica directa",horizontal = T,cex.names=0.8,col=c("#B4EEB4","#FFD700","#00CDCD","#CD5C5C","#F0FFFF","#CD0000"))
boxplot(clean_huella$HHI~clean_huella$grado,names=rep(c("sexto","séptimo","octavo","noveno","decimo","once")),main="Comportaiento de HHI respecto al grado escolar",ylab = "grado",xlab = "Huella Hídirica indirecta",horizontal = T,cex.names=0.8,col=c("#B4EEB4","#FFD700","#00CDCD","#CD5C5C","#F0FFFF","#CD0000"))
boxplot(clean_huella$HHD~clean_huella$zona,names=rep(c("rural","urbano")),main="Comportaiento de HHD respecto a la zona",ylab = "zona",xlab = "Huella Hídirica directa",horizontal = T,cex.names=0.8,col=rep(c("lightgreen","lightgray")))
boxplot(clean_huella$HHI~clean_huella$zona,names=rep(c("rural","urbano")),main="Comportaiento de HHI respecto a la zona",ylab = "zona",xlab = "Huella Hídirica indirecta",horizontal = T,cex.names=0.8,col=rep(c("lightgreen","lightgray")))
Corremos esa parte del código

https://drive.google.com/file/d/1yGeQ0QOZFkUXFNzW23uFwuJXAt4c2wey/view?usp=drive_open

https://drive.google.com/file/d/1SNGV_xd1z_VIUWC94rzOPvrw4WY8jOoT/view
iii. Presente un resumen de los principales indicadores descriptivos de las variables cuantitativas por cada uno de los factores (sexo, grado escolar y zona).
media de las variables cuantitativas respecto al genero
clean_huella %>%
group_by(genero) %>%
summarize(media.edad = mean(edad),
media.per.hog = mean(per.hog),
media.HHD = mean(HHD),
media.HHI = mean(HHI),
media.HHT = mean(HHT))
Corremos esa parte del código

https://drive.google.com/file/d/1iR9z0azADblcbzegh742EU_xVT7roRNi/view
media de las variables cuantitativas respecto al grado
clean_huella %>%
group_by(grado) %>%
summarize(media.edad = mean(edad),
media.per.hog = mean(per.hog),
media.HHD = mean(HHD),
media.HHI = mean(HHI),
media.HHT = mean(HHT))%>%
arrange(factor(grado, levels = c("sexto", "séptimo", "octavo", "noveno", "decimo", "once")))
Corremos esa parte del código

https://drive.google.com/file/d/1Zip_VKu4anFn4BY9zzHOiDtXGw0MLHMT/view
media de las variables cuantitativas respecto a la zona
clean_huella %>%
group_by(zona) %>%
summarize(media.edad = mean(edad),
media.per.hog = mean(per.hog),
media.HHD = mean(HHD),
media.HHI = mean(HHI),
media.HHT = mean(HHT))
Corremos esa parte del código

https://drive.google.com/file/d/1h25RGk611wIYoOkOndim73abnUmi7oEt/view
Cuartiles de las variables cuantitativas respecto al genero
tapply(clean_huella$edad,clean_huella$genero, quantile)
tapply(clean_huella$HHD,clean_huella$genero, quantile)
tapply(clean_huella$HHI,clean_huella$genero, quantile)
tapply(clean_huella$per.hog,clean_huella$genero, quantile)
tapply(clean_huella$HHT,clean_huella$genero, quantile)
Corremos esa parte del código

https://drive.google.com/file/d/1kV2IGqYW2TgQpdupQeG5doiL_eyj33I3/view
Cuartiles de las variables cuantitativas respecto al grado
tapply(clean_huella$edad,clean_huella$grado, quantile)
tapply(clean_huella$HHD,clean_huella$grado, quantile)
tapply(clean_huella$HHI,clean_huella$grado, quantile)
tapply(clean_huella$per.hog,clean_huella$grado, quantile)
tapply(clean_huella$HHT,clean_huella$grado, quantile)
Corremos esa parte del código

https://drive.google.com/file/d/1ziJwSk5r_u6ZT4EeXbw2sH1_dJsWaFmE/view
Cuartiles de las variables cuantitativas respecto a la zona
tapply(clean_huella$edad,clean_huella$zona, quantile)
tapply(clean_huella$HHD,clean_huella$zona, quantile)
tapply(clean_huella$HHI,clean_huella$zona, quantile)
tapply(clean_huella$per.hog,clean_huella$zona, quantile)
tapply(clean_huella$HHT,clean_huella$zona, quantile)

https://drive.google.com/file/d/12FyD_oN-upykrfU7DiYoj7ol6NaZoHjs/view
Desviación estándar de las variables cuantitativas respecto al genero
clean_huella %>%
group_by(genero) %>%
summarize(SD.edad = sd(edad),
SD.per.hog = sd(per.hog),
SD.HHD = sd(HHD),
SD.HHI = sd(HHI),
SD.HHT = sd(HHT))
corremos esa parte del código

https://drive.google.com/file/d/133NWILR13BpWKb0U7MCDzB299bXmdFRm/view
Desviación estándar de las variables cuantitativas respecto al grado
clean_huella %>%
group_by(grado) %>%
summarize(SD.edad = sd(edad),
SD.per.hog = sd(per.hog),
SD.HHD = sd(HHD),
SD.HHI = sd(HHI),
SD.HHT = sd(HHT))%>%
arrange(factor(grado, levels = c("sexto", "séptimo", "octavo", "noveno", "decimo", "once")))
Corremos esa parte del código

https://drive.google.com/file/d/1y-Ga4bUlHj9sIdK7hZ_-QwJtOcqPHXYH/view
Desviación estándar de las variables cuantitativas respecto a la zona
clean_huella %>%
group_by(zona) %>%
summarize(SD.edad = sd(edad),
SD.per.hog = sd(per.hog),
SD.HHD = sd(HHD),
SD.HHI = sd(HHI),
SD.HHT = sd(HHT))
Corremos esa parte del código

https://drive.google.com/file/d/1qrKZ2sVm9c9iJcfiOyq2_jlDPW761Ob1/view
iv. Adicionalmente se requiere visualizar, la estructura de correlación entre las variables huella hídrica total y edad del estudiante. ¿Cree usted que la edad está relacionada con la cantidad de huella hídrica?.
ggscatter(data = clean_huella, x = "edad", y = "HHT",
add = "reg.line", conf.int = TRUE,
cor.coef = TRUE, cor.method = "pearson",
xlab = "edad", ylab = "huella hidrica total")
Corremos esa parte del código

https://drive.google.com/file/d/1XZHGizGsX94DT45qBguwg8I-WSq5rFUN/view

https://drive.google.com/file/d/1VMy3CZ1tEi-5rUWuK5uHC1vfgRMaMUnz/view
Según el nivel de coorelación de pearson la relacion entre la edad y la cantidad de huella hidrica es negativa 6.5% lo que significa que su nivel de relacion es muy baja, lo que hace sentido ya que la huella hidrica es un indicador medioambiental que define el volumen total de agua dulce utilizado para producir los bienes y servicios que habitualmente consumimos . Es una variable que nos dice el agua que nos cuesta fabricar un producto. Entonces no se puede ver ninguna relacion con la edad de una persona