Objetivo
Realizar cálculos de probabilida bajo la distribución Normal
Las librerías
1. library(dplyr)
2. library(mosaic)
3. library(readr)
4. library(ggplot2)
5. library(knitr)
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 solamente
colnames(datos)[23:25] <- c("peso", "estatura", "genero")
kable(head(datos))
| 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))
| 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
# MASCULINO
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
# FEMENINO
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
ESTADISTICOS
P1 ESTADISTICOS
Calculando estadísticos de masculinos y femeninos peso
# MASCULINO
media.peso.m <- mean(masculinos$peso)
desv.std.peso.m <- sd(masculinos$peso)
# FEMENINO
media.peso.f <- mean(femeninos$peso)
desv.std.peso.f <- sd(femeninos$peso)
# MASCULINO
media.peso.m
## [1] 78.14453
desv.std.peso.m
## [1] 10.51289
# FEMENINO
media.peso.f
## [1] 60.60038
# FEMENINO
desv.std.peso.f
## [1] 9.615699
P2 ESTADISTICOS
Calculando estadísticos de masculinos y femeninos estatura
# MASCULINO
media.estatura.m <- mean(masculinos$estatura)
desv.std.estatura.m <- sd(masculinos$estatura)
# FEMENINO
media.estatura.f <- mean(femeninos$estatura)
desv.std.estatura.f <- sd(femeninos$estatura)
# MASCULINO
media.estatura.m
## [1] 177.7453
# MASCULINO
desv.std.estatura.m
## [1] 7.183629
# FEMENINO
media.estatura.f
## [1] 164.8723
# FEMENINO
desv.std.estatura.f
## [1] 6.544602
Calcular probabilidades PESO
P1
1. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y 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
P2
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 = media.peso.m, sd = desv.std.peso.m, groups = x > 70 & x < 80, type = "h", xlab = "Peso Hombres", ylab = "Densidad" )

- Calculando la probabilidad
pnorm(q = 80, mean = media.peso.m, sd = desv.std.peso.m) - pnorm(q = 70, mean = media.peso.m, sd = desv.std.peso.m)
## [1] 0.3507943
P3
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 = media.peso.m, sd = desv.std.peso.m, groups = x < 75, type = "h", xlab = "Peso Hombres", ylab = "Densidad" )

- Calculando la probabilidad
pnorm(q = 75, mean = media.peso.m, sd = desv.std.peso.m)
## [1] 0.3824272
P4
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
P5
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 = 60, mean = media.peso.f, sd = desv.std.peso.f) - pnorm(q = 50, mean = media.peso.f, sd = desv.std.peso.f)
## [1] 0.339964
P6
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)
## [1] 0.05236025
Calcular probabilidades ESTATURA
P7
7. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y 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
P8
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 = 185, mean = media.estatura.m, sd = desv.std.estatura.m) - pnorm(q = 175, mean = media.estatura.m, sd = desv.std.estatura.m)
## [1] 0.4925565
P9
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
1 - pnorm(q = 170, mean = media.estatura.m, sd = desv.std.estatura.m, lower.tail = FALSE)
## [1] 0.1404736
P10
10. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y 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
P11
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 = 170, mean =media.estatura.f, sd = desv.std.estatura.f) - pnorm(q = 165, mean =media.estatura.f, sd = desv.std.estatura.f)
## [1] 0.2755498
P12
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
1 - pnorm(q = 155, mean =media.estatura.f, sd = desv.std.estatura.f, lower.tail = FALSE)
## [1] 0.06571769
CONCLUSIONES
la probabilidad es una estrategia mediante la cual se intenta estimar la frecuencia con la que se obtiene un cierto resultado en el marco de una experiencia en la que se conocen todos los resultados posibles. Así, el ejemplo más tradicional consiste en definir cual es la prevalencia de obtener un número al arrojar un dado.