Simulación moneda

  • En este caso estamos interesados en conocer la verdadera probabilidad de obtener cara al lanzar una moneda al aire.
  • ¿Realmente la probabilida de obtener “cara” es 0.5?
# Opciones de la moneda
moneda <- c("cara", "sello")

# Un lanzamiento al aire de la moneda
set.seed(1) # semilla que garantiza la replicabilidad
sample(x = moneda, size = 1)
## [1] "cara"
  • Vamos a lanzar la moneda 10 veces al aire y observamos (contamos) cuántas “caras” obtenemos
set.seed(1)
lanzamientos_10 <- replicate(n = 10, expr = sample(x = moneda, size = 1))
lanzamientos_10
##  [1] "cara"  "sello" "cara"  "cara"  "sello" "cara"  "cara"  "cara"  "sello"
## [10] "sello"
  • Ahora calculamos la proporción de “caras” en los 10 lanzamientos:
prop.table(table(lanzamientos_10))[1]
## cara 
##  0.6

100 lanzamientos

  • Vamos a replicar el experimento anterior desde 1 hasta 100 lanzamientos
resultados <- c()

set.seed(1)
for (i in 1:100) {
  muestra <- replicate(n = i, expr = sample(x = moneda, size = 1))
  resultados[i] = prop.table(table(muestra))[1]
}

resultados
##   [1] 1.0000000 0.5000000 0.6666667 0.5000000 1.0000000 0.3333333 0.8571429
##   [8] 0.5000000 0.2222222 0.4000000 0.2727273 0.4166667 0.5384615 0.5000000
##  [15] 0.5333333 0.5625000 0.4705882 0.5555556 0.5789474 0.4500000 0.5238095
##  [22] 0.4545455 0.6086957 0.2083333 0.7200000 0.3461538 0.5185185 0.6428571
##  [29] 0.6551724 0.4000000 0.5806452 0.6562500 0.4545455 0.4705882 0.5428571
##  [36] 0.3611111 0.4324324 0.5000000 0.5641026 0.6000000 0.3414634 0.5238095
##  [43] 0.4186047 0.4545455 0.5555556 0.4347826 0.4893617 0.4791667 0.4693878
##  [50] 0.5200000 0.4509804 0.4423077 0.5471698 0.4814815 0.5272727 0.6428571
##  [57] 0.5789474 0.5344828 0.5423729 0.4833333 0.4098361 0.4516129 0.5873016
##  [64] 0.4062500 0.4923077 0.4545455 0.4776119 0.4264706 0.5217391 0.5428571
##  [71] 0.5211268 0.4722222 0.5068493 0.5540541 0.5600000 0.4210526 0.5194805
##  [78] 0.4487179 0.5063291 0.4500000 0.4567901 0.5121951 0.4939759 0.5000000
##  [85] 0.5058824 0.5930233 0.5402299 0.4772727 0.3820225 0.4888889 0.5494505
##  [92] 0.4239130 0.5053763 0.4468085 0.4947368 0.4687500 0.3711340 0.4591837
##  [99] 0.4040404 0.5400000
  • Gráficamos el resultado anterior:
plot(resultados, type = "l")
abline(h = 0.5, col = "red")

  • También podemos graficar con ggplot2:
library(tidyverse)
resultados %>% 
  enframe(name = "lanzamiento", value = "proporcion") %>% 
  ggplot(aes(x = lanzamiento, y = proporcion)) +
  geom_line() +
  geom_hline(yintercept = 0.5, color = "red")

5000 lanzamientos

resultados2 <- c()

set.seed(1)
for (i in 1:5000) {
  muestra2 <- replicate(n = i, expr = sample(x = moneda, size = 1))
  resultados2[i] = prop.table(table(muestra2))[1]
}

resultados2 %>% 
  enframe(name = "lanzamiento", value = "proporcion") %>% 
  ggplot(aes(x = lanzamiento, y = proporcion)) +
  geom_line() +
  geom_hline(yintercept = 0.5, color = "red")

Ejemplo dado

5000 lanzamientos

  • Primero generamos el espacio muestral del dado:
dado <- c(1, 2, 3, 4, 5, 6)
  • Ahora lanzamos 5000 veces el dado y calculamos la probabilidad de una de las opciones:
resultados_dado <- c()

set.seed(1)
for (i in 1:5000) {
  muestra_dado <- replicate(n = i, expr = sample(x = dado, size = 1))
  resultados_dado[i] = prop.table(table(muestra_dado))[1]
}

resultados_dado %>% 
  enframe(name = "lanzamiento", value = "proporcion") %>% 
  ggplot(aes(x = lanzamiento, y = proporcion)) +
  geom_line() +
  geom_hline(yintercept = 1/6, color = "red")

Técnicas de conteo

Combinaciones

  • ¿Cuántos subconjuntos de tamaño 2 puedo conformar de un conjunto de 4 personas?
n <- 4
r <- 2
factorial(n) / (factorial(r) * (factorial(n - r)))
## [1] 6
  • R tiene la función choose() que permite calcular combinaciones:
choose(n = n, k = r)
## [1] 6
  • Podemos obtener las combinaciones con la función combinations() de la biblioteca gtools:
library(gtools)
combinations(n = 4, r = 2, v = c("persona1", "persona2", "persona3", "persona4"))
##      [,1]       [,2]      
## [1,] "persona1" "persona2"
## [2,] "persona1" "persona3"
## [3,] "persona1" "persona4"
## [4,] "persona2" "persona3"
## [5,] "persona2" "persona4"
## [6,] "persona3" "persona4"

Permutaciones

  • Podemos calcular las permutaciones multiplicando la combinación por el factorial de r (k):
choose(n = 4, k = 2) * factorial(2)
## [1] 12
  • Podemos implementar la función permutations() de la biblioteca gtools:
permutations(n = 4, r = 2, v = c("persona1", "persona2", "persona3", "persona4"))
##       [,1]       [,2]      
##  [1,] "persona1" "persona2"
##  [2,] "persona1" "persona3"
##  [3,] "persona1" "persona4"
##  [4,] "persona2" "persona1"
##  [5,] "persona2" "persona3"
##  [6,] "persona2" "persona4"
##  [7,] "persona3" "persona1"
##  [8,] "persona3" "persona2"
##  [9,] "persona3" "persona4"
## [10,] "persona4" "persona1"
## [11,] "persona4" "persona2"
## [12,] "persona4" "persona3"

Cálculo de probabilidades

Ejemplo 1

  • Si lanzas una moneda justa (no cargada) 7 veces al aire, ¿cuál es la probabilidad de obtener exactamente 2 sellos?

Solución

  • ¿Cuántos grupos o combinaciones posibles existen de tamaño 2 de un conjunto de tamaño 7?
numerador <- choose(n = 7, k = 2)
numerador
## [1] 21
  • Calculamos el total de resultados posibles al lanzar la moneda 7 veces (regla de la multiplicación):
denominador <- 2 ^ 7
denominador
## [1] 128
  • Calculamos la probabilidad:
numerador / denominador
## [1] 0.1640625

Ejemplo 2

  • En una granja que se dedica a la producción bovina de exposición (toros) hay 6 toros de la raza A y 9 toros de la raza B. Para un evento de exposición se deben escoger de forma aleatoria 5 toros, ¿cuál es la probabilidad que el grupo de toros seleccionado esté conformado por 3 toros de la raza A y 2 toros de la raza B?

Solución

  • Calculamos el total de subconjuntos de tamaño 5 a partir de un conjunto de tamaño 15:
denominador <- choose(n = 15, k = 5)
denominador
## [1] 3003
  • Calculamos el total de subconjuntos de tamaño 3 a partir de un conjunto de tamaño 6 (raza A):
toros_a <- choose(n = 6, k = 3)
toros_a
## [1] 20
  • Calculamos el total de subconjuntos de tamaño 2 a partir de un conjunto de tamaño 9 (raza B):
toros_b <- choose(n = 9, k = 2)
toros_b
## [1] 36
  • Calculamos la probabilidad:
(toros_a * toros_b) / denominador
## [1] 0.2397602

Ejemplo 3

  • Se realizó una encuesta sobre medios de transporte y se encontró que el 70% de los encuestados usan transporte público, el 40% usa transporte particular y el 30% usa ambos tipos de transporte.

Solución

  • Podemos dibujar el diagrama de Venn con la biblioteca VennDiagram usando la función “diagramas_venn()” (función personalizada):
library(VennDiagram)
source("diagramas_venn.R")

diagramas_venn(
  tipo = "doble",
  A = 70,
  B = 40,
  AB = 30,
  nombreA = "Público",
  nombreB = "Particular",
  colorA = "skyblue",
  colorB = "firebrick2"
)

  • Si se escoge al azar un encuestado, ¿cuál es la probabilidad de que esa persona use algún tipo de transporte?

\[P(A \cup B) = P(A) + P(B) - P(A \cap B) \\ = 0.7 + 0.4 - 0.3 \\ = 0.8\]

Ejemplo 4

  • De la producción de plántulas con determinadas especificaciones, surge que el 5% de ellas no posee el largo requerido, el 7% no tiene el diámetro requerido y el 2% presenta ambas inconsistencias. Si se elige una plántula al azar resolver:
    • La probabilidad de tener al menos uno de los dos defectos
    • La probabilidad de tener sólo el defecto del largo
    • La probabilidad de tener sólo uno de los dos defectos
    • La probabilidad de no tener defectos

Solución

  • Diagrama de Venn:
diagramas_venn(
  tipo = "doble",
  A = 5,
  B = 7,
  AB = 2,
  nombreA = "Largo",
  nombreB = "Diámetro",
  colorA = "skyblue",
  colorB = "firebrick2"
)

  • Calculamos la probabilidad de tener al menos uno de los dos defectos:

\[P(A \cup B) = P(A) + P(B) - P(A \cap B) \\ =0.05 + 0.07 − 0.02 \\ = 0.10\]

  • Calculamos la probabilidad de tener sólo el defecto del largo:

\[P(A - B) = P(A) - P(A \cap B) \\ =0.05 − 0.02 \\ = 0.03\]

  • Calculamos la probabilidad de tener sólo uno de los dos defectos: para esto tenemos que calcular la probabilidad de tener sólo el defecto del largo (cálculo anterior) y la probabilidad de tener sólo el defecto del diámetro:

\[P(B - A) = P(B) - P(A \cap B) \\ =0.07 − 0.02 \\ = 0.05\]

  • Luego sumamos las dos probabilidades:

\[P(A - B) + P(B - A) = 0.03 + 0.05 = 0.08\]

  • Calculamos la probabilidad de no tener defectos

\[P(A \cup B)^c = 1 - P(A \cup B) \\ =1 - 0.10 \\ = 0.90\]

Ejemplo 5

  • En un sistema de producción de hortalizas se detectan tres plagas. El 25% de las plantas tiene la enfermedad A, el 20% B y el 30% C. El 12% la A y B, el 10% la A y C, el 11% B y C y el 5% tiene las tres enfermedades
diagramas_venn(
  tipo = "triple",
  A = 25,
  B = 20,
  C = 30,
  AB = 12,
  AC = 10,
  BC = 11,
  ABC = 5,
  nombreA = "Enfermedad A",
  nombreB = "Enfermedad B",
  nombreC = "Enfermedad C",
  colorA = "skyblue",
  colorB = "firebrick2",
  colorC = "yellow2"
)