Cargamos las librerías

library(dplyr)
library(mosaic)
library(readr)
library(ggplot2)  # Para gráficos
library(knitr)    # Para formateo de datos

Los datos

datos <- read.table("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/body.dat.txt", quote="\"", comment.char="")

datos <- as.data.frame(datos)

Seleccionar y poner nombres de columnas a las columnas 23, 24 y 25 únicamente

colnames(datos)[23:25] <- c("peso", "estatura", "genero")

kable(head(datos))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 peso estatura genero
42.9 26.0 31.5 17.7 28.0 13.1 10.4 18.8 14.1 106.2 89.5 71.5 74.5 93.5 51.5 32.5 26.0 34.5 36.5 23.5 16.5 21 65.6 174.0 1
43.7 28.5 33.5 16.9 30.8 14.0 11.8 20.6 15.1 110.5 97.0 79.0 86.5 94.8 51.5 34.4 28.0 36.5 37.5 24.5 17.0 23 71.8 175.3 1
40.1 28.2 33.3 20.9 31.7 13.9 10.9 19.7 14.1 115.1 97.5 83.2 82.9 95.0 57.3 33.4 28.8 37.0 37.3 21.9 16.9 28 80.7 193.5 1
44.3 29.9 34.0 18.4 28.2 13.9 11.2 20.9 15.0 104.5 97.0 77.8 78.8 94.0 53.0 31.0 26.2 37.0 34.8 23.0 16.6 23 72.6 186.5 1
42.5 29.9 34.0 21.5 29.4 15.2 11.6 20.7 14.9 107.5 97.5 80.0 82.5 98.5 55.4 32.0 28.4 37.7 38.6 24.4 18.0 22 78.8 187.2 1
43.3 27.0 31.5 19.6 31.3 14.0 11.5 18.8 13.9 119.8 99.9 82.5 80.1 95.3 57.5 33.0 28.0 36.6 36.1 23.5 16.9 21 74.8 181.5 1
datos <- select(datos, peso, estatura, genero)

kable(head(datos))
peso estatura genero
65.6 174.0 1
71.8 175.3 1
80.7 193.5 1
72.6 186.5 1
78.8 187.2 1
74.8 181.5 1

Poner la columna genero como factor 1, 0

datos$genero <- as.factor(datos$genero)

Ver estadísticos

summary(datos)
##       peso           estatura     genero 
##  Min.   : 42.00   Min.   :147.2   0:260  
##  1st Qu.: 58.40   1st Qu.:163.8   1:247  
##  Median : 68.20   Median :170.3          
##  Mean   : 69.15   Mean   :171.1          
##  3rd Qu.: 78.85   3rd Qu.:177.8          
##  Max.   :116.40   Max.   :198.1

Visulizar datos con diagrama de cajas. Peso

ggplot(datos, aes(genero, peso)) +
  geom_boxplot(colour = c("deeppink", "dodgerblue4"))

Visulizar datos con diagrama de cajas. Estatura

ggplot(datos, aes(genero, estatura)) +
  geom_boxplot(colour = c("deeppink", "dodgerblue4"))

Filtrar masculinos y femeninos

masculinos <-  filter(datos, genero == 1)

summary(masculinos)
##       peso           estatura     genero 
##  Min.   : 53.90   Min.   :157.2   0:  0  
##  1st Qu.: 70.95   1st Qu.:172.9   1:247  
##  Median : 77.30   Median :177.8          
##  Mean   : 78.14   Mean   :177.7          
##  3rd Qu.: 85.50   3rd Qu.:182.7          
##  Max.   :116.40   Max.   :198.1
femeninos <- filter(datos, genero == 0)

summary(femeninos)
##       peso          estatura     genero 
##  Min.   : 42.0   Min.   :147.2   0:260  
##  1st Qu.: 54.5   1st Qu.:160.0   1:  0  
##  Median : 59.0   Median :164.5          
##  Mean   : 60.6   Mean   :164.9          
##  3rd Qu.: 65.6   3rd Qu.:169.5          
##  Max.   :105.2   Max.   :182.9

Calculando estadísticos de masculinos y femeninos segun el peso

media.peso.m <- mean(masculinos$peso)
desv.std.peso.m <- sd(masculinos$peso)


media.peso.f <- mean(femeninos$peso)
desv.std.peso.f <- sd(femeninos$peso)


media.peso.m
## [1] 78.14453
desv.std.peso.m
## [1] 10.51289
media.peso.f
## [1] 60.60038
desv.std.peso.f
## [1] 9.615699

Calculando estadísticos de masculinos y femeninos estatura

media.estatura.m <- mean(masculinos$estatura)
desv.std.estatura.m <- sd(masculinos$estatura)


media.estatura.f <- mean(femeninos$estatura)
desv.std.estatura.f <- sd(femeninos$estatura)


media.estatura.m
## [1] 177.7453
desv.std.estatura.m
## [1] 7.183629
media.estatura.f
## [1] 164.8723
desv.std.estatura.f
## [1] 6.544602

Calcular probabilidades PESO

####1. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinosy que pese mas de 60 kilos *Se requieren los datos de masculinos

*Visulizando la curva de campana

plotDist("norm", mean = media.peso.m, sd = desv.std.peso.m, groups = x > 60, type = "h", xlab = "Peso Hombres", ylab = "Densidad" )

*Calculando la probabilidad

pnorm(q = 60, mean = media.peso.m, sd = desv.std.peso.m, lower.tail = FALSE)
## [1] 0.9578202

2. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y que pese entre 70 y 80 kilos

Se requieren los datos de masculinos Visulizando la curva de campana

plotDist("norm", mean = mean(masculinos$peso),  sd = sd(masculinos$peso), groups = x > 70 & x<80 , type = "h")

pnorm(q = 70 & 80, mean = media.peso.m, sd = desv.std.peso.m, lower.tail = FALSE)
## [1] 1
1 - pnorm(q = 70 & 80, mean = media.peso.m, sd = desv.std.peso.m)
## [1] 1

*Calculando la probabilidad

3. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y que pese menos de 75 kilos

Se requieren los datos de masculinos Visulizando la curva de campana

plotDist("norm", mean = mean(masculinos$peso),  sd = sd(masculinos$peso), groups = x < 75 , type = "h")

1 - pnorm(q = 75, mean = media.peso.m, sd = desv.std.peso.m)
## [1] 0.6175728

4. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninosy que pese mas de 55 kilos

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.peso.f, sd = desv.std.peso.f, groups = x > 55, type = "h", xlab = "Peso Mujeres", ylab = "Densidad" )

*Calculando la probabilidad

pnorm(q = 55, mean = media.peso.f, sd = desv.std.peso.f, lower.tail = FALSE)
## [1] 0.7198584

5. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y que pese entre 50 y 60 kilos

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.peso.f, sd = desv.std.peso.f, groups = x > 50 & x<60, type = "h", xlab = "Peso Mujeres", ylab = "Densidad" )

*Calculando la probabilidad

pnorm(q = 50 & 60, mean = media.peso.f, sd = desv.std.peso.f, lower.tail = FALSE)
## [1] 1

6. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y que pese menos de 45 kilos

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.peso.f, sd = desv.std.peso.f, groups = x <45, type = "h", xlab = "Peso Mujeres", ylab = "Densidad" )

*Calculando la probabilidad

pnorm(q = 45, mean = media.peso.f, sd = desv.std.peso.f, lower.tail = FALSE)
## [1] 0.9476397

Calcular probabilidades ESTATURA

7. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinosy que mida mas de 165 cm de altura

Se requieren los datos de masculinos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.m, sd = desv.std.estatura.m, groups = x > 165, type = "h", xlab = "Estatura Hombres", ylab = "Densidad")

  • Calculando la probabilidad
pnorm(q = 165, mean = media.estatura.m, sd = desv.std.estatura.m, lower.tail = FALSE)
## [1] 0.9619867

8. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y que mida entre 175 y 185 de estatura

Se requieren los datos de masculinos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.m, sd = desv.std.estatura.m, groups = x > 175 & x<185, type = "h", xlab = "Estatura Hombres", ylab = "Densidad")

*Calculando la probabilidad

pnorm(q = 175 & 185, mean = media.estatura.m, sd = desv.std.estatura.m, lower.tail = FALSE)
## [1] 1

9. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y que mida menos de 170 de altura

Se requieren los datos de masculinos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.m, sd = desv.std.estatura.m, groups = x<170, type = "h", xlab = "Estatura Hombres", ylab = "Densidad")

*Calculando la probabilidad

pnorm(q = 170, mean = media.estatura.m, sd = desv.std.estatura.m, lower.tail = FALSE)
## [1] 0.8595264

10. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninosy que mida mas de 155 de altura

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.f, sd = desv.std.estatura.f, groups = x > 155, type = "h", xlab = "Estatura Mujeres", ylab = "Densidad")

*Calculando la probabilidad

pnorm(q = 155, mean =media.estatura.f, sd = desv.std.estatura.f, lower.tail = FALSE)
## [1] 0.9342823

11. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y que mida entre 165 y 170 de estatura

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.f, sd = desv.std.estatura.f, groups = x >165 & x<170, type = "h", xlab = "Estatura Mujeres", ylab = "Densidad")

*Calculando la probabilidad

pnorm(q = 165 & 170, mean =media.estatura.f, sd = desv.std.estatura.f, lower.tail = FALSE)
## [1] 1

12. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y mida que menos de 155 de altura

Se requieren los datos de femeninos Visulizando la curva de campana

plotDist("norm", mean = media.estatura.f, sd = desv.std.estatura.f, groups = x <155, type = "h", xlab = "Estatura Mujeres", ylab = "Densidad")

*Calculando la probabilidad

pnorm(q = 155, mean =media.estatura.f, sd = desv.std.estatura.f, lower.tail = FALSE)
## [1] 0.9342823