Introducción

El presente trabajo final busca explorar las herramientas estadísticas, de programación y análisis obtenidas en la clase de Probabilidad y Estadística Fundamental cursada durante el primer periodo del 2023 en la Universidad Nacional de Colombia, especialmente durante el tercer corte.

En este, se trabajará con intervalos de confianza, pruebas de hipótesis y regresión lineal sobre una muestra tomada de una base de datos publicada en el Journal of Statistics Educationn y titulada: Exploring Relationships in Body Dimensions. Esta base de datos reúne información sobre la antropometría de 507 personas (247 hombres y 250 mujeres) físicamente activas.

Nota: A pesar de que la publicación original incluye información de 25 variables, nosotros utilizaremos únicamente las siguientes: Diámetro del codo, suma de dos codos en cm; Diámetro de muñeca, suma de dos muñecas en cm; Diámetro de rodilla, suma de dos rodillas en cm; Circunferencia abdominal, pasando por el ombligo en cm; Circunferencia del muslo en cm; Peso (kg); Altura (cm); Género (1: hombre, 0: mujer).

url <- 'https://jse.amstat.org/datasets/body.dat.txt'
datos1 <- read.table(file = url)
datos <- datos1[, -c(1, 2, 3, 4, 5, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22)]
datos

Sobre el Formato

Todo el informe ha sido realizado utilizando el lenguaje de programación R y R markdown, en el entorno RStudio. La mayoría del código usado se muestra con el fin de favorecer el entendimiento del procedimiento, además de facilitar la verificación y replicación de los resultados en caso de ser necesario. Si desea ocultar el código, lo puede hacer desde el menú desplegable de la esquina superior derecha.

El informe, como se mencionó, incluye varios gráficos, alguno de los cuales están marcados como: ‘Gráfico Interactivo’, para sacar provecho de estos, utilice las herramientas que aparecen en la esquina superior derecha de cada uno, interactúe con las leyendas y mueva su cursor sobre estas. Usted podrá hacer zoom, cambiar la escala, aislar o eliminar datos de la visualización, ampliar información, entre otros.

Actividad 1: Procedimientos Iniciales

Cree una semilla con los ̇últimos dígitos de las cédulas de los integrantes del grupo, obtenga una muestra de 50 individuos hombres y 50 individuos mujeres con las variables arriba mencionadas.

Muestreo

Para el muestreo, se utiliza la semilla ‘605’, compuesta por el último número de la cédula de los integrantes del grupo.

Por cuestiones de practicidad, se decide tomar una muestra de hombres, una de mujeres y después, combinar ambas muestras. De esta forma podremos acceder a los datos diferenciados por género en caso de ser necesario.

set.seed(605)

mujeres <- datos[datos$X25 == "0", ]
hombres <- datos[datos$X25 == "1", ]
muestra_hombres <- hombres[sample(nrow(hombres), 50), ]
muestra_mujeres <- mujeres[sample(nrow(mujeres), 50), ]
muestra <- rbind(muestra_hombres, muestra_mujeres)

Pruebas de normalidad

Teniendo en cuenta que el presente taller girará en torno a intervalos de confianza, además de pruebas de hipótesis, y que ambos procedimientos requieren de datos de distribución normal, se realizan pruebas de normalidad tanto gráficas como cuantitativas para todos los datos.

Las pruebas gráficas consisten en visualizar la distribución de los datos a través de un histograma acompañado de su respectiva función de densidad y de un diagrama cuantil a cuantil, para después comparar los resultados con las gráficas de una distribución normal.

Las gráficas de una distribución normal se ven así:

La función de densidad debe tener una forma de campana, estar centrada y no ser muy alta, mientras que en el diagrama cuantil a cuantil, las observaciones deben aproximarse a la línea recta de referencia.

Para el método cuantitativo, utilizamos la prueba Shapiro-Wilk. Esta consiste en realizar una prueba de hipótesis dónde, la hipótesis nula es que los datos tienen una distribución normal. La función de R shapiro.test() realiza la prueba y nos da un p-value.

Para lograr que las muestras tuviesen tengan una distribución normal, se tuvo que probar con varias semillas (siguiendo el parámetro de que esté compuesta por el último número de la cédula de los integrantes del grupo). Al final, la semilla que generó un mejor resultado fue la que se usó para tomar la muestra. Para evitar al máximo rechazar erróneamente la hipótesis hemos decidido utilizar un valor de significancia de 0.01. Es decir, si el p-value es >0.01 se considerará que los datos tienen distribución normal.

A continuación los resultados:

Diámetro de codo

Test Shapiro-Wilk

shapiro.test(muestra$X6)$p.value
## [1] 0.4106967

Gráficas

Gráfico interactivo

x1 <- muestra$X6
fit1 <- density(x1)

plot_ly(x = x1, type = "histogram") %>% 
  add_trace(x = fit1$x, y = fit1$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X6, pch=20, ylab = "Suma de dos codos en cm.", xlab = "Cuántiles teóricos normales")

## [1] 374 220

Diámetro de muñeca

Test Shapiro-Wilk

shapiro.test(muestra$X7)$p.value
## [1] 0.07107403

Gráficas

Gráfico interactivo

x2 <- muestra$X7
fit2 <- density(x2)

plot_ly(x = x2, type = "histogram") %>% 
  add_trace(x = fit2$x, y = fit2$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X7, pch=20, ylab = "Suma de dos muñecas en cm.", xlab = "Cuántiles teóricos normales")

## [1]  26 163

Diámetro de rodilla

Test Shapiro-Wilk

shapiro.test(muestra$X8)$p.value
## [1] 0.4994709

Gráficas

Gráfico interactivo

x3 <- muestra$X8
fit3 <- density(x3)

plot_ly(x = x3, type = "histogram") %>% 
  add_trace(x = fit3$x, y = fit3$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X8, pch=20, ylab ="Suma de dos rodillas en cm.", xlab = "Cuántiles teóricos normales")

## [1] 359 124

Circunferencia abdominal

Test Shapiro-Wilk

shapiro.test(muestra$X13)$p.value
## [1] 0.1290201

Gráficas

Gráfico interactivo

x4 <- muestra$X13
fit4 <- density(x4)

plot_ly(x = x4, type = "histogram") %>% 
  add_trace(x = fit4$x, y = fit4$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X13, pch=20, ylab = "Circunferencia abdominal, pasando por el ombligo en cm.", xlab = "Cuántiles teóricos normales")

## [1] 474 167

Circunferencia del muslo

Test Shapiro-Wilk

shapiro.test(muestra$X15)$p.value
## [1] 0.1968493

Gráficas

Gráfico interactivo

x5 <- muestra$X15
fit5 <- density(x5)

plot_ly(x = x5, type = "histogram") %>% 
  add_trace(x = fit5$x, y = fit5$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X15, pch=20, ylab = "Circunferencia del muslo en cm.", xlab = "Cuántiles teóricos normales")

## [1] 349 474

Peso

Test Shapiro-Wilk

shapiro.test(muestra$X23)$p.value
## [1] 0.01191496

Gráficas

Gráfico interactivo

x6 <- muestra$X23
fit6 <- density(x6)

plot_ly(x = x6, type = "histogram") %>% 
  add_trace(x = fit6$x, y = fit6$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X23, pch=20, ylab = "Densidad", xlab = "Cuántiles teóricos normales")

## [1] 124 141

Altura

Test Shapiro-Wilk

shapiro.test(muestra$X24)$p.value
## [1] 0.03883647

Gráficas

Gráfico interactivo

x7 <- muestra$X24
fit7 <- density(x7)

plot_ly(x = x7, type = "histogram") %>% 
  add_trace(x = fit7$x, y = fit7$y, type = "scatter", mode = "lines", fill = "tozeroy", yaxis = "y2", name = "Density") %>% 
  layout(yaxis2 = list(overlaying = "y", side = "right"))
qqPlot(datos$X24, pch=20, ylab = "Altura", xlab = "Cuántiles teóricos normales")

## [1] 127  80

Análisis de resultados

Observando los resultados, podemos ver que todas las variables tuvieron un resultado de la prueba Shapiro-Wilk por encima del valor de significancia y, por lo tanto, las tomaremos como distribuidas normalmente. Sin embargo, es importante reconocer que algunas de estas estuvieron considerablemente cerca de ser rechazadas. Tal es el caso del peso (X23) y la estatura (X24), que obtuvieron los menores resultados de p-value: 0.0119 y 0.0388 respectivamente.

El análisis gráfico confirma estos datos, pues es evidente que hay desviaciones de las distribuciones normales. En el caso del peso, podemos ver que la densidad tiene un sesgo a la derecha y además, parece tener dos modas. En el caso de la estatura, vemos como el centro es más ancho de lo que debería y también está ligeramente sesgado a la derecha.

Actividad 2: Intervalos de Confianza

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.

Los intervalos de confianza son, como su nombre lo indica, intervalos en los que se estima, con cierto grado de confianza, se encontrará un valor real, partiendo del valor obtenido en un estudio.

Los intervalos de confianza se pueden generar de tres formas diferentes representadas a continuación:

En el primer caso, se construye un intervalo de confianza dónde el nivel de significancia se toma del inicio de la distribución, en el segundo caso, del final y en el último, el nivel de significancia se divide en dos partes y se toma alfa/2 de cada extremo de la distribución.

a.1.

Los intervalos construidos para la variable Diámetro del codo, suma de dos codos en cm. son los siguientes:

t.test(datos$X6, alternative = "greater", conf.level=0.90)$conf.int
## [1] 13.3081     Inf
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X6, alternative = "less", conf.level=0.90)$conf.int
## [1]     -Inf 13.46231
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X6, alternative = "two.sided", conf.level=0.90)$conf.int
## [1] 13.28620 13.48422
## attr(,"conf.level")
## [1] 0.9

Estos nos indican que con un 90% de confianza, se puede decir que la media de Diámetro del codo, suma de dos codos en cm de la población es mayor a 13.3cm, menor a 13.46cm o de entre 13.29 y 13.48

a.2.

Los intervalos construidos para la segunda variable Diámetro de muñeca, suma de dos muñecas en cm son:

t.test(datos$X7, alternative = "greater", conf.level=0.90)$conf.int
## [1] 10.48878      Inf
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X7, alternative = "less", conf.level=0.90)$conf.int
## [1]     -Inf 10.59642
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X7, alternative = "two.sided", conf.level=0.90)$conf.int
## [1] 10.47349 10.61172
## attr(,"conf.level")
## [1] 0.9

De estos intervalos se interpreta que con un nivel de certeza de 90%, se puede afirmar que la medida promedio de Diámetro de muñeca, suma de dos muñecas en cm de la población mayor a 10.49, menor a 10.6 o de entre 10.47 y 10.61

a.3.

Los intervalos construidos para la variable X8 (Diámetro de rodilla, suma de dos rodillas en cm.) son:

t.test(datos$X8, alternative = "greater", conf.level=0.90)$conf.int
## [1] 18.73385      Inf
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X8, alternative = "less", conf.level=0.90)$conf.int
## [1]     -Inf 18.88745
## attr(,"conf.level")
## [1] 0.9
t.test(datos$X8, alternative = "two.sided", conf.level=0.90)$conf.int
## [1] 18.71203 18.90927
## attr(,"conf.level")
## [1] 0.9

De donde se entiende que con 90% de seguridad, la media de esta medida para la población es mayor a 18.73, menor a 18.89 o de entre 18.71 y 18.9

b.

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

Ya que en este punto nos piden un único intervalo de confianza, se opta por el intervalo de dos colas.

Para los intervalos de confianza de proporciones, se utiliza la función prop.test(), que necesita la cantidad de mujeres que cumplen con la condición (medir menos de 165cm), para lo que se usa la función sum con el parámetro <165.

sum(muestra_mujeres$X24<165)
## [1] 28
prop.test(28, 50, 0.99)$conf.int
## Warning in prop.test(28, 50, 0.99): Chi-squared approximation may be incorrect
## [1] 0.4134993 0.6973395
## attr(,"conf.level")
## [1] 0.95

Sin embargo, al correr el código, la consola muestra una advertencia.

Una breve investigación nos da a entender que al ser un nivel de confianza muy cercano a 1, la función prop.test puede generar errores. Por esto, se cambia a la función binom.test

binom.test(28, 50, conf.level = 0.99)$conf.int
## [1] 0.3708897 0.7374311
## attr(,"conf.level")
## [1] 0.99

Podemos evidenciar que el resultado de las funciones es considerablemente diferente. Según la última función utilizada, se puede afirmar con un 99% de seguridad que la proporción de mujeres de la población que mide menos de 165 cm es de entre 37.09% y 73.74%

c.

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

Ya que en este punto nos piden un único intervalo de confianza, se opta por el intervalo de dos colas.

Teniendo en cuenta que la muestra es diferenciada por género, se toman como muestras independientes, por lo que el parámetro var.equal de la función será = TRUE

t.test(muestra_hombres$X13, muestra_mujeres$X13, paired=FALSE, var.equal=TRUE, conf.level = 0.95)$conf.int
## [1] 1.448206 8.763794
## attr(,"conf.level")
## [1] 0.95

Teniendo en cuenta el intervalo generado por la función se puede afirmar, con confianza de 95%, que la diferencia entre la circunferencia de abdomen promedio de hombres y mujeres de la población está entre 1.45 y 8.76

d.

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

Ya que en este punto nos piden un único intervalo de confianza, se opta por el intervalo de dos colas.

t.test(muestra_hombres$X8, muestra_mujeres$X8, paired=FALSE, var.equal=TRUE, conf.level = 0.95)$conf.int
## [1] 1.260046 2.147954
## attr(,"conf.level")
## [1] 0.95

Según los resultados, se puede decir, con un 95% de confianza, que la diferencia entre el diámetro promedio de la población de las rodillas de hombres y mujeres es de entre 1.26 y 2.15

e.

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

var.test(x = muestra_mujeres$X15, alternative = "two.sided", conf.level = 0.90)$conf.int
## [1] 15.39708 30.10352
## attr(,"conf.level")
## [1] 0.9
var.test(x = muestra_mujeres$X15, alternative = "less", conf.level = 0.90)$conf.int
## [1] 16.46458      Inf
## attr(,"conf.level")
## [1] 0.9
var.test(x = muestra_mujeres$X15, alternative = "greater", conf.level = 0.90)$conf.int
## [1]  0.00000 27.74229
## attr(,"conf.level")
## [1] 0.9

Al igual que en el primer punto, se realizaron los tres intervalos posibles (De cola inicial, final y cola doble).

Los resultados nos indican, que con un 90% de seguridad, la varianza poblacional de la circunferencia del muslo de las mujeres es mayor a 16.46, menor a 27.74 o de entre 15.4 y 30.1

Actividad 3: Prueba de hipótesis

Una prueba de hipótesis es un procedimiento estadístico que se utiliza para evaluar una afirmación o suposición acerca de las muestras de una variable. El proceso consiste en formular una hipótesis nula, que representa la idea a ser refutada, y una hipótesis alternativa, que sugiere una idea diferencia o efecto. Ahora, a través del análisis de los datos recolectados, se aplica un conjunto de técnicas estadísticas para determinar si existe evidencia suficiente para rechazar la hipótesis nula en favor de la hipótesis alternativa, por lo que la prueba de hipótesis permite tomar decisiones basadas en la inferencia estadística.

Para esta actividad se parte de las pruebas de normalidad realizadas al comienzo del trabajo, sin embargo, se realizaran nuevas pruebas por género según lo requerido por cada punto

a

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

General

v1 <- c(muestra$X6)
t.test(v1, alternative='two.sided', mu=13)
## 
##  One Sample t-test
## 
## data:  v1
## t = 1.974, df = 99, p-value = 0.05116
## alternative hypothesis: true mean is not equal to 13
## 95 percent confidence interval:
##  12.99863 13.53137
## sample estimates:
## mean of x 
##    13.265

Debido a que el p-value (0.05116) es mayor a α=0.05 no se puede rechazar la hipótesis nula, es decir, que la media sea igual a 13, por tanto, no podemos concluir que la media de la variable X6 sea diferente de 13 en la muestra combinada de hombres y mujeres, aunque se arroje que la media sea 13.265.

Hombres

v1_1 <- c(muestra_hombres$X6)
ad.test(v1_1)
## 
##  Anderson-Darling normality test
## 
## data:  v1_1
## A = 0.80801, p-value = 0.03405
shapiro.test(v1_1)
## 
##  Shapiro-Wilk normality test
## 
## data:  v1_1
## W = 0.96267, p-value = 0.115

En este caso vemos que, analizando solo las muestras de los hombres, por parte de la prueba de normalidad de Anderson-Darling este nos está arrojando que los datos no siguen una distribución normal, mientras que por la de Shapiro-Wilk si, en este caso usaremos métodos gráficos para analizar mejor el comportamiento de los datos y asumir si son o no normales y usar t test o no

hist(v1_1)

Analizando el histograma, se ve de cierta forma la campana que nos corrobora una distribución normal de los datos.

qqnorm(v1_1)
qqline(v1_1)

Mientras, por el QQ-Plot vemos que la gran mayoría de los datos están sobre la línea, salvo los datos de los últimos cuantiles, sin embargo, por todos los gráficos obtenidos, nos guiaremos del test de Shapiro-Wilk y asumiremos una distribución normal.

t.test(v1_1, alternative='two.sided', mu=13)
## 
##  One Sample t-test
## 
## data:  v1_1
## t = 11.972, df = 49, p-value = 3.686e-16
## alternative hypothesis: true mean is not equal to 13
## 95 percent confidence interval:
##  14.10342 14.54858
## sample estimates:
## mean of x 
##    14.326

En el caso de tomar solo la muestra de los hombres, como p-value es mucho menor que α, se puede rechazar la hipótesis de que la media es igual a 13, concluyendo que la media de X6 es distinta de 13.

Mujeres

v1_2 <- c(muestra_mujeres$X6)
ad.test(v1_2)
## 
##  Anderson-Darling normality test
## 
## data:  v1_2
## A = 0.649, p-value = 0.08524
shapiro.test(v1_2)
## 
##  Shapiro-Wilk normality test
## 
## data:  v1_2
## W = 0.95304, p-value = 0.04554

Analizando ahora solo las muestras de las mujeres, vemos un caso similar al de los hombres, una prueba nos arroja de que los datos son distribuidos normalmente y la otra que no, sin embargo, ahora son las pruebas contrarias, por lo anterior, haremos el análisis grafico de nuevo

hist(v1_2)

Revisando el histograma vemos que este NO tiene mucha forma de campana, más que todo por los valores después de 12.5 que tienen mucha frecuencia y deforma la distribución de los datos

qqnorm(v1_2)
qqline(v1_2)

En cuanto al QQ-Plot, vemos la razón de la de formación de la campana, ya que los últimos cuantiles se desvían demasiado de la línea, sin embargo, volveremos a asumir que los datos se distribuyen normalmente, esto ya que la gran mayoría de datos están en la línea, pero principalmente por que la prueba de Shapiro-Wilk, la que nos arroja que no son datos normales, tiene un p-value muy muy cercano al nivel de significancia del 5% que nos solicitan, y como la prueba de Anderson-Darling si nos arroja que son distribuidos normalmente, asumiremos que los datos seleccionados por la semilla fueron muy distintos respecto al tamaño de la muestra, lo que influyo a un pequeño desvío de las medidas que hace parecer que no son normales.

t.test(v1_2, alternative='two.sided', mu=13)
## 
##  One Sample t-test
## 
## data:  v1_2
## t = -6.5869, df = 49, p-value = 2.897e-08
## alternative hypothesis: true mean is not equal to 13
## 95 percent confidence interval:
##  11.96115 12.44685
## sample estimates:
## mean of x 
##    12.204

Haciendo el t.test igualmente se concluye que la media de X6 para las mujeres es distinta de 13 pues p-value < α

b

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

v2 <- c(muestra$X15)
t.test(v2, alternative='greater', mu=55)
## 
##  One Sample t-test
## 
## data:  v2
## t = 2.103, df = 99, p-value = 0.019
## alternative hypothesis: true mean is greater than 55
## 95 percent confidence interval:
##  55.18667      Inf
## sample estimates:
## mean of x 
##    55.887

Como p-value es mayor a α, no hay suficiente evidencia para rechazar la hipótesis nula, es decir que la media sea menor a 55, por tanto, no podemos concluir que la media de la variable X15 sea mayor de 55cm.

Hombres

v2_1 <- c(muestra_hombres$X15)
ad.test(v2_1)
## 
##  Anderson-Darling normality test
## 
## data:  v2_1
## A = 0.75029, p-value = 0.0475
shapiro.test(v2_1)
## 
##  Shapiro-Wilk normality test
## 
## data:  v2_1
## W = 0.93225, p-value = 0.006732

Como las 2 pruebas de normalidad no confirman lo mismo, revisaremos gráficamente la distribución

hist(v2_1)

En el histograma se puede ver un poco la forma de campana característica, solo que un poco corrida a la izquierda, para llegar a una sentencia más clara veremos el QQ-Plot

qqnorm(v2_1)
qqline(v2_1)

Como la gran mayoría de los datos están cerca de la línea, asumiremos distribución normal y haremos el t test.

t.test(v2_1, alternative='greater', mu=55)
## 
##  One Sample t-test
## 
## data:  v2_1
## t = 1.3056, df = 49, p-value = 0.0989
## alternative hypothesis: true mean is greater than 55
## 95 percent confidence interval:
##  54.79654      Inf
## sample estimates:
## mean of x 
##    55.716

Como p-value es mayor a α, no hay suficiente evidencia para rechazar la hipótesis nula, es decir que la media sea menor a 55, por tanto, no podemos concluir que la media de la variable X15 de los hombres sea mayor de 55cm.

Mujeres

v2_2 <- c(muestra_mujeres$X15)
ad.test(v2_2)
## 
##  Anderson-Darling normality test
## 
## data:  v2_2
## A = 0.70887, p-value = 0.06033
shapiro.test(v2_2)
## 
##  Shapiro-Wilk normality test
## 
## data:  v2_2
## W = 0.96748, p-value = 0.1824

Como ambos p-value son mayores a 0.01 se podría concluir que los datos podrían seguir una distribución normal por lo que hacemos el t test

t.test(v2_2, alternative='greater', mu=55)
## 
##  One Sample t-test
## 
## data:  v2_2
## t = 1.6386, df = 49, p-value = 0.05385
## alternative hypothesis: true mean is greater than 55
## 95 percent confidence interval:
##  54.97548      Inf
## sample estimates:
## mean of x 
##    56.058

Como p-value es mayor a α, no hay suficiente evidencia para rechazar la hipótesis nula, es decir que la media sea menor a 55, por tanto, no podemos concluir que la media de la variable X15 de las mujeres sea mayor de 55cm.

c

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

v3_1 <- c(muestra_hombres$X7)
v3_2 <- c(muestra_mujeres$X7)

QQ-Plot datos Hombres:

qqnorm(v3_1)
qqline(v3_1)

QQ-Plot datos Mujeres:

qqnorm(v3_2)
qqline(v3_2)

En base a los 2 QQ-Plots de las muestras, vemos que para las muestras de los hombres los datos presentan una distribución normal, mientras que la de las mujeres no, sin embargo se usará el t test, ya que este es robusto ante desviaciones de la normalidad, Sin embargo, se tendrá en cuenta que la fiabilidad de los resultados no será la mejor, pero se evitará usar métodos no paramétricos que no tomen en cuenta la distribución de los datos

t.test(v3_1, v3_2, alternative = "two.sided")
## 
##  Welch Two Sample t-test
## 
## data:  v3_1 and v3_2
## t = 12.631, df = 96.089, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  1.230559 1.689441
## sample estimates:
## mean of x mean of y 
##    11.196     9.736

Como p-value es mucho menor a α, se concluye que los promedios de la variable X7 entre hombres y mujeres no son iguales, hay diferencia muy significativa

d

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

v4_1 <- c(muestra_hombres$X13)
v4_2 <- c(muestra_mujeres$X13)

QQ-Plot datos Hombres:

qqnorm(v4_1)
qqline(v4_1)

QQ-Plot datos Mujeres:

qqnorm(v4_2)
qqline(v4_2)

En base a los 2 QQ-Plots de las muestras, vemos que la gran mayoría de los datos están cerca de la línea, por lo que asumiremos por comodidad una distribución normal, esto principalmente para no recurrir a pruebas no paramétricas que no tomen en cuenta la distribución de los datos

t.test(v4_1, v4_2, alternative = "greater")
## 
##  Welch Two Sample t-test
## 
## data:  v4_1 and v4_2
## t = 2.7702, df = 94.505, p-value = 0.003373
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  2.044171      Inf
## sample estimates:
## mean of x mean of y 
##    86.732    81.626

Como p-value es menor al nivel de significancia, se rechaza la hipótesis nula, se concluye que La media de la variable X13 de hombres es mayor que la de las mujeres

e

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

v5 <- c(muestra_mujeres$X13)
var.test(x=v5, alternative='greater', null.value=80)
## 
##  X-squared test for variance
## 
## data:  v5
## X-squared = 62.028, df = 49, p-value = 0.1001
## alternative hypothesis: true variance is greater than 80
## 95 percent confidence interval:
##    0.0000 146.2473
## sample estimates:
## variance of x 
##      101.2697

Como el P-value es mayor a α, no se rechaza la hipótesis nula, es decir que la varianza de la variable X13 de las mujeres sea menor a 80, por lo que las evidencias no son suficientes para afirmar que la varianza de la variable es mayor que 80.

f

¿Es la varianza de la variable X8 en las hombres diferente de 1.5?, pruebe con alfa = 0.01.

v6 <- c(muestra_hombres$X8)
var.test(x=v6, alternative='two.sided', null.value=1.5)
## 
##  X-squared test for variance
## 
## data:  v6
## X-squared = 39.792, df = 49, p-value = 0.3538
## alternative hypothesis: true variance is not equal to 1.5
## 95 percent confidence interval:
##  0.8499879 1.8915658
## sample estimates:
## variance of x 
##      1.218127

Como el P-value es mayor a α, no se rechaza que la varianza sea igual a 1.5, por lo que no hay evidencia estadística suficiente para afirmar que sea diferente a 1.5 aunque la función var test diga que la varianza sea 1.218

Actividad 4: Regresión lineal

Elabore un breve análisis regresión lineal para las variables que usted con- sidere que tienen alta correlación.

Análisis preeliminar

Inicialmente usaremos la función pairs(), Esta produce gráficos de dispersión para todas las combinaciones de variables. La diagonal principal indica que variable se representa en cada eje de cada gráfico. Este arreglo de múltiples gráficas facilita encontrar potenciales variables relacionadas para realizar la regresión

pairs(muestra[1:100, 1:7])

Para facilitar la lectura del esquema se dividirá en dos partes

Primero para las primeras tres variables:

pairs(muestra[1:100, 1:3])

Después para las restantes:

pairs(muestra[1:100, 4:7])

Además del método gráfico, podemos general una matriz de coeficientes de corelación que facilite la tarea de encontrar relaciones.

cor(muestra)
##            X6        X7        X8       X13         X15       X23       X24
## X6  1.0000000 0.8908370 0.7965910 0.5193337  0.30832977 0.8322692 0.7415876
## X7  0.8908370 1.0000000 0.7938599 0.4809940  0.29569245 0.8129933 0.7327351
## X8  0.7965910 0.7938599 1.0000000 0.5522569  0.53788635 0.8373009 0.6669188
## X13 0.5193337 0.4809940 0.5522569 1.0000000  0.64467446 0.7306935 0.3435713
## X15 0.3083298 0.2956924 0.5378864 0.6446745  1.00000000 0.5760857 0.1866422
## X23 0.8322692 0.8129933 0.8373009 0.7306935  0.57608565 1.0000000 0.7484872
## X24 0.7415876 0.7327351 0.6669188 0.3435713  0.18664225 0.7484872 1.0000000
## X25 0.7943444 0.7870676 0.6098041 0.2694771 -0.04074625 0.6933598 0.7407458
##             X25
## X6   0.79434439
## X7   0.78706760
## X8   0.60980411
## X13  0.26947708
## X15 -0.04074625
## X23  0.69335975
## X24  0.74074575
## X25  1.00000000

Observando los resultados, es evidente que hay múltiples variables con relaciones positivas en las que vale la pena ahondar. Profundizaremos en los resultados de las relaciones entre X7, X6 y X13, X23

Diámetro de muñeca y diámetro del codo

Las primeras variables cuya relación analizaremos son el diámetro de muñeca (como variable respuesta) y de codo (como variable explicativa).

Para obtener la información más relevante para el análisis utilizamos la función lm()

x4.1<- muestra$X6
lm1<-lm(muestra$X7 ~ x4.1, data = muestra)
summary(lm1)
## 
## Call:
## lm(formula = muestra$X7 ~ x4.1, data = muestra)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.00207 -0.31217 -0.00624  0.26932  1.13190 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.26041    0.42487    5.32 6.55e-07 ***
## x4.1         0.61859    0.03187   19.41  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4257 on 98 degrees of freedom
## Multiple R-squared:  0.7936, Adjusted R-squared:  0.7915 
## F-statistic: 376.8 on 1 and 98 DF,  p-value: < 2.2e-16

A partir de estos resultados, concretamente de los estimados de intercepto y del diámetro de codo, podemos expresar y graficar manualmente el modelo ajustado con la siguiente función:

x <- seq(9, 15, by = 0.1)
fx <- 2.27164 +0.618* x
plot(x, fx, type ="o")

Esta nos brinda información adicional sobre la relación entre las variables como por ejemplo: se espera que por cada centímetro que aumente el diámetro del codo, el promedio de la misma medida de la muñeca aumente 0.618 cm.

Además, que si el diámetro del codo fuese 0, se esperaría un diámetro de muñeca de 22.27, sin embargo, es evidente que esta parte del análisis resulta inútil desde el contexto del presente trabajo, pues un diámetro de codo de 0 es antropométricamente imposible.

Ahora unimos nuestro modelo con el gráfico de dispersión:

ggplot(muestra, aes(x=X6, y=X7))+
  geom_point() + 
  geom_smooth(method = "lm", formula = y~x, se = FALSE)+ theme_gray()

Con la información recopilada, se puede predecir el diámetro de la muñeca de una persona de un determinado diámetro de codo.

Como referencia, predeciremos el diámetro de la muñeca de personas con diámetro de codo entre 11 y 14 cm de la siguiente forma:

referencia1 <- data.frame(x4.1 = seq(11, 14))
predict(lm1, referencia1)
##         1         2         3         4 
##  9.064895  9.683484 10.302074 10.920663

Así, nuestro modelo predice que una persona con diámetro de codo de 11cm, tendrá un diámetro de muñeca de 9.07cm. Asimismo, un diámetro de codo de 12, le corresponderá un diámetro de muñeca de 9.68cm y así sucesivamente según lo mostrado por los resultados de nuestra función.

Circunferencia abdominal y peso

Ahora procederemos con el análisis de otras variables altamente correlacionadas. En esta situación, el peso será la variable explicativa y la circunferencia abdominal la variable respuesta.

Una vez más iniciamos construyendo nuestro modelo con la función lm()

x4.2<- muestra$X23
lm2<-lm(muestra$X13 ~ x4.2, data = muestra)
summary(lm2)
## 
## Call:
## lm(formula = muestra$X13 ~ x4.2, data = muestra)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.2475  -4.6564  -0.6618   4.4141  18.1868 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 49.58492    3.32976   14.89   <2e-16 ***
## x4.2         0.51209    0.04833   10.60   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.534 on 98 degrees of freedom
## Multiple R-squared:  0.5339, Adjusted R-squared:  0.5292 
## F-statistic: 112.3 on 1 and 98 DF,  p-value: < 2.2e-16

construimos manualmente el modelo ajustado:

xf <- seq(40, 70, by = 0.1)
hx <- 43.95 +0.59811* xf
plot(xf, hx, type ="o")

En este caso, el modelo nos indica que, por cada kilo extra, se espera que la circunferencia abdominal promedio aumente en 0.598cm.

Ignoramos el análisis del punto de corte, pues como se mencionó antes, no tiene sentido en el contexto de este trabajo.

Graficamos la nube de puntos junto con nuestro modelo

ggplot(muestra, aes(x=X23, y=X13))+
  geom_point() + 
  geom_smooth(method = "lm", formula = y~x, se = FALSE)+ theme_gray()

Y finalmente realizamos algunas predicciones. Para este caso, predeciremos la circunferencia abdominal de personas que pesen entre 60 y 80kg

referencia2 <- data.frame(x4.2 = seq(60, 80))
circunf<-predict(lm2, referencia2)
nombres <- seq(60,80)
names(circunf) <- nombres
print(circunf)
##       60       61       62       63       64       65       66       67 
## 80.31018 80.82227 81.33435 81.84644 82.35853 82.87062 83.38270 83.89479 
##       68       69       70       71       72       73       74       75 
## 84.40688 84.91897 85.43105 85.94314 86.45523 86.96732 87.47940 87.99149 
##       76       77       78       79       80 
## 88.50358 89.01567 89.52775 90.03984 90.55193

El resultado nos muestra la circunferencia prededicha para personas que pesen más de 60 kilos y menos de 80. Vemos como la relación positiva se mantiene siempre.

Regresión lineal múltiple

De forma algo más experimental, exploraremos las regresiones lineales multiples. Para este tipo de regresiones se utilizan multiples varibles explicativas, manteniendo una única varible de respuesta. En este caso, usaremos el diámetro de las rodillas y la circunferencia abdominal como variables explicativas del peso.

Inicialmente crearemos un gráfico de dispersión para visualizar las variables:

Gráfico interactivo

plot_ly(x=muestra$X8, y=muestra$X13, z=muestra$X23, type="scatter3d", color=muestra$X23) %>% 
  layout(scene = list(xaxis = list(title = 'Diámetro de rodilla'),
                      yaxis = list(title = 'Circunferencia abdominal'),
                      zaxis = list(title = 'Peso')))
## No scatter3d mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Adicional a la información de los ejes, los colores indican que tan alto se encuentra cada punto en el eje z, correspondiente al peso.

Posteriormente, planteamos nuestro modelo.

lm3 <- lm(muestra$X23 ~ muestra$X8 + muestra$X13, data=muestra)
summary(lm3)
## 
## Call:
## lm(formula = muestra$X23 ~ muestra$X8 + muestra$X13, data = muestra)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.1686  -4.1540   0.2824   3.8701  15.7905 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -92.05985    8.23586 -11.178  < 2e-16 ***
## muestra$X8    6.03863    0.52085  11.594  < 2e-16 ***
## muestra$X13   0.55081    0.07681   7.171 1.48e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.067 on 97 degrees of freedom
## Multiple R-squared:  0.8046, Adjusted R-squared:  0.8006 
## F-statistic: 199.8 on 2 and 97 DF,  p-value: < 2.2e-16

Al igual que en una sola variable, podemos plantear un modelo con la información brindada por la función

fx2 = -76 + 5.074X8 + 0.583X13

esta función nos indica que un cambio unitario en el diámetro de la rodilla, causaría un aumento de 5.07kg en el promedio de peso, mientras que la misma situación para la circunferencia del abdomen, causaría un aumento en el promedio de peso de 0.583 (considerablemente menor).

Conclusiones

Las herramientas obtenidas en clase son aplicables a casos de la vida cotidiana, y nos permiten hacer aproximaciones confiables a medidas de la población a partir de muestras, además de entender la información recopilada y su lógica interna.

Bibliografía