Librerías

A continuación los paquetes pertinentes para la realización del trabajo que permitieron el desarrollo de las gráficas.

library(readxl)
library(dplyr)
library(tidyverse)
library(readxl)
library(dplyr)
library(nortest)
require(car)

Actividad 1

Empezamos con la actividad 1, en la cual cargamos el archivo y obtenemos una muestra aleatoria de 50 hombres y 50 mujeres

excel <-read_excel("C:\\Users\\USUARIO\\Downloads\\Medidas del cuerpo.xlsx",skip = 1, col_names = c("diametro codo", "diametro muneca", "diametro rodilla", "circunferencia abdominal", "circunferencia muslo", "peso", "altura", "genero"))
set.seed(1382)

Hombres <- filter(excel, genero == 1)
datos.d1 <- data.frame(Hombres)
muestra.homb <- datos.d1[sample(nrow(datos.d1),size=50),0:8]
muestra.homb
Mujeres <- filter(excel, genero == 0)
datos.d2 <- data.frame(Mujeres)
muestra.muj <- datos.d2[sample(nrow(datos.d2),size=50),0:8]
muestra.muj
muestra.tot <- rbind(muestra.homb, muestra.muj)
muestra.tot

Actividad 2

a.

DIÁMETRO DEL CODO

Primero se comprueba que la muestra provenga de una distribución normal, para ello se realiza un qqplot, un histograma y un diagrama de densidad

#qqplot

par(mfrow=c(1, 2))
  qqPlot(muestra.tot$diametro.codo, pch=19,
       main='QQplot para el diametro del codo',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 36 81

Ahora el histograma

#qqplot

hist(muestra.tot$diametro.codo, freq=TRUE,
     main='Histograma para el diametro del codo',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Y el diagrama de densidad

plot(density(muestra.tot$diametro.codo))

Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)

nor1 <- ad.test(muestra.tot$diametro.codo)
nor1
## 
##  Anderson-Darling normality test
## 
## data:  muestra.tot$diametro.codo
## A = 0.72121, p-value = 0.0581

según el valor p, quiere decir que es posibleafirmar que la muestra proviene de la distribución normal

res1 <- t.test(muestra.tot$diametro.codo, conf.level=0.90) 
res1$conf.int
## [1] 13.08575 13.55225
## attr(,"conf.level")
## [1] 0.9

Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre dicho intyervalo, eso nos quiere decir que con un cierto grado de seguridad el promedio real de la variable se encuentra dentro de ese intervalo.

DIÁMETRO DE LA MUÑECA

Primero el qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.tot$diametro.muneca, pch=19,
       main='QQplot para el diametro de la muñeca',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 81 60

Ahora el histograma

hist(muestra.tot$diametro.muneca, freq=TRUE,
     main='Histograma para el diametro de la muñeca',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Y el diagrama de densidad

plot(density(muestra.tot$diametro.muneca))

Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)

nor2 <- ad.test(muestra.tot$diametro.muneca)
nor2
## 
##  Anderson-Darling normality test
## 
## data:  muestra.tot$diametro.muneca
## A = 0.85757, p-value = 0.02662

Como el valor p es superior a 0.05, eso quiere decir que es posible afirmar que la muestra proviene de la distribución normal

res2 <- t.test(muestra.tot$diametro.muneca, conf.level=0.90) 
res2$conf.int
## [1] 10.36809 10.69791
## attr(,"conf.level")
## [1] 0.9

Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre denytro del intervalo calculado

DIÁMETRO DE RODILLA

Primero el qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.tot$diametro.rodilla, pch=19,
       main='QQplot para el diametro de rodilla',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1]  4 81

Ahora el histograma

hist(muestra.tot$diametro.rodilla, freq=TRUE,
     main='Histograma para el diametro de rodilla',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Y el diagrama de densidad

plot(density(muestra.tot$diametro.rodilla))

Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)

nor3 <- ad.test(muestra.tot$diametro.rodilla)
nor3
## 
##  Anderson-Darling normality test
## 
## data:  muestra.tot$diametro.rodilla
## A = 0.47772, p-value = 0.2318

Como el valor p es es superior a 0.005, eso quiere decir que es posible afirmar que la muestra proviene de la distribución normal

res3 <- t.test(muestra.tot$diametro.rodilla, conf.level=0.90) 
res3$conf.int
## [1] 18.61687 19.06113
## attr(,"conf.level")
## [1] 0.9

Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre ese intervalo

b.

GGplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.muj$altura, pch=19,
       main='QQplot para la altura de las mujeres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 5 7

Ahora el histograma

hist(muestra.muj$altura, freq=TRUE,
     main='Histograma para la altura de las mujeres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.muj$altura))

Prueba de normalidad altura mujeres

ad.test (muestra.muj$altura)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.muj$altura
## A = 0.52178, p-value = 0.1758

Número de mujeres que miden menos de 165 cm

Como el valor p, cumple la prueba de normalidad

alt <- sum(muestra.muj$altura<165)
alt
## [1] 27
#intervalo de confianza # x=27
res4 <- prop.test(x=alt, n=50, conf.level=0.99)
res4$conf.int
## [1] 0.3556202 0.7145227
## attr(,"conf.level")
## [1] 0.99

Con una confianza del 99% se estima que la proporción de las mujeres que miden menos de 165 cm se encuentra entre dicho intervalo

c.

Pruebas normalidad: Hombres

qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.homb$circunferencia.abdominal, pch=19,
       main='QQplot para la circunferencia abdominal de los hombres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 26 29

Histograma

hist(muestra.homb$circunferencia.abdominal, freq=TRUE,
     main='Histograma para la circunferencia abdominal de los hombres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.homb$circunferencia.abdominal))

Prueba de normalidad

ad.test (muestra.homb$circunferencia.abdominal)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.homb$circunferencia.abdominal
## A = 0.38333, p-value = 0.3837

Como el valo p, cumple la prueba de normalidad

Pruebas normalidad: Mujeres

qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.muj$circunferencia.abdominal, pch=19,
       main='QQplot para la circunferencia abdominal de las mujeres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 6 1

Histograma

hist(muestra.muj$circunferencia.abdominal, freq=TRUE,
     main='Histograma para la circunferencia abdominal de las mujeres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.muj$circunferencia.abdominal))

Prueba de normalidad circuferencia abdominal mujeres

ad.test (muestra.muj$circunferencia.abdominal)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.muj$circunferencia.abdominal
## A = 0.37633, p-value = 0.3985

El valor p, cumple la prueba de normalidad

Respuesta

res5 <- t.test(x=muestra.homb$circunferencia.abdominal, y=muestra.muj$circunferencia.abdominal,
               paired=FALSE, var.equal=TRUE, conf.level = 0.95)
res5$conf.int
## [1] 2.560634 9.515366
## attr(,"conf.level")
## [1] 0.95

Así, podemos decir que a partir del intervalo de confianza anterior se puede concluir, con un nivel de confianza del 95%, que la circunferencia abdominal promedio de los hombres es superior a la circunferencia abdominal promedio de las mujeres, ya que el intervalo de confianza no incluye el cero, y por ser positivos sus límites, se puede afirmar con un nivel de confianza del 95% que el promedio circ. adbominal hombres > promedio circ. adbominal

d.

Pruebas normalidad: Hombres

qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.homb$diametro.rodilla, pch=19,
       main='QQplot para el diámetro de las rodillas de los hombres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 13  4

Histograma

hist(muestra.homb$diametro.rodilla, freq=TRUE,
     main='Histograma para el diámetro de las rodillas de los hombres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.homb$diametro.rodilla))

Prueba de normalidad

ad.test (muestra.homb$diametro.rodilla)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.homb$diametro.rodilla
## A = 0.594, p-value = 0.1171

Como el valor p es de 0.2, cumple la prueba de normalidad

Pruebas normalidad: Mujeres

qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.muj$diametro.rodilla, pch=19,
       main='QQplot para el diámetro de la rodilla de las mujeres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1] 6 1

Histograma

hist(muestra.muj$diametro.rodilla, freq=TRUE,
     main='Histograma para el diámetro de la rodilla de las mujeres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.muj$diametro.rodilla))

Prueba de normalidad

ad.test (muestra.muj$diametro.rodilla)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.muj$diametro.rodilla
## A = 0.21321, p-value = 0.8444

Como el valor p, cumple la prueba de normalidad, teniendo en cuenta un nivel de significacia del 10%

Respuesta

res6 <- t.test(x=muestra.homb$diametro.rodilla, y=muestra.muj$diametro.rodilla,
               paired=FALSE, var.equal=TRUE, conf.level = 0.95)
res6$conf.int
## [1] 1.451943 2.224057
## attr(,"conf.level")
## [1] 0.95

Así, podemos decir que a partir del intervalo de confianza anterior se puede concluir, con un nivel de confianza del 95%, que el diámetro de la rodilla promedio de los hombres es superior al diámetro de la rodilla promedio de las mujeres, ya que el intervalo de confianza no incluye el cero, y por ser positivos sus límites, se puede afirmar con un nivel de confianza del 95% que el promedio del diametro rodilla hombres > promedio diametro rodilla

e.

Qqplot

par(mfrow=c(1, 2))
require(car)  # Debe instalar antes el paquete car
qqPlot(muestra.muj$circunferencia.muslo, pch=19,
       main='QQplot para la circunferencia del muslo de las mujeres',
       xlab='Cuantiles teóricos',
       ylab='Cuantiles muestrales')
## [1]  1 16

Histograma

hist(muestra.muj$circunferencia.muslo, freq=TRUE,
     main='Histograma parala circunferencia del muslo de las mujeres',
     xlab='Altura (cm)',
     ylab='Frecuencia')

Diagrama de densidad

plot(density(muestra.muj$circunferencia.muslo))

Prueba de normalidad circuferencia abdominal mujeres

ad.test (muestra.muj$circunferencia.muslo)
## 
##  Anderson-Darling normality test
## 
## data:  muestra.muj$circunferencia.muslo
## A = 1.6087, p-value = 0.0003399

Como el valor p, sigue una distribución normal

respuesta

if (!require('devtools')) install.packages('devtools')
devtools::install_github('fhernanb/stests', force=TRUE)
## 
## ── R CMD build ─────────────────────────────────────────────────────────────────
##   
  
  
   checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' ...
  
   checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' ... 
  
✔  checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' (521ms)
## 
  
  
  
─  preparing 'stests': (413ms)
##    checking DESCRIPTION meta-information ...
  
   checking DESCRIPTION meta-information ... 
  
✔  checking DESCRIPTION meta-information
## 
  
  
  
─  checking for LF line-endings in source and make files and shell scripts
## 
  
─  checking for empty or unneeded directories
## 
  
   Omitted 'LazyData' from DESCRIPTION
## 
  
  
  
─  building 'stests_0.1.0.tar.gz'
## 
  
   
## 
require(stests)  # Para cargar el paquete
res7 <- stests::var.test(x=muestra.muj$circunferencia.muslo, conf.level=0.90)
res7$conf.int
## [1] 13.17663 25.76222
## attr(,"conf.level")
## [1] 0.9

Actividad 3

a

resultX6 <- t.test(muestra.tot$diametro.codo, mu = 13)
resultX6
## 
##  One Sample t-test
## 
## data:  muestra.tot$diametro.codo
## t = 2.2708, df = 99, p-value = 0.02533
## alternative hypothesis: true mean is not equal to 13
## 95 percent confidence interval:
##  13.04026 13.59774
## sample estimates:
## mean of x 
##    13.319

la medida de la variable da muy cercana a 13 en ambos casos para hombres y mujeres

b

resultx15 <- t.test(muestra.tot$circunferencia.muslo, mu = 55, alternative = "greater")
resultx15 
## 
##  One Sample t-test
## 
## data:  muestra.tot$circunferencia.muslo
## t = 3.2121, df = 99, p-value = 0.0008889
## alternative hypothesis: true mean is greater than 55
## 95 percent confidence interval:
##  55.66666      Inf
## sample estimates:
## mean of x 
##     56.38

en la medida de la variable se puede apreciar un valor mayor a 57

c

resultX7 <- t.test(muestra.homb$diametro.muneca, muestra.muj$diametro.muneca, alternative = "two.sided", var.equal = TRUE)
resultX7
## 
##  Two Sample t-test
## 
## data:  muestra.homb$diametro.muneca and muestra.muj$diametro.muneca
## t = 11.574, df = 98, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  1.244468 1.759532
## sample estimates:
## mean of x mean of y 
##    11.284     9.782

las medidas no son iguales siendo un 11 para hombres y un 9 para mujeres

d

resultx13 <- t.test(muestra.homb$circunferencia.abdominal, muestra.muj$circunferencia.abdominal, alternative = "greater", var.equal = FALSE)
resultx13
## 
##  Welch Two Sample t-test
## 
## data:  muestra.homb$circunferencia.abdominal and muestra.muj$circunferencia.abdominal
## t = 3.4458, df = 96.325, p-value = 0.0004226
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  3.127746      Inf
## sample estimates:
## mean of x mean of y 
##    87.514    81.476

en el promedio la medida de los hombres es mayor siendo esta de 88 y de las mujeres 83

e

resultx13.muj <- t.test(muestra.muj$circunferencia.abdominal, alternative = "greater", sigma.squared = 80, conf.level = 0.99)
resultx13.muj
## 
##  One Sample t-test
## 
## data:  muestra.muj$circunferencia.abdominal
## t = 61.807, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 0
## 99 percent confidence interval:
##  78.30579      Inf
## sample estimates:
## mean of x 
##    81.476

la varianza de la variable es ligeramente superior a 80

f

valor_referencia <- 1.5

resultx8 <- t.test(muestra.homb$diametro.rodilla, alternative = "two.sided", mu = valor_referencia, conf.level = 0.99)
resultx8
## 
##  One Sample t-test
## 
## data:  muestra.homb$diametro.rodilla
## t = 130.47, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 1.5
## 99 percent confidence interval:
##  19.38296 20.13304
## sample estimates:
## mean of x 
##    19.758

a varianza de la variable para hombres es diferente de 1.5

Actividad 4 - Análisis de regresión lineal

a. Analizaremos la correlación del peso con la altura:

Podemos crear la gráfica de esta manera

qplot(altura, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)

Ahora obtenemos los coeficientes creando un modelo lineal

modelo <- lm(peso ~ altura, data = muestra.tot)
modelo
## 
## Call:
## lm(formula = peso ~ altura, data = muestra.tot)
## 
## Coefficients:
## (Intercept)       altura  
##    -125.554        1.134

Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo

summary(modelo)
## 
## Call:
## lm(formula = peso ~ altura, data = muestra.tot)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -18.453  -6.242  -1.304   5.570  24.563 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -125.55372   15.87588  -7.908 3.98e-12 ***
## altura         1.13441    0.09262  12.248  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.588 on 98 degrees of freedom
## Multiple R-squared:  0.6049, Adjusted R-squared:  0.6008 
## F-statistic:   150 on 1 and 98 DF,  p-value: < 2.2e-16

b. Analizaremos la correlación del peso con la circunferencia abdominal :

Podemos crear la gráfica de esta manera

qplot(circunferencia.abdominal, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)

Aahora obtenemos los coeficientes creando un modelo lineal

modelo2 <- lm(peso ~ circunferencia.abdominal, data = muestra.tot)
modelo2
## 
## Call:
## lm(formula = peso ~ circunferencia.abdominal, data = muestra.tot)
## 
## Coefficients:
##              (Intercept)  circunferencia.abdominal  
##                  -24.136                     1.098

Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo

summary(modelo2)
## 
## Call:
## lm(formula = peso ~ circunferencia.abdominal, data = muestra.tot)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -19.212  -6.994  -1.520   7.428  17.764 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              -24.13582    8.42910  -2.863  0.00513 ** 
## circunferencia.abdominal   1.09770    0.09917  11.068  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.108 on 98 degrees of freedom
## Multiple R-squared:  0.5556, Adjusted R-squared:  0.551 
## F-statistic: 122.5 on 1 and 98 DF,  p-value: < 2.2e-16

c. Analizaremos la correlación del peso con la circunferencia del muslo :

Podemos crear la gráfica de esta manera

qplot(circunferencia.muslo, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)

Ahora obtenemos los coeficientes creando un modelo lineal

modelo3 <- lm(peso ~ circunferencia.muslo, data = muestra.tot)
modelo3
## 
## Call:
## lm(formula = peso ~ circunferencia.muslo, data = muestra.tot)
## 
## Coefficients:
##          (Intercept)  circunferencia.muslo  
##              -33.539                 1.812

Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo

summary(modelo3)
## 
## Call:
## lm(formula = peso ~ circunferencia.muslo, data = muestra.tot)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -17.976  -9.079  -1.786   8.181  23.144 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -33.539     14.815  -2.264   0.0258 *  
## circunferencia.muslo    1.812      0.262   6.915 4.81e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.2 on 98 degrees of freedom
## Multiple R-squared:  0.3279, Adjusted R-squared:  0.3211 
## F-statistic: 47.82 on 1 and 98 DF,  p-value: 4.808e-10

library(openxlsx) excel <- muestra.tot write.xlsx(excel, “Datosexcel.xlsx”)