Continua | Discreta |
---|---|
Distribución de probabilidad definida por la función de densidad de probabilidad (FDP). | Distribución de probabilidad definida por la función de masa de probabilidad (FMP) o función de probabilidad. |
Para un valor concreto, la probabilidad siempre es cero. | Las probabilidades para un valor concreto, se cualculan directamente con la función de probabilidad. |
Para calcular probabilidades en un intervalo, se usa la función de distribución acumulada, que es la integral de la función de densidad. | Para calcular probabilidades en un intervalo discreto de valores, se usa la función de distribución acumulada, que es la suma acumulada de probabilidades en dicho intervalo. |
La Integral de la FDP sobre todo el espacio igual a 1. | Suma de probabilidades igual a 1. |
Fundamentos de estadística y probabilidad para Data Science
3.2 Distribuciones de probabilidad discretas
Variable aleatoria discreta vs contínua
¿Qué es una variable aleatoria discreta? Una variable aleatoria es un conjunto de posibles resultados de un experimento aleatorio. Por ejemplo, si queremos saber si el clima de mañana será soleado o lluvioso, entonces “el clima de mañana” es la variable aleatoria y los posibles resultados son “soleado” y “lluvioso”. Una variable aleatoria puede ser discreta o continua. Si una variable aleatoria solo puede tomar un número finito de valores distintos como “soleado” o “lluvioso”, es una variable aleatoria discreta.
Si una variable aleatoria puede tener un continuo de resultados infinitos e incontables, se llama variable aleatoria continua. Por ejemplo ¿Cuál va a ser la temperatura de mañana? La temperatura, es una variable contínua.
Algunos algoritmos de aprendizaje automático utilizan distribuciones de probabilidad discretas, como las distribuciones de Bernoulli, Binomial y Multinomial, para resolver problemas. Además de las distribuciones más conocidas, otras distribuciones discretas relacionadas con las anteriores, Beta y Dirichlet, son ampliamente utilizadas en ciencia de datos. La distribución Dirichlet es especialmente importante en el Procesamiento del Lenguaje Natural (PLN).
Bernoulli
Un ensayo de Bernoulli, nombrado así por el matemático suizo Jacob Bernoulli, es un experimento aleatorio con exactamente dos posibles resultados, “éxito” y “fracaso”, en el que la probabilidad de éxito \(P\) es la misma cada vez que se realiza el experimento, al igual que la probabilidad de fracaso \(q = 1-p\), también permanece constante. Estos ensayos son la base de la distribución de Bernoulli.
Por ejemplo, lanzar una moneda justa es un ensayo de Bernoulli. Si definimos “cara” como un éxito, entonces hay una probabilidad \(P("cara") = 0.5\) de obtener un éxito en cada lanzamiento de la moneda.
Lanzar y dado y obtener cualquier número excepto “1” también es un ensayo de Bernoulli, cuya probabilidad de acierto es \(\frac{5}{6}\).
Función de probabilidad
\(P(X=x) = \begin{cases} p & \text{si } x=1 \\ 1-p & \text{si } x=0 \end{cases}\)
\(P(X=x) = p^x(1-p)^{(1-x)}, \quad x \in \{1,0\}\)
\(P(X=x) = p^x(1-p)^{(1-x)}, \quad x \in \{éxito,fracaso\}\)
# Probabilidad de éxito
<- 1/6
p
# Crear un data frame para la probabilidad y distribución acumulada de Bernoulli
<- data.frame(
bernoulli_df 'x' = factor(c(-01, 0, 1, 2)),
'pmf' = c(0, 1 - p, p, 0)
)<- bernoulli_df %>%
bernoulli_df mutate(c = cumsum(pmf))
# Gráfica para la FMP de Bernoulli
ggplot(bernoulli_df[2:3,], aes(x, y = pmf)) +
geom_col() +
labs(x = "Resultado (0 = fracaso, 1 = éxito)", y = "P(X = x)", title = "Función de Probabilidad de Bernoulli") +
theme_bw()
# Gráfica para la distribución de probabilidad acumulada de Bernoulli
ggplot(bernoulli_df[2:3,], aes(x, y = c)) +
geom_col() +
labs(x = "Resultado: 0 = fracaso, 1 = éxito", y = "Probabilidad (X <= x)", title = "Distribución de probabilidad acumulada de Bernoulli") +
theme_bw()
Distribución Binomial
Un proceso de Bernoulli es una secuencia de ensayos de Bernoulli independientes e idénticamente distribuidos. Cada ensayo resulta en un éxito (usualmente codificado como 1) con probabilidad \(p\) o un fracaso (usualmente codificado como 0) con probabilidad \(1−p\), donde \(p\) es constante en todos los ensayos. La independencia significa que el resultado de un ensayo no afecta el resultado de otro, y la condición de que la probabilidad de éxito es constante asegura que los ensayos son idénticamente distribuidos.
La distribución de Bernoulli es un caso particular de la binomial, con el número de ensayos igual a 1.
La ley de los grandes números sí sugiere que, a medida que el número de ensayos tiende a infinito, la proporción de éxitos se acercará a la probabilidad \(p\), pero esto es un resultado a largo plazo y no una característica definitoria del proceso.
Una variable aleatoria \(X\) que sigue una distribución de probabilidad binomial, se expresa como \(X \sim B(n, p)\) donde \(n\) el número de ensayos de Bernoulli, \(p\) la probabilidad de éxito y \(q = 1 - p\), la probabilidad de fracaso.
Lo que hemos de calcular en este tipo de distribuciones es las probabilidades acertar el número de éxitos \(x\), siendo un número entero discreto desde 0 hasta n.
Características de la binomial
- Hay un número fijo de ensayos (n)
- Cada ensayo es independiente de los demás
- La probabilidad de éxito (p) es la misma en cada ensayo
- La variable aleatoria de interés es el número de éxitos en los n ensayos
Función de probabilidad o masa de probabilidad: dbinom()
El dominio es el nº de aciertos, que va desde 0 hasta n. Define las probabilidades de acertar 0, 1, … n veces en cada experimento.
\(p(x) = \binom{n}{x} p^x (1-p)^{n-x}\)
\(\binom{n}{x} = \frac{n!}{x!(n-x)!}\)
\(p(x) = \frac{n!}{x!(n-x)!} p^x (1-p)^{n-x}\)
Ejemplo: Lanzar dos dados (2 ensayos) y éxito sería obtener un 6.
Podemos no obtener ninguno, obtener 1 u obtener 2.
<- data.frame(x = 0:2, p_x = dbinom(0:2, 2, 1/6))
dos_dados <- dos_dados %>%
dos_dados mutate(c = cumsum(p_x))
ggplot(dos_dados, aes(x, p_x)) +
geom_col() +
scale_x_continuous(breaks = 0:10) +
labs(x = "Nº de aciertos (obtener un seis)", y = "Probabilidad (X = x)", title = "Función de probabilidad Binomial: 2 ensayos independientes (tirar 2 dados)") +
theme_bw()
Función de distribución acumulada (CDF): pbinom
\[F(k) = P(X \leq k) = \sum_{x=0}^{k} \binom{n}{x} p^x (1-p)^{n-x}\]
ggplot(dos_dados, aes(x, c)) +
geom_col() +
labs(x = "Nº de aciertos (obtener un seis)", y = "Probabilidad (X <= k)", title = "Función de distribución acumulada Binomial n = 2") +
theme_bw()
Cálculos de probabilidades y generación de variables. Funciones: pbinom
, dexp
, qexp
, rexp
Experimento: Lanzar 10 monedas (ensayos = 10). Posibles éxitos, de 0 a 10
dbinom(x, # Valores del eje X (x = 0, 1, 2, ..., n)
# Número de ensayos (n > = 0)
size, # Probabilidad de éxito en cada ensayo
prob, log = FALSE) # Si TRUE, las probabilidades se devuelven como log
Ejemplo: Obtener 7 caras en 10 lanzamientos
dbinom(7, # 7 éxitos (caras)
10, # 10 intentos
0.5) # Probabilidad de éxito en cada ensayo
[1] 0.1171875
Ejemplo con vector
dbinom(0:10, # de 0 a 10 éxitos
10, # 10 intentos
0.5)
[1] 0.0009765625 0.0097656250 0.0439453125 0.1171875000 0.2050781250
[6] 0.2460937500 0.2050781250 0.1171875000 0.0439453125 0.0097656250
[11] 0.0009765625
ggplot(data.frame(x = 0:10, p_x = dbinom(0:10, 10, 0.5)),
aes(x, p_x)) +
geom_col() +
scale_x_continuous(breaks = 0:10) +
labs(x = "Nº de aciertos (obtener cara)", y = "Probabilidad (X = x)", title = "Función de probabilidad Binomial n = 10") +
theme_bw()
La función de distribución acumulada
ggplot(data.frame(x = 0:10, p_x = pbinom(0:10, 10, 0.5)),
aes(x, p_x)) +
geom_col() +
scale_x_continuous(breaks = 0:10) +
labs(x = "Nº de aciertos (obtener cara)", y = "Probabilidad (X <= k)", title = "Función de distribución acumulada Binomial n = 10") +
theme_bw()
pbinom(q, # Cuantil o vector de cuantiles: éxitos
# Número de experimentos (n > = 0)
size, # Probabilidad de éxito en cada experimento
prob, lower.tail = TRUE, # Si TRUE, las probabilidades son P(X <= x), o P(X > x) en otro caso
log.p = FALSE) # Si TRUE, las probabilidades se devuelven como log
Ejemplo: Probabilidad de obtener 4 o menos caras en 10 monedas al aire
pbinom(4,10,0.5)
[1] 0.3769531
Probabilidad de obtener más de 7 caras en 10 lanzamientos
pbinom(7,10,0.5, lower.tail = FALSE)
[1] 0.0546875
1-pbinom(7,10,0.5)
[1] 0.0546875
Cuantiles (Inversa de la probabilidad acumulada):
qbinom((seq(1,10)/10), 10, 0.5)
[1] 3 4 4 5 5 5 6 6 7 10
ggplot(data.frame(x =(seq(1,1000)/1000), q_x = qbinom((seq(1,1000)/1000), 10, 0.5)),
aes(x, q_x)) +
geom_step() +
scale_y_continuous(breaks = 0:10) +
labs(x = "Cuantiles", y = "Aciertos", title = "Representación cuantiles") +
theme_bw()
Generación de experimentos aleatorios con rbinom
rbinom(n, # Número de observaciones aleatorias a ser generadas
# Número de ensayos (> = 0) si = 1 Bernoulli
size, # La probabilidad de éxito en cada ensayo prob)
Lanzar varias veces varias monedas:
Consideraremos éxitos las caras. Si en cada observación, lanzamos dos monedas:
# 10 Observaciones:
# En cada ensayo podemos tener 0, 1 o 2 aciertos:
set.seed(1)
rbinom(10, 2, 0.5)
[1] 1 1 1 2 0 2 2 1 1 0
Distribución Uniforme discreta
La distribución uniforme discreta es una distribución de probabilidad donde un número finito de valores son igualmente probables de ser observados; cada uno de los n
valores tiene la misma probabilidad 1/n
.
Densidad de Probabilidad
La función de densidad de probabilidad (pmf) para una distribución uniforme discreta en el rango de valores enteros de a
a b
se define como:
\[ f(x | a, b) = \begin{cases} \frac{1}{b - a + 1} & \text{para } x = a, a+1, \ldots, b \\ 0 & \text{de lo contrario} \end{cases} \]
Aquí hay un ejemplo en R donde a = 1
y b = 6
:
Función de distribución acumulada
La función de distribución acumulativa (cdf) para una distribución uniforme discreta se puede expresar como:
\[ F(x | a, b) = \begin{cases} 0 & \text{para } x < a \\ \frac{x - a + 1}{b - a + 1} & \text{para } a \leq x < b \\ 1 & \text{para } x \geq b \end{cases} \]
Cálculos de probabilidades y generación de variables aleatorias uniformes discretas
No existen las funciones punifd
, dunifd
, qunifd
, runifd
# Parámetros de la distribución uniforme discreta
<- 1 # límite inferior
a <- 6 # límite superior b
# Ejemplo de uso:
# Generar 10 valores aleatorios con distribución uniforme discreta
<- runifd(10, a, b)
valores print(valores)
[1] 3 3 1 5 5 2 6 6 2 1
# Calcular fdp para la secuencia 0:10
sapply(0:10,a = 1, b = 6, FUN = dunifd)
[1] 0.0000000 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
[8] 0.0000000 0.0000000 0.0000000 0.0000000
# Calcular CDF para q = 4
<- punifd(4, a, b)
cdf_q4 print(cdf_q4)
[1] 0.6666667
Otras distribuciones de probabilidad discretas
- Poisson
- Multinomial
- Binomial negativa
- Hipergeométrica