Objetivo
Realizar cálculos de probabilida bajo la distribución Normal
Las librerías
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(mosaic)
## Loading required package: lattice
## Loading required package: ggformula
## Loading required package: ggplot2
## Loading required package: ggstance
##
## Attaching package: 'ggstance'
## The following objects are masked from 'package:ggplot2':
##
## geom_errorbarh, GeomErrorbarh
##
## New to ggformula? Try the tutorials:
## learnr::run_tutorial("introduction", package = "ggformula")
## learnr::run_tutorial("refining", package = "ggformula")
## Loading required package: mosaicData
## Loading required package: Matrix
## Registered S3 method overwritten by 'mosaic':
## method from
## fortify.SpatialPolygonsDataFrame ggplot2
##
## The 'mosaic' package masks several functions from core packages in order to add
## additional features. The original behavior of these functions should not be affected by this.
##
## Note: If you use the Matrix package, be sure to load it BEFORE loading mosaic.
##
## Have you tried the ggformula package for your plots?
##
## Attaching package: 'mosaic'
## The following object is masked from 'package:Matrix':
##
## mean
## The following object is masked from 'package:ggplot2':
##
## stat
## The following objects are masked from 'package:dplyr':
##
## count, do, tally
## The following objects are masked from 'package:stats':
##
## binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
## quantile, sd, t.test, var
## The following objects are masked from 'package:base':
##
## max, mean, min, prod, range, sample, sum
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 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
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 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
1 - pnorm(q = 60, mean = media.peso.m, sd = desv.std.peso.m)
## [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 = 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
3. ¿Cual es la probabilidad de elegir a una persona al azar que sea varón masculinos y que pese menos de 75 kilos?
plotDist("norm", mean = media.peso.m, sd = desv.std.peso.m, groups =x<75, type = "h", xlab = "Peso Hombres", ylab = "Densidad" )

pnorm(q = 75, mean = media.peso.m, sd = desv.std.peso.m, )
## [1] 0.3824272
4. ¿Cual es la probabilidad de elegir a una persona al azar que sea mujer femeninos y que pese mas de 55 kilos?
plotDist("norm", mean = media.peso.f, sd = desv.std.peso.f, groups = x > 55, type = "h", xlab = "Peso Mujeres", ylab = "Densidad" )

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?
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
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
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
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
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, )
## [1] 0.1404736
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
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 = "Peso 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
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, )
## [1] 0.06571769