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:
sexo
edad
peso
talla
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)
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))
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
datos$edad2= cut(datos$edad,breaks=seq(6,19,by=1))
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
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)
talla_m= datos$talla/100
IMC= datos$peso/talla_m^2
datos= cbind(datos,IMC)
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
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
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)
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