Daniel Santiago Ballesteros Rocha ()
Alan Joel Lizarazo Canon ()
Nataly Pascuales Gomez ()

Descripción de la base de datos

A partir de una tabla que contiene los datos de medidas antropométricas de un grupo de 507 individuos con 8 variables, se creó una semilla donde se obtuvo una muestra de 50 individuos hombres y 50 individuos mujeres con las siguientes variables:

  • X6 : Diámetro del codo, suma de dos codos en cm.
  • X7 : Diámetro de muñeca, suma de dos muñecas en cm.
  • X8 : Diámetro de rodilla, suma de dos rodillas en cm.
  • X13 : Circunferencia abdominal, pasando por el ombligo en cm.
  • X15 : Circunferencia del muslo en cm.
  • X23 : Peso (kg)
  • X24 : Altura (cm)
  • X25 : Género (1: hombre, 0: mujer)

La base de datos original contiene 25 variables y usted puede verla en el fichero de datos: body_dat.csv que se encuentra en https://jse.amstat.org/v11n2/datasets.heinz.html

Pruebas de normalidad

Inicialmente, es necesario comprobar la normalidad de los datos, lo cual se puede lograr mediante gráficos como el qqplot y un gráfico de densidad, pero se debe verificar finalmente con una prueba de hipótesis. Para este caso utilizamos los test de normalidad de Lilliefors y Anderson-Darling (en algunos caso fue necesario utilizar el test de Shapiro y el de Cramer - von también)

X6: Diámetro del codo (suma de dos codos en cm)

lillie.test(X6)
ad.test(X6)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X6
D = 0.071649, p-value = 0.2349


    Anderson-Darling normality test

data:  X6
A = 0.40053, p-value = 0.3555
par(mfrow=c(1,2))
require(car)
qqPlot(X6, pch=20, main='QQplot para Diámetro del codo', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X6), main='Densidad para Diámetro del codo', las=1,
     xlab='Diámetro del codo (cm)', ylab='Densidad')

Obteniendo para los dos test valores de p mayores a 0.05 donde no se rechaza la hipótesis nula (H0: La distribución es normal) y por tanto, la distribución es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos está sobre la linea diagonal y en el gráfico de densidad que tiene forma de campana.

X7: Diámetro de la muñeca (suma de dos muñecas en cm)

lillie.test(X7)
ad.test(X7)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X7
D = 0.082675, p-value = 0.08863


    Anderson-Darling normality test

data:  X7
A = 0.53138, p-value = 0.1704
par(mfrow=c(1,2))
require(car)
qqPlot(X7, pch=20, main='QQplot para Diámetro de la muñeca', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X7), main='Densidad para Diámetro de la muñeca', las=1,
     xlab='Diámetro de la muñeca (cm)', ylab='Densidad')

Obteniendo para los dos test valores de p mayores a 0.05 donde no se rechaza la hipótesis nula (H0: La distribución es normal) y por tanto, la distribución es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos se desvía de la linea diagonal y en el gráfico de densidad que no tiene forma de campana.

X8: Diámetro de la rodilla (suma de dos rodillas en cm)

lillie.test(X8)
ad.test(X8)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X8
D = 0.082271, p-value = 0.09186


    Anderson-Darling normality test

data:  X8
A = 0.4249, p-value = 0.3112
par(mfrow=c(1,2))
require(car)
qqPlot(X8, pch=20, main='QQplot para Diámetro de la rodilla', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X8), main='Densidad para Diámetro de la rodilla', las=1,
     xlab='Diámetro de la rodilla (cm)', ylab='Densidad')

Obteniendo para los dos test valores de p mayores a 0.05 donde no se rechaza la hipótesis nula (H0: La distribución es normal) y por tanto, la distribución es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos está sobre la linea diagonal y en el gráfico de densidad que tiene forma de campana.

X13: Circunferencia abdominal (pasando por el ombligo en cm)

lillie.test(X13)
ad.test(X13)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X13
D = 0.079641, p-value = 0.1231


    Anderson-Darling normality test

data:  X13
A = 0.90831, p-value = 0.01991
par(mfrow=c(1,2))
require(car)
qqPlot(X13, pch=20, main='QQplot para Circunferencia abdominal', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X13), main='Densidad para Circunferencia abdominal', las=1,
     xlab='Circunferencia abdominal (cm)', ylab='Densidad')

En este caso, para los dos test se obtuvieron resultados diferentes, donde en uno se rechaza la hipótesis nula (H0: La distribución es normal) y en el otro no, por tanto, hicimos dos pruebas de hipótesis de normalidad adicionales:

shapiro.test(X13)
cvm.test(X13)

    Shapiro-Wilk normality test

data:  X13
W = 0.95944, p-value = 0.00367


    Cramer-von Mises normality test

data:  X13
W = 0.1428, p-value = 0.02905

Con esto, concluimos que sí se rechaza la hipótesis nula y por tanto la distribución NO es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos se desvía de la linea diagonal y en el gráfico de densidad que no tiene forma de campana.

X15: Circunferencia del muslo (cm)

lillie.test(X15)
ad.test(X15)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X15
D = 0.092706, p-value = 0.03382


    Anderson-Darling normality test

data:  X15
A = 0.55748, p-value = 0.1464
par(mfrow=c(1,2))
require(car)
qqPlot(X15, pch=20, main='QQplot para Circunferencia del muslo', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X15), main='Densidad para Circunferencia del muslo', las=1,
     xlab='Circunferencia del muslo (cm)', ylab='Densidad')

En este caso, para los dos test se obtuvieron resultados diferentes, donde en uno se rechaza la hipótesis nula (H0: La distribución es normal) y en el otro no, por tanto, hicimos otra prueba de hipótesis de normalidad adicional:

cvm.test(X15)

    Cramer-von Mises normality test

data:  X15
W = 0.091273, p-value = 0.1462

Con esto, concluimos que no se rechaza la hipótesis nula y por tanto la distribución es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos solo se desvía ligeramente de la linea diagonal y en el gráfico de densidad que se asemeja mas a la forma de campana.

X23: Peso (Kg)

lillie.test(X23)
ad.test(X23)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X23
D = 0.12127, p-value = 0.0009842


    Anderson-Darling normality test

data:  X23
A = 1.4569, p-value = 0.0008692
par(mfrow=c(1,2))
require(car)
qqPlot(X23, pch=20, main='QQplot para Peso', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X23), main='Densidad para Peso', las=1,
     xlab='Peso (cm)', ylab='Densidad')

Obteniendo para los dos test valores de p muy por debajo de 0.05 donde se rechaza la hipótesis nula (H0: La distribución es normal) y por tanto, la distribución NO es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos está sobre la linea diagonal y en el gráfico de densidad que tiene forma de campana.

X24: Altura (cm)

lillie.test(X24)
ad.test(X24)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  X24
D = 0.079161, p-value = 0.1282


    Anderson-Darling normality test

data:  X24
A = 0.46047, p-value = 0.2554
par(mfrow=c(1,2))
require(car)
qqPlot(X24, pch=20, main='QQplot para Altura', las=1, 
       xlab='Cuantiles teoricos', ylab='Cuantiles muestrales')

plot(density(X24), main='Densidad para Altura', las=1,
     xlab='Altura (cm)', ylab='Densidad')

Obteniendo para los dos test valores de p mayores a 0.05 donde no se rechaza la hipótesis nula (H0: La distribución es normal) y por tanto, la distribución es normal; algo que también se puede evidenciar en el qqplot donde la distribución de puntos está sobre la linea diagonal y en el gráfico de densidad que tiene forma de campana.

Intervalos de confianza

En esta sección del trabajo se pretende mostrar la manera de calcular intervalos de confianza con las distintas opciones disponibles en el programa R. Para esto, es importante conocer a qué nos referimos cuando se habla de intervalos de confianza.

Un intervalo de confianza es un rango de valores que se utiliza para estimar un parámetro poblacional desconocido con un determinado nivel de confianza. Es una forma de expresar la incertidumbre en torno a una estimación de un parámetro poblacional, como la media, la proporción o la varianza.

A continuación el desarrollo de la actividad

a. Construya intervalos de confianza del 90% para el promedio de las 3 primeras variables. Escriba la interpretación en el contexto de cada caso.

Para este punto es necesario evidenciar la normalidad de las variables, la cual fue analizada anteriormente, por lo que se puede proceder con el cálculo de los intervalos de confianza

Primera variable X6 (Diámetro del codo):

resX6 <- t.test(x = X6, conf.level = 0.90)$conf.int
round(resX6, 3)
Invervalo: [1] 13.152 13.580
Invervalo: attr(,"conf.level")
Invervalo: [1] 0.9

Con una confianza del 90% se estima que la media de la variable X6 (Diámetro del codo) se encuentra entre 13.152 y 13.580

Segunda variable X7 (Diámetro de la muñeca):

resX7 <- t.test(x = X7, conf.level = 0.90)$conf.int
round(resX7, 3)
Invervalo: [1] 10.381 10.679
Invervalo: attr(,"conf.level")
Invervalo: [1] 0.9

Con una confianza del 90% se estima que la media de la variable X7 (Diámetro de la muñeca) se encuentra entre 10.381 y 10.679

Tercera variable X8 (Diámetro de la rodilla):

resX8 <- t.test(x = X8, conf.level = 0.90)$conf.int
round(resX8, 3)
Invervalo: [1] 18.565 19.029
Invervalo: attr(,"conf.level")
Invervalo: [1] 0.9

Con una confianza del 90% se estima que la media de la variable X8 (Diámetro de la rodilla) se encuentra entre 18.565 y 19.029

Teniendo en cuenta los intervalos de confianza calculados en la parte a de la actividad 2, es posible evidenciar que de las tres variables, la que presenta una media mayor es la X8 (Diámetro de la rodilla), mientras que la que presenta un promedio menor es la X7 (Diámetro de la muñeca); cabe mencionar que dichas medidas son realizadas en centímetros (cm).

b. Construya un intervalo de confianza del 99% para la proporción de las mujeres que miden menos de 165 cm. Interprete.

Para los siguientes ítems de la actividad 2 es necesario segmentar la muestra analizada por géneros (Hombre (1) y mujer (0)), lo cual se realiza a continuación:

mujeres <- muestra1[muestra1$X25=="0", ]
hombres <- muestra1[muestra1$X25=="1", ]
tabla.muj <- data.frame(mujeres$X24)
n <- nrow(tabla.muj)

menos165 <- mujeres[mujeres$X24 < "165", ]
tabla.x <- data.frame(menos165$X24)
x <- nrow(tabla.x)

resX24.muj <- prop.test(x = x, n = n, conf.level = 0.99)$conf.int
round(resX24.muj, 3)
Invervalo: [1] 0.269 0.626
Invervalo: attr(,"conf.level")
Invervalo: [1] 0.99

Es posible evidenciar que con un nivel de confianza del 99%, la proporción de las mujeres que miden menos de 165 cm se encuentra entre 0.269 y 0.626

A manera de comparación, se calculará el intervalo de confianza para la proporción de las mujeres que miden menos de 165 cm de manera manual con las fórmulas de los intervalos de confianza, las cuales son:

ICi = pgorro - zalfamed * sqrt(pgorro*qgorro/n)

ICs = pgorro + zalfamed * sqrt(pgorro*qgorro/n)

n <- n
x <- x
pgorro <- x/n 
zalfamed <- qnorm(0.005, 0, 1, lower.tail = FALSE)

ICi <- pgorro - zalfamed * sqrt(pgorro*(1-pgorro)/n)
round(ICi, 3)

ICs <- pgorro + zalfamed * sqrt(pgorro*(1-pgorro)/n)
round(ICs, 3)
Invervalo: [1] 0.259
Invervalo: [1] 0.621

Con una confianza del 99% (calculado manualmente) se estima que la proporción de las mujeres que miden menos de 165 cm se encuentra entre 0.259 y 0.621

c. Construya un intervalo de confianza del 95% para la diferencia de promedios de la circunferencia abdominal entre hombres y mujeres. Interprete.

En este punto es necesario realizar el análisis de la normalidad de la muestra (X13), ya que para poder calcular el respectivo intervalo de confianza la muestra debe tener una distribución normal. Se está hablando de un intervalo de confianza para la diferencia de medias de muestras independientes.

En la parte superior se realizaron las pruebas de normalidad para la variable X13 (Circunferencia abdominal, pasando por el ombligo en cm), en donde se evidenció que el comportamiento de esta no es normal, sin embargo a continuación se anexan los gráficos qqplot e histograma para esta variable tanto en hombres como mujeres y así confirmar este hecho.

par(mfrow=c(2,2))
require(car)
layout(matrix(1:4,2,2))

qqPlot(hombres$X13, pch=19, las=1, main='QQplot circ. abdominal hombres',
       xlab='Cuantiles teóricos', ylab='Cuantiles muestrales')

hist(hombres$X13, las=1, xlab='Altura', ylab='Frecuencia',
     main='Histograma circ. abdominal hombres', col = "cyan")

qqPlot(mujeres$X13, pch=19, las=1, main='QQplot circ. abdominal mujeres',
       xlab='Cuantiles teóricos', ylab='Cuantiles muestrales')

hist(mujeres$X13, las=1, xlab='Altura', ylab='Frecuencia',
     main='Histograma circ. abdominal mujeres', col = "salmon")

Ahora, para complementar, se realizará la prueba de normalidad de Shapiro - Wilk para ambas muestras (hombres y mujeres), las hipótesis nula y alternativa son:

H0: La muestra proviene de una distribución normal.

H1: La muestra NO proviene de una distribución normal.

Se esperaría obtener valores p superiores al α = 0.05 para así mantener la hipótesis nula.

shapiro.test(hombres$X13)$p.value
Valor de P para hombres [1] 0.5110533
shapiro.test(mujeres$X13)$p.value
Valor de P para mujeres [1] 0.0002655266

Como es posible evidenciar en los gráficos y en las pruebas de normalidad realizadas, no es posible realizar la construcción del intervalo de confianza solicitado, pues la variable en general X13 no presenta una distribución normal; siendo específicos, la muestra para las mujeres es la que no cumple con dicha distribución (Valor p 0.000265, muy inferior a 0.05)

d. Construya un intervalo de confianza del 95% para la diferencia de promedios de las rodillas entre hombres y mujeres. Interprete.

Al igual que en el punto aterior, se expondrán los gráficos de las muestras tanto de hombres como mujeres para evaluar la normalidad, pues es el mismo tipo de intervalo de confianza (diferencia de medias de muestras independientes)

par(mfrow=c(2,2))
require(car)
layout(matrix(1:4,2,2))

qqPlot(hombres$X8, pch=19, las=1, main='QQplot rodilla hombres',
       xlab='Cuantiles teóricos', ylab='Cuantiles muestrales')

hist(hombres$X8, las=1, xlab='Altura', ylab='Frecuencia',
     main='Histograma rodilla hombres', col = "#9AFF9A")

qqPlot(mujeres$X8, pch=19, las=1, main='QQplot rodilla mujeres',
       xlab='Cuantiles teóricos', ylab='Cuantiles muestrales')

hist(mujeres$X8, las=1, xlab='Altura', ylab='Frecuencia',
     main='Histograma rodilla mujeres', col = "#CD5B45")

Como se puede observar en los gráficos, para los hombres se podría evidenciar un comportamiento de una distribución normal, sin embargo para las mujeres no. Por esto se realizarán diferentes pruebas de normalidad a las muestras con las respectivas hipótesis nula y alternativa:

H0: La muestra proviene de una distribución normal.

H1: La muestra NO proviene de una distribución normal.

shapiro.test(hombres$X8)$p.value
Valor de P para hombres con Shapiro - Wilk [1] 0.5048331
ad.test(hombres$X8)$p.value
Valor de P para hombres con Anderson - Darling [1] 0.5483122
lillie.test(hombres$X8)$p.value
Valor de P para hombres con Lilliefors [1] 0.5683213
shapiro.test(mujeres$X8)$p.value
Valor de P para mujeres con Shapiro - Wilk [1] 0.0003841391
ad.test(mujeres$X8)$p.value
Valor de P para mujeres con Anderson - Darling [1] 0.003213479
lillie.test(mujeres$X8)$p.value
Valor de P para mujeres con Lilliefors [1] 0.0127313

Como es posible evidenciar en las tres pruebas realizadas, el valor p para la muestra de las mujeres es bastante inferior al α = 0.05, por lo que se puede deducir que esta no proviene de una distribución normal, a pesar de que en el análisis de la variable en general (X8), si hay resultado una distribución normal, por esta razón, no es posible construir el intervalo de confianza solicitado.

e. Construya intervalos de confianza del 90% para la varianza poblacional de la circunferencia del muslo para las mujeres.

En este punto, al igual que en los anteriores, es necesario verificar que la muestra proviene de una distribución normal, prueba que se realizó al comienzo

resX15.muj <- stests::var.test(x = mujeres$X15, conf.level=0.90)$conf.int
round(resX15.muj, 3)
Invervalo: [1] 17.079 33.391
Invervalo: attr(,"conf.level")
Invervalo: [1] 0.9

La varianza poblacional de la circunferencia del muslo para las mujeres se encuentra entre 17.079 y 33.391

Pruebas de hipótesis

a.Elabore una prueba de hipótesis con α = 0.05 para probar si la media de la variable X6 es diferente de 13 cm.

Teniendo en cuenta que la distribución de la variable X6 es normal, se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: μ = 13 cm

H1: μ ≠ 13 cm

a <- t.test(X6, alternative='two.sided', conf.level=0.95, mu=13)
a$p.value
Valor de p: [1] 0.005539672

Se obtiene un valor de p de 0.0055. Teniendo en cuenta un valor de significania del 5%, se rechaza la hipótesis nula de que la media es igual a 13 cm, por tanto la media de la variable X6 sí es diferente de 13 cm, algo que también es posible observar elaborando el boxplot.

ggplot(data=muestra1,aes(x="",y=X6))+
  geom_boxplot(fill="lightblue")+
  labs(title = "Boxplot",
       subtitle = "Diámetro del codo",
       x="X6",
       y="Diámetro del codo (cm)")+
  stat_boxplot(geom = "errorbar", width = 0.15) +
  theme_bw(base_size = 15)+
  theme(plot.title = element_text(size = 20),
        axis.text = element_text(size = 12),
        axis.title = element_text(size = 14))+
  geom_hline(yintercept = 13, color = "red",linetype=2) +
  scale_y_continuous(breaks=seq(0,20, by=1))

b. Elabore una prueba de hipótesis con α = 0.01 para probar si la media de la variable X15 es mayor de 55 cm.

Teniendo en cuenta que la distribución de la variable X15 es normal, se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: μ <= 55 cm

H1: μ > 55 cm

b <- t.test(X15, alternative='greater', conf.level=0.99, mu=55)
b$p.value
Valor de p: [1] 0.004413383

Se obtiene un valor de p de 0.0044. Teniendo en cuenta un valor de significancia del 1%, se rechaza la hipótesis nula de que la media es igual a 55 cm, por tanto, con la hipótesis alternativa se determina que la media de la variable X15 sí es mayor a 55 cm, algo que también es posible observar elaborando el boxplot.

ggplot(data=muestra1,aes(x="",y=X15))+
  geom_boxplot(fill="lightblue")+
  labs(title = "Boxplot",
       subtitle = "Circunferencia del muslo",
       x="X15",
       y="Circunferencia del muslo (cm)")+
  stat_boxplot(geom = "errorbar", width = 0.15) +
  theme_bw(base_size = 15)+
  theme(plot.title = element_text(size = 20),
        axis.text = element_text(size = 12),
        axis.title = element_text(size = 14))+
  geom_hline(yintercept = 55, color = "red",linetype=2)+
  scale_y_continuous(breaks=seq(46,73, by=3))

c. Elabore una prueba de hipótesis con α = 0.10 para probar si la los promedios de la variable X7 en hombres y mujeres son iguales.

Para este caso, necesitamos obtener por separado los datos del diametro de la muñeca para hombres y mujeres

hombres <- muestra1 [muestra1$X25=="1", ]
mean(hombres$X7)
Promedio diametro de la muñeca para hombres [1] 11.196
mujeres <- muestra1 [muestra1$X25=="0", ]
mean(mujeres$X7)
Promedio diametro de la muñeca para mujeres [1] 9.864

Teniendo en cuenta que la variable X7 es normal, se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: μ hombres = μ mujeres

H1: μ hombres ≠ μ mujeres

Inicialmente se hace una prueba de hipótesis para determinar si las varianzas son iguales

vw <- stats::var.test(x=hombres$X7, y=mujeres$X7, null.value=1, alternative="two.sided", conf.level=0.95)
vw$p.value
Valor de p: [1] 0.6808186

Se obtiene un valor de p de 0.67. Teniendo en cuenta un valor de significancia del 10%, no se rechaza la hipótesis nula de que el cociente de varianzas es igual a 1, y se determina que las varianzas son iguales. Por lo que, se hace la prueba de hipótesis para la diferencia de medias con varianzas iguales.

c <- t.test(x=hombres$X7, y=mujeres$X7,alternative="two.sided", mu= 0, paired = F,var.equal=T,conf.level=0.90)
c$p.value
Valor de p: [1] 5.190308e-19

Se obtiene un valor de p de 5.19 e-19. Teniendo en cuenta un valor de significancia del 10% por lo que se rechaza la hipótesis nula de que las dos medias son iguales (diferencia de medias = 0), por tanto, las media del diámetro de la muñeca entre hombres y mujeres sí es diferente, algo que también es posible observar elaborando el boxplot.

dfh7 <- data.frame(x7=hombres$X7)
dfm7 <- data.frame(x7=mujeres$X7)
dfh7$grupo <- "Hombres"
dfm7$grupo <- "Mujeres"

dfa7 <- rbind(dfh7,dfm7)

ggplot(data=dfa7,aes(x="",y=x7))+
  geom_boxplot(fill="lightblue")+
  labs(title = "Boxplot",
       subtitle = "Diámetro de mu\u00F1eca",
       x="",
       y="Diámetro de mu\u00F1eca (cm)")+
  facet_wrap(~ grupo, nrow = 1)+
  stat_boxplot(geom = "errorbar", width = 0.15) +
  theme_bw(base_size = 15)+
  theme(plot.title = element_text(size = 18),
        axis.text = element_text(size = 10),
        axis.title = element_text(size = 12))+
  scale_y_continuous(breaks=seq(9,12, by=1))

d. Elabore una prueba de hipótesis con α = 0.05 para probar si el promedio de la variable X13 es mayor en hombres que en mujeres.

Como se determinó anteriormente, esta variable no tiene una distribución normal, algo que es necesario para realizar esta prueba de hipótesis. Sin embargo, teniendo en cuenta que la muestra es mayor a 30, la prueba t de Student puede ser robusta ante desviaciones moderadas de la normalidad por lo que se hace la prueba de hipótesis teniendo en cuenta lo mencionado anteriormente a la hora de realizar el análisis

Se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: μ hombres <= μ mujeres

H1: μ hombres > μ mujeres

Inicialmente se hace una prueba de hipótesis para determinar si las varianzas son iguales

vx <- stats::var.test(x=hombres$X13, y=mujeres$X13, null.value=1, alternative="greater", conf.level=0.95)
vx$p.value
Valor de p: [1] 0.9666634

Se obtiene un valor de p de 0.067. Teniendo en cuenta un valor de significancia del 5%, no se rechaza la hipótesis nula de que el cociente de varianzas es igual a 1, y se determina que las varianzas son iguales. Por lo que, teniendo en cuenta esto, se hace la prueba de hipótesis para la diferencia de medias con varianzas iguales.

d <- t.test(x=hombres$X13, y=mujeres$X13,alternative = "two.sided" , mu= 0, paired = F, var.equal=T, conf.level=0.95)
d$p.value
Valor de p: [1] 0.1541259

Se obtiene un valor de p de 0.077. Teniendo en cuenta un valor de significancia del 5% por lo que no se rechaza la hipótesis nula de que la media de la circunferencia abdominal en hombres es menor o igual a la las mujeres. Por tanto, se determina que el promedio de la variable X13 no es mayor en hombres que en mujeres. Sin embargo, es necesario considerar la robustez de este resultado teniendo en cuenta lo mencionado anteriormente respecto a la normalidad, que el valor de p está muy cerca de entrar en la zona de rechazo con α = 0.05, y los valores atípicos, que se encuentran en Mujeres (como se observa en el boxplot) que son el 8% de los datos totales para este grupo.

dfh13 <- data.frame(x13=hombres$X13)
dfm13 <- data.frame(x13=mujeres$X13)
dfh13$grupo <- "Hombres"
dfm13$grupo <- "Mujeres"

dfa13 <- rbind(dfh13,dfm13)

ggplot(data=dfa13,aes(x="",y=x13))+
  geom_boxplot(fill="lightblue")+
  labs(title = "Boxplot",
       subtitle = "Circunferencia abdominal",
       x="",
       y="Circunferencia abdominal (cm)")+
  facet_wrap(~ grupo, nrow = 1)+
  stat_boxplot(geom = "errorbar", width = 0.15) +
  theme_bw(base_size = 15)+
  theme(plot.title = element_text(size = 18),
        axis.text = element_text(size = 10),
        axis.title = element_text(size = 12))+
  scale_y_continuous(breaks=seq(9,12, by=1))

e. ¿Es la varianza de la variable X13 en las mujeres mayor que 80?, pruebe con α = 0.01.

Para este caso, como también se esta trabajando con la variable X13 se debe tener en cuenta lo mencionado en el punto inmediatamente anterior

Se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: σ2 mujeres <= 80

H1: σ2 mujeres > 80

e <- stests::var.test(x=mujeres$X13, null.value=80, alternative="greater", conf.level=0.99)
e$p.value
Valor de p: [1] 0.05016783

Se obtiene un valor de p de 0.05017. Teniendo en cuenta un valor de significancia del 1%, no se rechaza la hipótesis nula de que la varianza de la circunferencia abdominal en mujeres es menor o igual a 80. Por tanto, las evidencias no son suficientes para afirmar que la varianza de la variable X13 en mujeres es mayor a 80.

f. ¿Es la varianza de la variable X8 en los hombres diferente de 1.5?, pruebe con α = 0.01.

Teniendo en cuenta que la distribución de la variable X8 es normal, se determina la hipótesis nula y la hipótesis alternativa dónde:

H0: σ2 hombres = 1.5

H1: σ2 hombres ≠ 1.5

f <- stests::var.test(x=hombres$X8, null.value=1.5, alternative="two.sided", conf.level=0.99)
f$p.value
Valor de p: [1] 0.479383

Se obtiene un valor de p de 0.479383. Teniendo en cuenta un valor de significancia del 1%, no se rechaza la hipótesis nula de que la varianza del diámetro de la rodilla en hombres igual a 1.5. Por tanto, las evidencias no son suficientes para afirmar que la varianza de la variable X8 en hombres sea diferente a 1.5.

Regresión lineal

Para llevar a cabo el análisis de regresión lineal es necesario, primero, establecer el nivel de correlación entre las variables a seleccionar. En ese sentido, se tomará como referencia un nivel de correlación mínimo de 0.6 entre las variables que se prueben. Y en caso de que hayan varias correlaciones superiores a este número, se tomará la más alta (sin tener en cuenta la correlación entre la variable y sí misma, que evidentemente tendrá correlación de 1):

X6 Diámetro del codo

library(dplyr)
corr <- data.frame(cor(muestra1))
cor_ordenada <- arrange(corr, desc(X6))
head(cor_ordenada, 3)

Tomaremos, entonces, la relación con X7 (Diámetro de la muñeca) (1). Realizamos el mismo ejercicio con variables distintas cuya mayor correlación con otras aún no se haya planteado

X8 Diámetro de Rodilla

cor_ordenada <- arrange(corr, desc(X8))
head(cor_ordenada, 3)

Analizaremos X8 y X23 (2)

X13 Circunferencia abdominal en cm

cor_ordenada <- arrange(corr, desc(X13))
head(cor_ordenada, 3)

Analizaremos X13 y X23 (3)

X15 Circunferencia del muslo en cm

cor_ordenada <- arrange(corr, desc(X15))
head(cor_ordenada, 3)

Analizaremos X15 y X13 (4)

X23 Peso en kg

cor_ordenada <- arrange(corr, desc(X23))
head(cor_ordenada, 3)

Analizaremos X23 y X6 (5)

X24 Altura en cm

cor_ordenada <- arrange(corr, desc(X24))
head(cor_ordenada, 3)

Analizaremos X24 y X23 (6)

Análisis y predicciones

(1) X6 ~ X7

Cómo el diámetro de las muñecas influye en el diámetro de los codos

reg.lin <- lm(X6 ~ X7, data = muestra1)
summary(reg.lin)

ggplot(muestra1, aes(x=X7, y=X6)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Diámetro de muñecas", y = "Diámetro de codos")


Call:
lm(formula = X6 ~ X7, data = muestra1)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.76918 -0.47673 -0.06918  0.33144  1.79405 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.70383    0.84301   0.835    0.406    
X7           1.20249    0.07977  15.074   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.712 on 98 degrees of freedom
Multiple R-squared:  0.6987,    Adjusted R-squared:  0.6956 
F-statistic: 227.2 on 1 and 98 DF,  p-value: < 2.2e-16

El principal elemento a destacar es que el valor p es MUY pequeño, lo que quiere decir que la relación entre X6 y X7 es significativa pues la hipótesis nula que se asume por defecto en la regresión lineal ("No hay relación significativa entre X6 y X7") cae en la región de rechazo del 5%, por lo que es desmentida. También es resaltable que la desviación estandar es relativamente baja como se puede apreciar en la gráfica y en el sumario. Finalmente, se puede evidenciar que el diámetro de los codos (como variable independiente) permite explicar alrededor del 70% de la variabilidad del diámetro de las muñecas

Ahora, para llevar a cabo las predicciones es necesario cerciorarse de que los datos residuales (diferencia entre los valores observados y los valores predichos) cuenten con una distribución normal, cosa que con las variables no es de tanta necesidad.

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Como vemos, los puntos se ven bastante alineados por lo que podemos asumir normalidad (la normalidad no tiene que ser perfecta)

Con lo anterior dicho, se buscará predecir el comportamiento del diámetro de las muñecas con base en diametros de los codos superiores o iguales a 15 y menores o iguales a 17

diam_grande <- data.frame(X7 = seq(15,17,0.5))
predicc <- predict(reg.lin, diam_grande)

tabla <- data.frame(diam_grande, predicc)
tabla

(2) X8 ~ X23

Cómo el peso influye en el diámetro de las rodillas

reg.lin <- lm(X8 ~ X23, data = muestra1)
summary(reg.lin)

ggplot(muestra1, aes(x=X23, y=X8)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Peso", y = "Diámetro de las rodillas") 


Call:
lm(formula = X8 ~ X23, data = muestra1)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6448 -0.5770  0.0157  0.6153  3.1769 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 12.987508   0.445393   29.16   <2e-16 ***
X23          0.085527   0.006439   13.28   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8397 on 98 degrees of freedom
Multiple R-squared:  0.6429,    Adjusted R-squared:  0.6392 
F-statistic: 176.4 on 1 and 98 DF,  p-value: < 2.2e-16

Nuevamente, lo que más resalta es lo pequeño que es el valor de P, permitiendo rechazar la hipótesis nula ("El modelo de regresión no es válido") y validando, por lo tanto, el modelo de regresión aplicado. Con respecto a qué tanto el peso permite explicar la variabilidad del diámetro de las rodillas, encontramos que lo puede explicar en un 63% (algo inferior a la correlación anterior), lo cual sigue siendo aceptable.

Pasamos a determinar si los residuos se distribuyen normal

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Concluímos a partir de la gráfica que se trata de una distribución normal. Ya para el ejercicio de predicción, buscaremos saber cómo sería el diámetro de las rodillas de una persona con bajo peso (20 kg) y el de una persona con sobrepeso (200 kg)

infra_sobre_peso <- data.frame(X23 = c(20,200))
predicc <- predict(reg.lin, infra_sobre_peso)

tabla <- data.frame(infra_sobre_peso, predicc)
tabla

(3) X13 ~ X23

Cómo la circunferencia abdominal se ve influenciada por el peso

reg.lin <- lm(X13 ~ X23, data = muestra1)
summary(reg.lin)

ggplot(muestra1, aes(x=X23, y=X13)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Peso", y = "Circunferencia abdominal")


Call:
lm(formula = X13 ~ X23, data = muestra1)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.6540  -4.7390  -0.5566   3.9095  22.4546 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 50.39257    3.47645   14.49   <2e-16 ***
X23          0.50854    0.05026   10.12   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.554 on 98 degrees of freedom
Multiple R-squared:  0.5109,    Adjusted R-squared:  0.5059 
F-statistic: 102.4 on 1 and 98 DF,  p-value: < 2.2e-16

Como en los casos anteriores, encontramos un valor P muy inferior al 5% por lo que el modelo se muestra como apropiado para correlacionar estas dos variables. Algo interesante que también se puede encontrar es el valor de R cuadrado que redondea el 50%, lo que quiere decir que la variable Peso sólo puede explicar el 50% de la variabilidad de la circunferencia abdominal, una capacidad de predicción bastante más reducida que con otras combinaciones vistas.

Pasamos a determinar si los residuos se distribuyen normal

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Se evidencia a través de la gráfica que los residuos se distribuyen normal. Ya para el ejercicio de predicción, se buscará conocer la circunferencia abdominal de personas que pesen entre 80 y 100kg

circunf_peso <- data.frame(X23 = seq(80,100,5))
predicc <- predict(reg.lin, circunf_peso)

tabla <- data.frame(circunf_peso, predicc)
tabla

(4) X15 ~ X13

Cómo la circunferencia del muslo se ve influenciada por la circunferencia abdominal

reg.lin <- lm(X15 ~ X13, data = muestra1)
summary(reg.lin)

ggplot(muestra1, aes(x=X13, y=X15)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Peso", y = "Circunferencia abdominal")


Call:
lm(formula = X15 ~ X13, data = muestra1)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.9373 -1.8068 -0.3219  2.2129  8.8612 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 29.14715    3.03267   9.611 8.46e-16 ***
X13          0.31828    0.03549   8.967 2.11e-14 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.293 on 98 degrees of freedom
Multiple R-squared:  0.4507,    Adjusted R-squared:  0.4451 
F-statistic: 80.41 on 1 and 98 DF,  p-value: 2.106e-14

En este caso, el valor P aumentó levemente si lo comparamos con los valores de las correlaciones anteriores, pero sigue siendo lo suficientemente bajo como para no pasar el 5% y, por lo tanto, invalidar el modelo. Así mismo, la circunferencia abdominal sólo puede explicar el 44% de la variabilidad de la circunferencia del muslo, por lo que el nivel de precisión ha disminuido frente a casos anteriores.

Pasamos a determinar si los residuos se distribuyen normal

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Es visible la tendencia a la distribución normal en la gráfica. Ahora para el ejercicio de predicción, se buscará conocer la circunferencia del muslo de personas con circuferencia abdominal de 75 y 80cm

muslo_circun <- data.frame(X13 = c(75, 80))
predicc <- predict(reg.lin, muslo_circun)

tabla <- data.frame(muslo_circun, predicc)
tabla

(5) X23 ~ X6

Cómo el peso de la persona se ve influenciada por el diámetro del codo

reg.lin <- lm(X23 ~ X6, data = muestra1)
summary(reg.lin)

ggplot(muestra1, aes(x=X6, y=X23)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Diametro del codo", y = "Peso")


Call:
lm(formula = X23 ~ X6, data = muestra1)

Residuals:
    Min      1Q  Median      3Q     Max 
-14.809  -5.809  -1.342   5.340  24.091 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -43.4486     7.8725  -5.519 2.79e-07 ***
X6            8.3327     0.5863  14.212  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 7.528 on 98 degrees of freedom
Multiple R-squared:  0.6733,    Adjusted R-squared:   0.67 
F-statistic:   202 on 1 and 98 DF,  p-value: < 2.2e-16

El valor P se encuentra también muy por debaje del límite del 5%, por lo que el modelo es válido para la regresión lineal. Ahora, es interesante evidenciar como esta relación que sin profundizar mucho no tiene mucha relación (diametro del codo y el peso), cuenta con un mayor porcentaje de explicación de la variabilidad de la variable dependiente (peso) en contraste con otras correlaciones que aparentan tener mayor sentido

Pasamos a determinar si los residuos se distribuyen normal

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Se concluye la distribución normal de los residuos.Para el ejercicio de predicción, se buscará conocer el peso de la persona a partir de un diámetro de los codos entre 14 y 16cm

peso_codos <- data.frame(X6 = seq(14, 16,0.5))
predicc <- predict(reg.lin, peso_codos)

tabla <- data.frame(peso_codos, predicc)
tabla

(6) X24 ~ X23

Cómo la altura de la persona se ve influenciada por su peso

reg.lin <- lm(X24 ~ X23, data = muestra1)
summary(reg.lin)
ggplot(muestra1, aes(x=X23, y=X24)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=TRUE, col='dodgerblue1') +
  theme_light() +
  labs(x = "Peso", y = "Altura")


Call:
lm(formula = X24 ~ X23, data = muestra1)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.7665  -3.9232   0.3895   3.9014  15.4367 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 137.35745    3.30754   41.53   <2e-16 ***
X23           0.50441    0.04782   10.55   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.236 on 98 degrees of freedom
Multiple R-squared:  0.5317,    Adjusted R-squared:  0.5269 
F-statistic: 111.3 on 1 and 98 DF,  p-value: < 2.2e-16

Siguiendo lo encontrado con otras correlaciones, el valor P sigue siendo muy inferior al 5%, y el valor de R cuadrado sigue encontrandose entre el 50 y 60% (en este caso, 52%). Por lo que también se trata de una regresión válida y relativamente precisa en determinar la variabilidad de la variable dependiente (altura)

Pasamos a determinar si los residuos se distribuyen normal

residuos <- rstandard(reg.lin)
qqnorm(residuos)
qqline(residuos)

Se puede notar en la gráfica una muy fuerte tendencia hacia la distribución normal, por lo que se puede pasar al ejercicio de predicción. Para llevar a cabo este, buscaremos determinar la altura de la persona de pesos bajos: de 20 a 30kg

altura_peso <- data.frame(X23 = seq(20, 30,1))
predicc <- predict(reg.lin, altura_peso)

tabla <- data.frame(altura_peso, predicc)
tabla