Descripción del trabajo

En el siguiente documento html vamos realizar un análisis descríptivo del conjunto de datos niños.csv en el cual tenemos las siguientes variables:

En primer lugar vamos a empezar a leer los datos de trabajo y hacer un análisis descríptivo básico

library("ggplot2")
setwd("~/Escritorio/trabajos master/exploratorio")
datos=read.csv2("niños4.csv",dec=".")
summary(datos)
##      sexo           edad            peso           talla      
##  hembra:1118   Min.   : 5.42   Min.   :17.00   Min.   :110.0  
##  varon :1227   1st Qu.:10.83   1st Qu.:35.00   1st Qu.:141.9  
##                Median :13.92   Median :48.50   Median :156.0  
##                Mean   :13.33   Mean   :47.44   Mean   :153.5  
##                3rd Qu.:15.83   3rd Qu.:58.50   3rd Qu.:165.5  
##                Max.   :19.00   Max.   :93.00   Max.   :188.8
pairs(datos[,2:4],col=datos$sexo)

Gráfico de la edad frente a talla diferenciando por sexos y con una leyenda.

color.sexo= c("blue","red")[datos$sexo]
pch.sexo= c(22,19)[datos$sexo]
plot(datos$edad,datos$talla,col=color.sexo,pch=pch.sexo,xlab="edad (años)",ylab="talla (cm)",main="Talle en función de la edad")
legend(5,190,legend=levels(datos$sexo),col= c("blue","red"),pch=c(22,19))

Ver que los varones mayores de 18 años siguen una distribución normal.

v_adultos= datos[datos$edad>18&datos$sexo=="varon",]
x=v_adultos$talla
hist(v_adultos$talla,col="grey",main="Varones mayores de 18",xlab="altura",prob=TRUE)
#ggplot(v_adultos,aes(x=talla))+geom_histogram()
lines(density(x),col="blue",lwd=2)
n= length(x)
media=mean(x) 
var= sd(x)
alea= rnorm(n,media,var)
lines(density(alea),col="red",lwd=2,lty="dotted")
legend(155,0.05,legend= c("datos reales","normal aleatoria"),col= c("blue","red"),lwd=c(2,2))

boxplot(x)

# Es simétrico no podemos descargar normalidad
plot(ecdf(x),col="blue",xlab="altura")
lines(ecdf(alea),col="red")
legend(155,1,legend= c("datos reales","normal aleatoria"),col= c("blue","red"),lwd=c(2,2))

qqnorm(x)
qqline(x)

library("tseries")
ks.test(v_adultos$talla,"pnorm",mean(v_adultos$talla),sd(v_adultos$talla))
## Warning in ks.test(v_adultos$talla, "pnorm", mean(v_adultos$talla),
## sd(v_adultos$talla)): ties should not be present for the Kolmogorov-Smirnov
## test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  v_adultos$talla
## D = 0.062106, p-value = 0.9893
## alternative hypothesis: two-sided
shapiro.test(v_adultos$talla)
## 
##  Shapiro-Wilk normality test
## 
## data:  v_adultos$talla
## W = 0.98831, p-value = 0.8933
jarque.bera.test(v_adultos$talla)
## 
##  Jarque Bera Test
## 
## data:  v_adultos$talla
## X-squared = 0.18879, df = 2, p-value = 0.9099
library("goftest")
cvm.test(v_adultos$talla,"pnorm",mean(v_adultos$talla),sd(v_adultos$talla))
## 
##  Cramer-von Mises test of goodness-of-fit
##  Null hypothesis: Normal distribution
## 
## data:  v_adultos$talla
## omega2 = 0.02543, p-value = 0.9894
ad.test(v_adultos$talla,"pnorm",mean(v_adultos$talla),sd(v_adultos$talla))
## 
##  Anderson-Darling test of goodness-of-fit
##  Null hypothesis: Normal distribution
## 
## data:  v_adultos$talla
## An = 0.19065, p-value = 0.9928

Todos los test nos permiten aceptar la hipótesis nula


### Comparar con los datos anteriores los cuantiles empíricos con los cuantiles en la distribución normal. ###

orden= c(0.01,0.05,0.5,0.95,0.99)
empirico= quantile(v_adultos$talla,orden)
normal= qnorm(orden, mean(v_adultos$talla),sd(v_adultos$talla))
data.frame(empirico,normal )
##     empirico   normal
## 1%    158.20 157.6585
## 5%    163.55 162.3181
## 50%   173.70 173.5647
## 95%   184.60 184.8113
## 99%   187.15 189.4709

Categorización de la variable edad en varios intervalos

datos$edad2= cut(datos$edad,breaks=seq(6,19,by=1)) 

Creando una tabla con los intervalos anteriores donde calculamos los valores medios de la talla diferenciando por sexos

tabla= tapply(datos$talla,list(datos$edad2,datos$sexo),mean)
  
  round(tabla,1)
##         hembra varon
## (6,7]    119.5 121.4
## (7,8]    123.5 126.0
## (8,9]    129.3 131.5
## (9,10]   134.5 136.6
## (10,11]  141.4 141.5
## (11,12]  145.4 144.9
## (12,13]  153.3 150.8
## (13,14]  156.4 158.6
## (14,15]  158.7 165.8
## (15,16]  160.3 169.6
## (16,17]  160.7 173.0
## (17,18]  160.4 173.9
## (18,19]  159.9 173.6

Grafico de cajas para ver la distribución de talla en función de la edad diferenciando por sexos

nombrar= numeric(26)
cont=0
for(i in 1:26){
  if(i%%2==0){nombrar[i]=rep("",1)}
  else{cont= cont+1
       nombrar[i]= levels(datos$edad2)[cont]}
  
}

boxplot(datos$talla~datos$sexo:datos$edad2,names=nombrar,col=c(4,2))
legend(6,180,inset=0.05,legend=levels(datos$sexo),col=c("blue","red"),pch=15)

Calcular el índice de masa corporal con los datos originales

talla_m= datos$talla/100
IMC= datos$peso/talla_m^2
datos= cbind(datos,IMC)

Calcular el porcentaje de personas con sobrepeso, y obesidad en el grupo de mayores de edad, y luego haz lo mismo pero diferenciando por sexos

datos2= datos[datos$edad>=18,]
datos2$niveles= cut(datos2$IMC,breaks=c(16,25,30,40),include.lowest=TRUE,right=FALSE,labels=c("peso normal","sobrepeso","obesidad"))
tabla3= prop.table(table(datos2$niveles))*100
tabla4= prop.table(table(datos2$niveles,datos2$sexo))*100
tabla5= prop.table(table(datos2$niveles,datos2$sexo),2)*100
tabla3
## 
## peso normal   sobrepeso    obesidad 
##   90.825688    9.174312    0.000000
tabla4
##              
##                  hembra     varon
##   peso normal 40.366972 50.458716
##   sobrepeso    2.752294  6.422018
##   obesidad     0.000000  0.000000
tabla5
##              
##                  hembra     varon
##   peso normal 93.617021 88.709677
##   sobrepeso    6.382979 11.290323
##   obesidad     0.000000  0.000000

Obtener una tabla donde se muestre el cuantil de sobrepeso y obesidad para cada grupo de edad.

cuantil_sobrepeso= tapply(datos$IMC,datos$edad2,quantile,0.85)
cuantil_obesidad= tapply(datos$IMC,datos$edad2,quantile,0.95)
datos3= data.frame(cuantil_sobrepeso,cuantil_obesidad)
datos3
##         cuantil_sobrepeso cuantil_obesidad
## (6,7]            17.70735         20.93410
## (7,8]            17.78346         19.83471
## (8,9]            18.69591         20.37424
## (9,10]           19.10916         21.37068
## (10,11]          21.08283         22.83658
## (11,12]          21.03377         22.80175
## (12,13]          21.88775         23.70428
## (13,14]          22.96207         26.31227
## (14,15]          22.93988         25.09479
## (15,16]          23.34481         25.22301
## (16,17]          23.88638         25.47231
## (17,18]          24.41027         26.43594
## (18,19]          24.68859         27.57361

Representar graficamente los valores obtenidos en la tabla anterior

plot(datos$IMC~datos$edad2,xlab="edad2",ylab="IMC",col="grey")
lines(cuantil_sobrepeso,col="blue",lwd=2)
lines(cuantil_obesidad,col="red",lwd=2)

Comprobar de manera empírica para el grupo (18,19] los quantiles de sobrepeso y obesidad estan entre 25 y 30

A la vista del gráfico anterior es claro que el sobrepeso esta muy próximo del 25 mientreas que en el caso de la obesidad se aleja considerablemente