Este simulador tira 10 veces un dado de 6 caras y calcula la probabilidad empírica de que salga un seis.
Luego, calcula la probabilidad empírica de que salga un seis en 1000 tiradas.
dado <- sample(1:6, 10, replace = TRUE)
diez_veces <- mean(dado == 6)
# acumular los resultados
dados <- sample(1:6, 1000, replace = TRUE)
mil_veces <- mean(dados == 6)
Diez veces el dado: 5, 3, 5, 4, 6, 4, 2, 3, 3, 3
Probabilidad de 6 en 10 tiradas: 0.1
Probabilidad de 6 en 1000 tiradas: 0.17
PREGUNTA: ¿Cuál es la probabilidad teórica de obtener un seis en un dado de 6 caras?
Se van a lanzar los dados desde 10 veces hasta 100000 veces. Vamos a calcular la probabilidad de obtener un seis en cada caso y graficar usando una escala logarítmica en el eje x (número de toradas).
n_tiradas <- c(10, 20, 30, 40, 50, 100, 500, 1000, 5000, 10000, 50000, 100000)
probabilidades <- numeric(length(n_tiradas))
for (i in 1:length(n_tiradas)) {
dados <- sample(1:6, n_tiradas[i], replace = TRUE)
probabilidades[i] <- mean(dados == 6)
}
# gráfica de los resultados con ggplot
library(ggplot2)
ggplot(data.frame(n_tiradas, probabilidades), aes(x = n_tiradas, y = probabilidades)) +
geom_point() +
geom_line() +
scale_x_log10() +
labs(title = "Probabilidad de obtener un seis en diferentes números de tiradas", x = "Número de tiradas (log)", y = "Probabilidad") + # show value of probabilidades on each point
geom_text(aes(label = round(probabilidades, 3)), vjust = -0.5)
Figura 1: Probabilidad de obtener un seis en diferentes números de tiradas de dados.
Este simulador tira 10 veces una moneda y calcula la probabilidad empírica de que salga cara. Luego, calcula la probabilidad empírica de que salga cara en 100000 tiradas.
moneda <- sample(c("cara", "cruz"), 10, replace = TRUE)
diez_veces_m <- mean(moneda == "cara")
# acumular los resultados
monedas <- sample(c("cara", "cruz"), 100000, replace = TRUE)
cienmil_veces_m <- mean(monedas == "cara")
Diez veces la moneda: cara, cara, cara, cara, cara, cara, cruz, cruz, cruz, cara
Probabilidad de cara en 10 tiradas: 0.7
Probabilidad de cara en 100000 tiradas: 0.49888
EJERCICIO: Realizar una gráfica como la de los dados, pero con la probabilidad de obtener cara en diferentes números de tiradas de monedas.
Para el cálculo de la probabilidad de un evento o eventos, es necesario conocer el espacio muestral y los eventos posibles.
El espacio muestral es el conjunto de todos los resultados posibles de un experimento aleatorio. Por ejemplo, si lanzamos un dado, el espacio muestral es {1, 2, 3, 4, 5, 6}. Si lanzamos dos dados, el espacio muestral es {(1,1), (1,2), …, (6,6)}. Si lanzamos una moneda, el espacio muestral es {cara, cruz}.
Un evento es un subconjunto del espacio muestral. Por ejemplo, si lanzamos un dado, el evento “sacar un número par” es {2, 4, 6}. Si lanzamos dos dados, el evento “sacar una suma mayor a 7” es {(1,7), (2,6), (3,5), (4,4), (5,3), (6,2), (7,1)}.
En las combinacions de elementos no importa el orden en que se toman los elementos. Por ejemplo, si tenemos los elementos {A, B, C}, las combinaciones posibles de 2 elementos son {A, B}, {A, C}, {B, C}. No importa si tomamos primero A y luego B, o primero B y luego A.
Cuando de un conjunto de n elementos se toman X elementos, se obtiene una combinación de X elementos tomados de X en X.
\[nC_X = \frac{n!}{X! \cdot (n-X)!}\]
Para el cálculo de combinaciones, se utiliza la función
choose(n, X)
en R.
Calcular combinaciones de 6 elementos tomados de 3 en 3.
n = 6
X = 3
combinaciones <- choose(n, X)
combinaciones
## [1] 20
EJERCICIO: Calcular combinaciones (no importa el orden) de 10 elementos tomados de 4 en 4
En las combinaciones con repetición, se pueden repetir los elementos. Por ejemplo, si tenemos los elementos {A, B, C} y tomamos 2 elementos, las combinaciones con repetición son {A, A}, {A, B}, {A, C}, {B, B}, {B, C}, {C, C}.
\[nC_{Xr} = \frac{(n+X-1)!}{X! \cdot (n-1)!}\]
Calcular combinaciones con repetición de 6 elementos tomados de 3 en 3.
combinaciones_repetidas <- factorial(n + X - 1) / (factorial(X) * factorial(n - 1))
combinaciones_repetidas
## [1] 56
EJERCICIO: Calcular combinaciones con repetición de 10 elementos tomados de 4 en 4.
En las permutaciones de elementos importa el orden en que se toman los elementos.
Cuando de un conjunto de n elementos se toman todos los elementos, se obtiene una permutación de n factorial elementos.
\[n! = n \cdot (n-1) \cdot (n-2) \cdot
\ldots \cdot 2 \cdot 1\] Para aplicar las fórmulas de
permutaciones en R, se utiliza la función factorial(n)
.
Calcular permutaciones de 6 elementos, tomando todos los elementos.
permutaciones.n <- factorial(n)
permutaciones.n
## [1] 720
EJERCICIO: Calcular permutaciones de 10 elementos, tomando todos los elementos.
Cuando de un conjunto de n elementos se toman X elementos, se obtiene una permutación de X elementos tomados de n en X.
\[nP_X = \frac{n!}{(n-X)!}\]
Calcular permutaciones (importa el orden) de 6 elementos tomados de 3 en 3, sin repetición.
n = 6
X = 3
permutaciones <- factorial(n) / factorial(n - X)
permutaciones
## [1] 120
EJERCICIO: Calcular permutaciones de 10 elementos tomados de 4 en 4, sin repetición.
En las permutaciones con repetición, se pueden repetir los elementos. Por ejemplo, si tenemos los elementos {A, B, C} y tomamos 2 elementos, las permutaciones con repetición son {A, A}, {A, B}, {A, C}, {B, A}, {B, B}, {B, C}, {C, A}, {C, B}, {C, C}.
\[nP_{Xr} = n^X\]
Calcular permutaciones con repetición de 6 elementos tomados de 3 en 3.
permutaciones_repetidas <- n^X
permutaciones_repetidas
## [1] 216
EJERCICIO: Calcular permutaciones con repetición de 10 elementos tomados de 4 en 4 (pin de ATH).
El teorema de Bayes es una regla fundamental en la teoría de la probabilidad que permite actualizar la probabilidad de un suceso A condicionada por otro suceso B. La fórmula general simplificada del teorema de Bayes es:
\[P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}\]
Supongamos que una prueba clínica para detectar una enfermedad tiene una sensibilidad del 99% y una especificidad del 95%. Si la enfermedad tiene una prevalencia del 1% en la población, ¿cuál es la probabilidad de que una persona tenga la enfermedad si la prueba da positivo?
Primero, construimos un árbol de probabilidades para visualizar el problema.
library(DiagrammeR)
library(DiagrammeRsvg)
library(rsvg)
## Linking to librsvg 2.56.3
# Create the graph
graph <- grViz("
digraph probability_tree {
node [shape = circle]
Prueba -> I [label = 'P(I) = 0.01']
Prueba -> S [label = 'P(S) = 0.99']
I -> Ip [label = 'P(Ip) = 0.99']
I -> In [label = 'P(In) = 0.01']
S -> Sp [label = 'P(Sp) = 0.05']
S -> Sn [label = 'P(Sn) = 0.95']
}
")
# Convert the graph to an SVG object
svg <- export_svg(graph)
# Save the SVG as a PNG file
rsvg_png(charToRaw(svg), "graph.png")
# The file "graph.png" will be saved in your working directory
graph
Figura 2: Árbol de probabilidades para una prueba clínica.
Dónde: - \(P(I)\) es la probabilidad
de tener la enfermedad (prevalencia).
- \(P(S)\) es la probabilidad de no
tener la enfermedad (1 - P(I)).
- \(P(Ip)\) es la probabilidad de
obtener un resultado positivo en la prueba si se tiene la enfermedad
(sensibilidad de la prueba).
- \(P(In)\) es la probabilidad de
obtener un resultado negativo en la prueba si se tiene la enfermedad
(falso negativo).
- \(P(Sp)\) es la probabilidad de
obtener un resultado positivo en la prueba si no se tiene la enfermedad
(falso positivo).
- \(P(Sn)\) es la probabilidad de
obtener un resultado negativo en la prueba si no se tiene la enfermedad
(especificidad de la prueba).
Primero, calculamos la probabilidad de obtener un resultado positivo P(Pos) en la prueba:
\[P(Pos) = P(S) \cdot P(Sp) + P(I) \cdot P(Ip)\]
P_I <- 0.01
P_S <- 0.99
P_Ip <- 0.99
P_Sp <- 0.05
P_Pos <- P_S * P_Sp + P_I * P_Ip
P_Pos
## [1] 0.0594
Luego, se aplica el teorema de Bayes para calcular la probabilidad inversa de que una persona esté enferma dado que ha obtenido un resultado positivo en la prueba. Este cálculo es crucial en medicina para interpretar correctamente los resultados de las pruebas diagnósticas, especialmente cuando se trata de enfermedades con baja prevalencia.
# Definir la función para la probabilidad inversa con el teorema de Bayes
bayes_prob <- function(P_I, P_Ip, P_Pos) {
P_I_dado_Pos <- ((P_Ip * P_I) / P_Pos)
return(P_I_dado_Pos)
}
# cálculo con los datos anteriores
bayes_prob(P_I, P_Ip, P_Pos)
## [1] 0.1666667
EJERCICIO: Cuando una paciente se somete a un examen de detección de cáncer de mama, existen dos afirmaciones excluyentes: la paciente tiene cáncer o la paciente no lo tiene. Si una mamografía arroja un resultado positivo, ¿cuál es la probabilidad de que la paciente tenga cáncer en realidad?
Datos:
- La prevalencia del cáncer de mama es del 1.7 %.
- La sensibilidad de la mamografía es del 80 %.
- La especificidad de la mamografía es del 90 %.