Distribuciones discretas

Binomial

  • Suponga que se toman 10 semillas de un tipo de pasto y se registran los eventos “germinó” o “no germinó” después de cinco días de la siembra. Las semillas están lo suficientemente aisladas como para garantizar respuestas independientes. Si la probabilidad de la germinación es 0.25 (cada semilla), obtener:

Punto 1

  • Probabilidad de que germinen 7 de las 10 semillas. \(P(X = 7)\)
choose(n = 10, k = 7) * 0.25^7 * (1 - 0.25)^(10-7)
## [1] 0.003089905
  • Con R se puede calcular a través de la función dbinom():
dbinom(x = 7, size = 10, prob = 0.25)
## [1] 0.003089905

Punto 2

  • Probabilidad de que germinen al menos 3 de las 10 semillas. \(P(X \geq 3)\)
# Una opción 
sum(dbinom(x = 3:10, size = 10, prob = 0.25))
## [1] 0.4744072
# Otra opción 
1 - sum(dbinom(x = 0:2, size = 10, prob = 0.25))
## [1] 0.4744072
# Otra opción
1 - pbinom(q = 2, size = 10, prob = 0.25)
## [1] 0.4744072

Punto 3

  • Probabilidad de que germinen máximo 5 semillas. \(P(X \leq 5)\)
pbinom(q = 5, size = 10, prob = 0.25, lower.tail = TRUE)
## [1] 0.9802723

Punto 4

  • La esperanza matemática de esta variable aleatoria:
n <- 10
p <- 0.25

n * p
## [1] 2.5

Punto 5

  • La varianza
q <- 1 - p

n * p * q
## [1] 1.875

Simulación

  • Distribución binomial cuando p es pequeño:
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.3     ✓ dplyr   1.0.7
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   2.0.1     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
set.seed(2021)
rbinom(n = 100, size = 20, prob = 0.1) %>% 
  table() %>% 
  barplot()

  • Distribución binomial cuando p es grande:
set.seed(2021)
rbinom(n = 100, size = 20, prob = 0.9) %>% 
  table() %>% 
  barplot()

  • Distribución binomial cuando p y q son similares:
set.seed(2021)
rbinom(n = 100, size = 20, prob = 0.5) %>% 
  table() %>% 
  barplot()

Distribución Poisson

Si el número promedio de picaduras de una plaga cualquiera por semilla es 0.2 (es decir, que en promedio, de cada 100 semillas, 20 tienen picadura).

Punto 1

  • ¿Cuántas de 100 semillas no tendrán picadura? \(P(X=0)\)
(0.2^0 *  exp(1)^-0.2) / factorial(0)
## [1] 0.8187308
  • En R:
dpois(x = 0, lambda = 0.2)
## [1] 0.8187308

Punto 2

  • ¿Cuántas tendrán una sola picadura? \(P(X =1)\)
dpois(x = 1, lambda = 0.2)
## [1] 0.1637462

Punto 3

  • ¿Cuántas tendrán más de 1 picadura? \(P(X > 1)\)
# Una opción:
1 - sum(dpois(x = 0:1, lambda = 0.2))
## [1] 0.0175231
# Otra opción:
1 - ppois(q = 1, lambda = 0.2, lower.tail = TRUE)
## [1] 0.0175231
# Otra opción:
ppois(q = 1, lambda = 0.2, lower.tail = FALSE)
## [1] 0.0175231

Distribución geométrica

Suponga que de registros históricos en una fábrica dedicada a producir bombillos, se conoce que la probabilidad de que un bombillo esté dañado es 0.01. Se asume que los bombillos evaluados son independientes.

Punto 1

  • La probabilidad de que se necesite analizar exactamente 125 bombillos para encontrar uno defectuoso. \(P(X = 125)\)
0.01 * (1 - 0.01)^(125 - 1)
## [1] 0.002875836
  • Con R:
dgeom(x = 125, prob = 0.01)
## [1] 0.002847078

Punto 2

  • La probabilidad de que se necesite analizar máximo 50 bombillos para encontrar uno defectuoso.
pgeom(q = 50, prob = 0.01, lower.tail = TRUE)
## [1] 0.401044

Punto 3

  • La esperanza matemática.
1 / 0.01
## [1] 100

Distribución binomial negativa

  • Una pareja desea intentar tener hijos hasta que tengan dos niñas. Si la probabilidad de nacer mujer es igual a 0.5, calcular:

Punto 1

  • La probabilidad de que la pareja lo logre en exactamente 2 nacimientos
dnbinom(x = 0, size = 2, prob = 0.5)
## [1] 0.25

Punto 2

  • La probabilidad de que la pareja lo logre en cuatro o más nacimientos
1 - sum(dnbinom(x = 0:1, size = 2, prob = 0.5))
## [1] 0.5

Punto 3

  • Promedio de nacimientos para lograr tener 2 hijas
2 / 0.5
## [1] 4

Distribución hipergeométrica

Un lote de bovinos contiene 100 animales alimentados con la dieta A y 200 animales alimentados con la dieta B. Si se escogen 4 animales al azar, sin reemplazo. Obtener:

Punto 1

  • La probabilidad de que todos los bovinos sean alimentados con la dieta A.
    • x: valor que toma la variable aleatoria
    • m: k para la dieta A (100)
    • n: k para la dieta B (200)
    • k: tamaño de la muestra
dhyper(x = 4, m = 100, n = 200, k = 4)
## [1] 0.01185408

Punto 2

  • La probabilidad de que dos o más bovinos sean alimentados con la dieta A.
sum(dhyper(x = 2:4, m = 100, n = 200, k = 4))
## [1] 0.4074057

Distribuciones continuas

Distribución exponencial

  • De registros históricos se sabe que en promedio, un rayo causa la muerte a tres personas cada año en determinado país. Obtener:

Punto 1

  • La probabilidad de que el tiempo hasta la próxima muerte sea menor a un año. \(P(X<1)\)
pexp(q = 1, rate = 3, lower.tail = TRUE)
## [1] 0.9502129

Punto 2

  • La probabilidad de que el tiempo hasta la próxima muerte sea mayor a 18 meses \(P(X>1.5)\)
1- pexp(q = 1.5, rate = 3, lower.tail = FALSE)
## [1] 0.988891
  • Simulando la distribución exponencial con lambda igual a 3.
set.seed(123)
plot(density(rexp(n = 100, rate = 3)))

Distribución normal

Manual

Si X sigue una distribución normal con media igual a 10 y sigma igual a 2. ¿Cuál es la probabilidad de que la medida de la variable aleatoria X esté entre 9 y 11?

# Estandarización x=9
(9 - 10 ) / 2
## [1] -0.5
# Estandarización x=11
(11 - 10) / 2
## [1] 0.5
  • En la tabla Z el valor para un z = -0.5 es 0.3085 y para un valor de z = 0.5 es 0.6915.

\[0.6915 - 0.3085 = 0.383\]

Con R

  • Con la distribución normal estándar (media = cero y sd = 1):
pnorm(q = -0.5, mean = 0, sd = 1)
## [1] 0.3085375
pnorm(q = 0.5, mean = 0, sd = 1)
## [1] 0.6914625
  • Con la distribución normal original (media = 10, sd = 2):
pnorm(q = 9, mean = 10, sd = 2)
## [1] 0.3085375
pnorm(q = 11, mean = 10, sd = 2)
## [1] 0.6914625

Simulación

set.seed(123)
poblacion <- rnorm(n = 1000000, mean = 34.5, sd = 4.3)
  • Calcular la media y la desviación estándar de la población simulada:
media <- mean(poblacion)
desviacion <- sd(poblacion)
  • Calculando porcentajes entre -1 y +1 desviación estándar:
mas1_de <- media + desviacion
menos1_de <- media - desviacion

sum(poblacion > menos1_de & poblacion < mas1_de) / length(poblacion)
## [1] 0.682523
  • Calculando porcentajes entre -2 y +2 desviación estándar:
mas2_de <- media + (desviacion * 2)
menos2_de <- media - (desviacion * 2)

sum(poblacion > menos2_de & poblacion < mas2_de) / length(poblacion)
## [1] 0.954528
  • Calculando porcentajes entre -3 y +3 desviación estándar:
mas3_de <- media + (desviacion * 3)
menos3_de <- media - (desviacion * 3)

sum(poblacion > menos3_de & poblacion < mas3_de) / length(poblacion)
## [1] 0.997279