Modelos Probabilìsticos

Distribución y ejercicios

Autor/a
Afiliación
Kevin David Barón Cabezas
Breiner Duvan Mejía
Fecha de publicación

14 de mayo de 2024

Paqueteria / Libreria

Aquí encontraras la paquetería y librería necesaria para este HTML.

PAQUETERIA

A continuación encontraras la lista de los paquetes que debes instalar:

  • install.packages(tidyverse)

  • install.packages(kableExtra)

  • install.packages(agricolae)

  • install.packages(RColorBrewer)

  • install.packages(ggplot2)

  • install.packages(devtools)

  • install.packages(usethis)

  • install.packages(dplyr)

LIBRERIAS
Código
library(tidyverse)
library(kableExtra)
library(agricolae)
library(RColorBrewer)
library(ggplot2)
library(devtools)
library(usethis)
library(dplyr)
library(MASS)

[@tidyverse; @kableExtra; @agricolae; @RColorBrewer][@ggplot2; @devtools; @usethis; @dplyr; @dbplyr]

Distribuciones de probabilidad en R

El paquete stats de R (que se instala por defecto al instalar R, y se carga en memoria siempre que iniciamos sesión) implementa numerosas funciones para la realización de cálculos asociados a distintas distribuciones de probabilidad. Entre las utilizadas más comunmente podemos citar:

Algunas Distribuciones de probabilidad

Ejecutando: help(Distributions)

Se nos mostrará el listado de distribuciones de probabilidad disponibles en el paquete stats. Otras distribuciones están disponibles en otros paquetes.

Para cada distribución, R dispone de cuatro funciones. Se puede acceder a cada una de ellas simplemente precediendo el nombre de la distribución que figura en la tabla anterior por la letra que se indica a continuación:

  • d: Función de densidad o de probabilidad.

  • p: Función de distribución.

  • q: Función para el cálculo de cuantiles.

  • r: Función para simular datos con dicha distribución.

Así, por ejemplo, para la distribución normal, la función de densidad se obtiene como dnorm(), la función de distribución como pnorm(), los cuantiles se calculan mediante qnorm() y se pueden generar valores aleatorios con distribución normal mediante rnorm(). Puede consultarse la ayuda, help(dnorm) para conocer la sintaxis específica de estas funciones.

Distribución Normal

La variable aleatoria discreta más sencilla es aquella que toma sólo un número finito de valores posibles n. cada uno con la misma probabilidad. Ella se denomina entonces variable aleatoria discreta uniforme y su distribución uniforme discreta está dada por:

f(x)=\frac{1}{n} Para una variable aleatoria discreta uniforme X , que puede tomar valores 1,2,…,n, la media es:

{{\mu }_{x}}=E(X)=\frac{n+1}{2} Y su desviación estándar es:

{{\sigma }_{x}}=\sqrt{\frac{{{n}^{2}}-1}{12}}

Ejemplo:

Un jugador lanza un dado corriente sin cargar. Si sale un nùmero primo, gana el valor en dòlares pero si no sale el nùmero, entonces pierde la cantidad en dòlares. Determine si el juego es favorable o desfavorable para el apostador .

Los posibles valores que se obtienen al lanzar un dado son los números del 1 al 6, de ellos sólo tres son números primos, a saber: 2, 3 y 5. Estos números corresponden a las ganancias posibles en dólares del apostador. Las posibles pérdidas serán entonces: 1, 4 y 6. La siguiente tabla relaciona los posibles resultados de la variable aleatoria X (cantidad de dólares ganados al lanzar un dado) con sus respectivas probabilidades, que para este caso son iguales pues el dado no se encuentra cargado hacia una cara determinada.

Observe que los números 1, 4 y 6 son negativos, pues corresponden al hecho de que el jugador pierde si no sale un número primo.

Como cada valor de la variable aleatoria tiene igual probabilidad, la distribución de probabilidad es uniforme discreta. Pero tenga en cuenta que los valores que toma X no son consecutivos, por tanto no se aplica la definición de valor esperado y debe recurrirse a la definición original Esto es:

{{\mu }_{x}}=E(X)=\sum\limits_{i=1}^{n}{{{x}_{i}}\cdot f(x)=\frac{1}{6}(-1+2+3-4+5-6)=-\frac{1}{6}}

Como el valor esperado es negativo, el juego es desfavorable para el apostador.

Código
library(MASS)

# Definir los valores de x y f(x)
x <- c(-1, 2, 3, -4, 5, 6)
f_x <- rep(1/6, 6)

# Crear un data frame con x y f(x)
tabla <- data.frame(x = x, f_x = f_x)

# Convertir los valores de f(x) a fracciones
tabla$f_x <- as.character(fractions(tabla$f_x))

# Cambiar el nombre de la columna f_x a f(x)
colnames(tabla)[2] <- "f(x)"

# Transponer la tabla
tabla <- t(tabla)

# Aplicar estilo a la tabla
tabla %>%
  kbl(booktabs = TRUE, align = "c") %>%
  kable_classic() %>%
  kable_styling(bootstrap_options = "striped") %>%
  column_spec(1:6, bold = TRUE) %>%
  column_spec(seq(2, 6, by = 2), color = "#000000", background = "#d60226")
x -1 2 3 -4 5 6
f(x) 1/6 1/6 1/6 1/6 1/6 1/6

Solucion en R

Código
x <- c(-1, 2, 3, -4, 5, -6)
f_x <- rep(1/6, length(x))
mu_x <- sum(x * f_x)
result <- as.character(fractions(mu_x))
result
[1] "-1/6"

Distribución Binomial

Casi siempre que un investigador se pregunta por la proporción de individuos que verifican una cierta característica dicotómica (estar enfermo o no, ser varón o no, etc.) subyace en el problema una distribución Binomial. Si de una población se toma una muestra de tamaño n y se anota el número X de individuos de ella que sí verifican la característica, entonces la variable aleatoria X sigue distribución Binomial. Asociada a si cada individuo sigue o no la característica de interés, aparece el término probabilidad/proporción (p) que denota la probabilidad de que el individuo presente la característica o la proporción de individuos que presentan la característica en la población. En consecuencia, esta distribución que se representa como B(n, p), puede verse como el número de éxitos en n repeticiones del experimento con probabilidad p, donde el éxito sería sí se verifica la condición y el experimento sería el hecho de comprobar si el individuo cumple la característica en cuestión. Con respecto al cálculo de probabilidades de una variable aleatoria con distribución Binomial, en R se distinguen cuatro funciones:

dbinom(x, size=n, prob=p). Devuelve el valor (valores) x de la función masa de probabilidad de una variable con distribución Binomial de parámetros n y p. La función masa de probabilidad es una función que caracteriza a las variables aleatorias discretas y que asigna una determinada probabilidad a cada uno de los valores de la variable.

pbinom(x, size=n, prob=p, lower.tail = TRUE). Calcula el valor (valores) x de la función de distribución de una distribución Binomial de parámetros n y p. Se define la función de distribución de la variable aleatoria X como la probabilidad de que X tome un valor menor o igual que x, es decir, P[X ≤ x]. Si lower.tail=FALSE, R calcula P[X > x], lo cual ya no sería la función de distribución.

qbinom(a, size=n, prob=p, lower.tail = TRUE). Determina el cuantil (cuantiles) de una variable con distribución Binomial de parámetros n y p. Por definición, un cuantil es aquel que deja a su izquierda una proporción de valores a, es decir, es aquel valor q tal que P[X ≤ q] = a.

rbinom(r, size=n, prob=p). Genera r valores aleatorios de una distribución Binomial, B(n,p).

La distribución de Bernoulli es una distribución de probabilidad que consiste en la observación de un experimento aleatorio con dos posibles resultados. A uno de los resultados del experimento se le denomina “éxito”, con probabilidad de ocurrencia 𝜋π, y al otro se le llama “fracaso”, con probabilidad de ocurrencia 1−𝜋1−π, donde 𝜋π es un número real tal que 0<𝜋<10<π<1.

La distribución binomial está conformada por 𝑛n repeticiones independientes de un experimento de Bernoulli.

Se dice que una v.a.d. x que asume valores 0,1,…,𝑛 tiene una distribución binomial con parámetros $n$ y π, lo que se escribe:

X\sim Bin(n,\pi), si la f.m.p. de x está dada por:

fx(x;n,\pi)=\left\{\begin{matrix}\frac{n}{x}\pi^{x} (1-\pi)^{n-x}, si x=0,1....,n; & & \\ 0, \text{en otro caso.} & & \end{matrix}\right.

donde 𝑛n es un en tero positivo y 𝜋π es un número real tal que 0<𝜋<10<π<1.

Cuando n=1 la distribución Binomial coincide con la distribución de Bernoulli de parámetro 𝜋π, lo que se escribe: $xBer()$.

Si 𝑋X sigue una distribución binomial 𝐵(𝑛,𝑝)B(n,p), entonces:

  • P(x=k) = dbinom(k,n,p)

  • P(X\leq k) = pbinom(k,n,p)

  • q_{a}=min\begin{Bmatrix}x:P(X\leq x)\geq a\end{Bmatrix}= qbinom(a,n,p)

  • rbinom(m,n,p) genera m valores aleatorios con esta distribución

Parámetros

Si x es una v.a. tal que X\sim Bin(n,\pi) , entonces:

  • E[X]=n\pi

  • V[X]=n\pi(1-\pi)

Ejercicios

Ejercicio 1 (5.8)

De acuerdo con un estudio publicado por un grupo de sociólogos de la Universidad de Massachusetts, aproximadamente 60% de los consumidores de Valium en el estado de Massachusetts empezaron a consumirlo a causa de problemas psicológicos. Calcule la probabilidad de que entre los siguientes 8 consumidores entrevistados de este estado,

a) exactamente 3 comenzaron a consumir Valium por problemas psicológicos;

b) al menos 5 comenzaron a consumir Valium por problemas que no fueron psicológicos.

Respuesta Inciso A
  • n=8

  • k Varía según lo que se pide en cada pregunta

  • p= 0.60

Para n=8 y p=0.6, primero calculamos la probabilidad de que exactamente 3 consumidores comiencen a tomar Valium por problemas psicológicos utilizando la función de probabilidad de la distribución binomial:

P(X=3)=\left ( \frac{8}{3} \right ) * 0.60^{3} * (1-0.60)^{8-3} P(X=3)=\left ( \frac{8}{3} \right ) * 0.60^{3} * 0.4^{5} P(X=3)=\frac{8!}{3!(8-3)} * 0.60^{3} * 0.40^{5} P(X=3)=\frac{8!}{3!(5)} * 0.60^{3} * 0.40^{5} P(X=3)=\frac{8*7*6}{3*2*1} * 0.60^{3} * 0.40^{5} P(X=3)=56 * 0.60^{3} * 0.40^{5} P(X=3)\approx 0.293

Por lo tanto, la probabilidad de que exactamente 3 consumidores de Valium comenzaran a consumirlo por problemas psicológicos es aproximadamente 0.2936.

Gráficas

Código
n <- 8

p <- 0.60

probabilities <- dbinom(0:n, size = n, prob = p)

results_table <- data.frame(Consumidores = 0:n, Probabilidad = probabilities)

print("Tabla de Distribución Binomial para el Inciso A:")
[1] "Tabla de Distribución Binomial para el Inciso A:"
Código
print(results_table)
  Consumidores Probabilidad
1            0   0.00065536
2            1   0.00786432
3            2   0.04128768
4            3   0.12386304
5            4   0.23224320
6            5   0.27869184
7            6   0.20901888
8            7   0.08957952
9            8   0.01679616
Código
n <- 8
p <- 0.60

probabilities <- dbinom(0:n, size = n, prob = p)

barplot(probabilities, 
        names.arg = 0:n, 
        xlab = "Número de Consumidores", 
        ylab = "Probabilidad",
        main = "Distribución Binomial para el Inciso A",
        col = "skyblue",
        ylim = c(0, max(probabilities) * 1.2))

grid()

Código
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
library(ggplot2)

n <- 8

p <- 0.60

probabilities <- dbinom(0:n, size = n, prob = p)

results_df <- data.frame(Consumidores = 0:n, Probabilidad = probabilities)

ggplot(results_df, aes(x = factor(Consumidores), y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "red", width = 0.1) +
  labs(title = "Distribución Binomial para el Inciso A",
       x = "Número de Consumidores",
       y = "Probabilidad") +
  theme_minimal()

Código
n <- 8
p <- 0.6
k <- 3

probabilidad_k <- choose(n, k) * p^k * (1 - p)^(n - k)

probabilidades_acumuladas <- cumsum(dbinom(0:n, size = n, prob = p))

datos <- data.frame(Consumidores = 0:n, Probabilidad_Acumulada = probabilidades_acumuladas)

library(ggplot2)
tabla <- ggplot(datos, aes(x = Consumidores, y = Probabilidad_Acumulada)) +
  geom_step(color = "red") +
  geom_point(data = data.frame(Consumidores = k, Probabilidad_Acumulada = cumsum(probabilidad_k)), aes(x = Consumidores, y = Probabilidad_Acumulada), color = "orange", size = 3) +
  labs(x = "Cantidad de Consumidores", y = "Probabilidad Acumulada",
       title = "Función de Distribución Acumulada (CDF)")

print(tabla)

Respuesta Inciso B

Se calcula la probabilidad acumulada de menos de 5 consumidores comenzando a tomar Valium por problemas que no son psicológicos y para encontrar la probabilidad de al menos 5 consumidores comenzando a tomar Valium por problemas que no son psicológicos, restamos esta probabilidad acumulada de 1.

Calculamos valores para P(X=0),P(X=1),P(X=2) y P(X=4) porque P(X=3) ya se calculó en el inciso A.

P(X=0)=\left ( \frac{8}{0} \right )*(0.4)^{0}*(0.6)^{8}=1*1*0.1677\approx 0.1678 P(X=1)=\left ( \frac{8}{1} \right )*(0.4)^{1}*(0.6)^{7}=8*0.4*0.2799\approx 0.8958 P(X=2)=\left ( \frac{8}{2} \right )*(0.4)^{2}*(0.6)^{6}=28*0.16*0.1677\approx 0.7556 P(X=4)=\left ( \frac{8}{5} \right )*(0.4)^{4}*(0.6)^{4}=70*0.025*0.1296\approx 0.2285

Ahora se suman para obtener P(X \geq 5), se resta X< 5 de 1

P(X<5)\approx 0.16777216+0.33554432+0.28549952+0.12399+0.08643328\approx0.99923

P(X\geq 5)\approx 1-0.99923

P(X\geq 5)\approx 0.00076072

La probabilidad de que al menos 5 consumidores comenzaron a tomar Valium por problemas que no fueron psicológicos es aproximadamente del 0.07607%, es decir, es una probabilidad muy baja. Esto sugiere que la mayoría de los consumidores de Valium en el estado de Massachusetts comenzaron a consumirlo debido a problemas psicológicos.

Código
probabilidades <- c(0.1678, 0.8958, 0.7556, 0.12399, 0.2285)

consumidores <- 0:4

tabla <- data.frame(Consumidores = consumidores, Probabilidad = probabilidades)

print(tabla)
  Consumidores Probabilidad
1            0      0.16780
2            1      0.89580
3            2      0.75560
4            3      0.12399
5            4      0.22850
Código
probabilidades <- c(0.1678, 0.8958, 0.7556, 0.12399, 0.2285)

consumidores <- 0:4

barplot(probabilidades, names.arg = consumidores, 
        xlab = "Cantidad de Consumidores", ylab = "Probabilidad",
        main = "Probabilidad de Consumidores de Valium por Problemas No Psicológicos",
        col = "white", border = "blue", ylim = c(0, 1))

abline(h = 0.5, lty = 2, col = "black")

Código
text(x = barplot(probabilidades) + 0.5, y = probabilidades + 0.02, 
     labels = probabilidades, cex = 0.7, col = "black", pos = 3)

Código
library(ggplot2)
library(dplyr)

datos <- data.frame(Consumidores = 0:4, Probabilidad = c(0.1678, 0.8958, 0.7556, 0.12399, 0.2285))

tabla <- ggplot(datos, aes(x = factor(Consumidores), y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "gold", color = "black", width = 0.1) +
  labs(x = "Cantidad de Consumidores", y = "Probabilidad",
       title = "Probabilidad de Consumidores de Valium por Problemas No Psicológicos") +
  theme_minimal()

print(tabla)

Código
library(ggplot2)

datos <- data.frame(Consumidores = 0:4, Probabilidad = c(0.1678, 0.8958, 0.7556, 0.12399, 0.2285))

datos$Probabilidad_acumulada <- cumsum(datos$Probabilidad)

intersecciones <- data.frame(Consumidores = c(0, 1, 2, 3, 4),
                             Probabilidad_acumulada = c(0, 0.1678, 1.0636, 1.8192, 1))

tabla <- ggplot(datos, aes(x = Consumidores, y = Probabilidad_acumulada)) +
  geom_step(color = "black") +
  geom_point(data = intersecciones, aes(x = Consumidores, y = Probabilidad_acumulada), color = "yellow", size = 3) +
  labs(x = "Cantidad de Consumidores", y = "Probabilidad Acumulada",
       title = "Función de Distribución Acumulada (CDF)") +
  theme_minimal()

print(tabla)

Ejercicio 2 (5.9)

Al probar cierta clase de neumático para camión en un terreno accidentado, se encuentra que el 25% de los camiones no completan la prueba de recorrido sin ponchaduras. De los siguientes 15 camiones probados, calcule la probabilidad de que:

a) de 3 a 6 tengan ponchaduras;

b) menos de 4 tengan ponchaduras;

c) más de 5 ponchaduras.

Respuesta Inciso A

P(3\leq X\leq 6)=P(X\leq 0)-P(X\leq 2) P(3\leq 6)=09434 P(3\leq 2)=0.2361

Entonces:

P(3\leq X\leq 6)=0.9434-0.2361=0.7073

La respuesta calculada es 0.7073 lo que significa que hay aproximadamente un 70.73% de probabilidad de que entre 3 y 6 camiones de los 15 probados sufran una ponchadura durante la prueba en terreno accidentado.

Código
datos_inciso_a <- data.frame(
  P_X_leq_6 = 0.9434,
  P_X_leq_2 = 0.2361,
  P_3_leq_X_leq_6 = 0.7073
)

rownames(datos_inciso_a) <- "Probabilidad"

print(datos_inciso_a)
             P_X_leq_6 P_X_leq_2 P_3_leq_X_leq_6
Probabilidad    0.9434    0.2361          0.7073
Código
probabilidades <- c(P_X_leq_6 = 0.9434, P_X_leq_2 = 0.2361, P_3_leq_X_leq_6 = 0.7073)

barplot(probabilidades, 
        col = "skyblue",
        main = "Probabilidades del Inciso A",
        ylab = "Probabilidad",
        ylim = c(0, 1),
        names.arg = c("P(X <= 6)", "P(X <= 2)", "P(3 <= X <= 6)"),
        cex.names = 0.8,
        beside = TRUE)

Código
library(ggplot2)

datos <- data.frame(
  Cantidad_de_camiones = c(0:6),
  Probabilidad = c(0, 0.2361, 0.2361, 0.2361, 0.2361, 0.9434, 1)
)

tabla <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad)) +
  geom_point(color = "blue", size = 3) +
  geom_line(color = "blue") +
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad acumulada",
       title = "Función de distribución acumulada (CDF) - Inciso A") +
  theme_minimal()

print(tabla)

Código
library(ggplot2)

datos <- data.frame(
  Cantidad_de_camiones = c(0:6),
  Probabilidad = c(0.0566, 0.2649, 0.3956, 0.2649, 0.0566, 0.0016, 0.0001)
)

tabla <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "blue", width = 0.1) +
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad",
       title = "Función de Probabilidad - Inciso A") +
  theme_minimal()

print(tabla)

Respuesta Inciso B

P(3<4)=P(X\leq 3)=0.4613

La probabilidad calculada es aproximadamente 0.4613. Esto significa que hay alrededor de un 46.13% de probabilidad de que 3 o menos camiones de los 15 probados sufran una ponchadura durante la prueba en terreno accidentado.

Código
datos <- data.frame(
  Evento = "Menos de 4 camiones con ponchaduras",
  Probabilidad = 0.4613
)

print(datos)
                               Evento Probabilidad
1 Menos de 4 camiones con ponchaduras       0.4613
Código
evento <- "Menos de 4 camiones con ponchaduras"
probabilidad <- 0.4613

eventos <- c(evento)

probabilidades <- c(probabilidad)

barplot(probabilidades,
        names.arg = eventos,
        col = "skyblue",
        main = "Probabilidad de Menos de 4 Camiones con Ponchaduras",
        ylab = "Probabilidad",
        ylim = c(0, 1))

Código
library(ggplot2)

datos <- data.frame(
  Cantidad_de_camiones = c(0:14),
  Probabilidad_acumulada = cumsum(dbinom(0:14, size = 15, prob = 0.25))
)

grafico <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad_acumulada)) +
  geom_step(color = "blue") +
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad acumulada",
       title = "Función de distribución acumulada") +
  theme_minimal()

print(grafico)

Código
library(ggplot2)

datos <- data.frame(
  Cantidad_de_camiones = c(0:14),
  Probabilidad = dbinom(0:14, size = 15, prob = 0.25)
)

grafico <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "blue", width = 0.2) +
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad",
       title = "Función de Probabilidad") +
  theme_minimal()

print(grafico)

Respuesta Inciso C

P(X>5)=1-P(X\leq 5)=1-0.8516=0.1484

Aunque hay una probabilidad relativamente baja, aún existe una posibilidad considerable del 14.84% que un número significativo de camiones experimenten ponchaduras durante la prueba.

Código
datos <- data.frame(
  Evento = "Más de 5 camiones con ponchaduras",
  Probabilidad = 0.1484
)

print(datos)
                             Evento Probabilidad
1 Más de 5 camiones con ponchaduras       0.1484
Código
evento <- "Más de 5 camiones con ponchaduras"
probabilidad <- 0.1484

probabilidades <- c(probabilidad)

eventos <- c(evento)

barplot(probabilidades,
        names.arg = eventos,
        col = "gold",
        main = "Probabilidad de Más de 5 Camiones con Ponchaduras",
        ylab = "Probabilidad",
        ylim = c(0, 1))

Código
library(ggplot2)

datos <- data.frame(
  Cantidad_de_camiones = c(0:15),
  Probabilidad_acumulada = cumsum(dbinom(0:15, size = 15, prob = 0.25))
)

grafico <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad_acumulada)) +
  geom_step(color = "blue") +
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad acumulada",
       title = "Función de distribución acumulada") +
  theme_minimal()

print(grafico)

Código
library(ggplot2)

# Definir los datos
datos <- data.frame(
  Cantidad_de_camiones = c(0:15),
  Probabilidad = dbinom(0:15, size = 15, prob = 0.25)
)

# Crear la gráfica utilizando ggplot2
grafico <- ggplot(datos, aes(x = Cantidad_de_camiones, y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "blue", width = 0.2) + # Ajustar el ancho de las barras
  labs(x = "Cantidad de camiones con ponchaduras", y = "Probabilidad",
       title = "Función de Probabilidad") +
  theme_minimal()

# Mostrar la gráfica
print(grafico)

Ejercicio 3 (5.10)

Según un informe de la revista Parade, una encuesta a nivel nacional, realizada por la Universidad de Michigan con estudiantes universitarios de último año, reveló que casi 70% desaprueban el consumo diario de marihuana. Si se seleccionan 12 estudiantes de último año al azar y se les pide su opinión, calcule la probabilidad de que el número de los que desaprueban el consumo diario de marihuana sea:

a) cualquiera entre 7 y 9;

b) 5 a lo sumo;

c) no menos de 8.

Respuesta Inciso A

P(7\leq X\leq 9)=P(X\leq 9)-P(X\leq 6)=0.7472-0.1178=0.6294

Hay una probabilidad del 62.94% de que, si seleccionamos al azar 12 estudiantes universitarios de último año y les preguntamos su opinión sobre el consumo diario de marihuana, entre 7 y 9 de ellos desaprobarán dicho consumo.

Código
n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

prob_cumulative <- pbinom(0:n, size = n, prob = p)

prob_7_to_9 <- prob_cumulative[10] - prob_cumulative[7]

tabla <- data.frame(
  'Número de desaprobadores' = 0:n,
  'Probabilidad acumulativa' = prob_cumulative,
  row.names = NULL
)

print(tabla)
   Número.de.desaprobadores Probabilidad.acumulativa
1                         0             5.314410e-07
2                         1             1.541179e-05
3                         2             2.063763e-04
4                         3             1.691655e-03
5                         4             9.489371e-03
6                         5             3.860084e-02
7                         6             1.178487e-01
8                         7             2.763445e-01
9                         8             5.074842e-01
10                        9             7.471847e-01
11                       10             9.149750e-01
12                       11             9.861587e-01
13                       12             1.000000e+00
Código
print(paste("Probabilidad de que el número de desaprobadores esté entre 7 y 9:", prob_7_to_9))
[1] "Probabilidad de que el número de desaprobadores esté entre 7 y 9: 0.629335913283"
Código
n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)

barplot(probabilidades, names.arg = 0:n, xlab = "Número de desaprobadores", ylab = "Probabilidad", 
        main = "Distribución de probabilidad de desaprobadores",
        col = "skyblue", border = "black")

Código
if(!require(ggplot2)) {
  install.packages("ggplot2")
  library(ggplot2)
}

n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)

data <- data.frame(
  "Numero_de_desaprobadores" = 0:n,  # Cambiamos el nombre de la columna
  "Probabilidad" = probabilidades
)

ggplot(data, aes(x = factor(Numero_de_desaprobadores), y = Probabilidad)) +  # Cambiamos el nombre de la columna aquí también
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.2) +
  labs(x = "Número de desaprobadores", y = "Probabilidad",
       title = "Distribución de probabilidad de desaprobadores") +
  theme_minimal()

Código
n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)

barplot(probabilidades, names.arg = 0:n, xlab = "Número de desaprobadores", ylab = "Probabilidad",
        main = "Distribución de probabilidad de desaprobadores",
        col = "skyblue", border = "black")

Respuesta Inciso B

P(X\leq 5)=0.0386

Hay una probabilidad del 3.86% de que, si seleccionamos al azar 12 estudiantes universitarios de último año y les preguntamos su opinión sobre el consumo diario de marihuana, como máximo 5 de ellos desaprobarán dicho consumo.

Código
n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)


prob_hasta_5 <- probabilidades[1:6]

tabla <- data.frame(
  'Número de desaprobadores' = 0:5,
  'Probabilidad' = prob_hasta_5
)

print(tabla)
  Número.de.desaprobadores Probabilidad
1                        0 5.314410e-07
2                        1 1.488035e-05
3                        2 1.909645e-04
4                        3 1.485279e-03
5                        4 7.797716e-03
6                        5 2.911147e-02
Código
n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)

prob_hasta_5 <- probabilidades[1:6]

barplot(prob_hasta_5, names.arg = 0:5, xlab = "Número de desaprobadores", ylab = "Probabilidad",
        main = "Distribución de probabilidad de desaprobadores (como máximo 5)",
        col = "skyblue", border = "black")

Código
if(!require(ggplot2)) {
  install.packages("ggplot2")
  library(ggplot2)
}

n <- 12 # Número total de estudiantes
p <- 0.7 # Probabilidad de desaprobar el consumo diario de marihuana

probabilidades <- dbinom(0:n, size = n, prob = p)

prob_hasta_5 <- probabilidades[1:6]

data <- data.frame(
  "Numero_de_desaprobadores" = 0:5,
  "Probabilidad" = prob_hasta_5
)

ggplot(data, aes(x = factor(Numero_de_desaprobadores), y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.1) +
  labs(x = "Número de desaprobadores", y = "Probabilidad",
       title = "Distribución de probabilidad de desaprobadores (como máximo 5)") +
  theme_minimal() +
  geom_hline(yintercept = 0.0386, linetype = "dashed", color = "red") +
  annotate("text", x = 0, y = 0.0386, label = "P(X <= 5) = 0.0386", vjust = -0.5, color = "red")

Respuesta Inciso C

P(X>8)=1-P(X<7)=1-0.2763=0.7237

Hay alrededor de un 72.37% de probabilidad de que, si seleccionamos al azar 12 estudiantes de último año, al menos 8 de ellos desaprobarán el consumo diario de marihuana.

Código
probabilidad <- 1 - 0.2763

tabla <- data.frame(
  Numero_de_estudiantes_que_desaprueban = 0:12,
  Probabilidad = dbinom(0:12, size = 12, prob = probabilidad)
)

print(tabla)
   Numero_de_estudiantes_que_desaprueban Probabilidad
1                                      0 1.979569e-07
2                                      1 6.221993e-06
3                                      2 8.963341e-05
4                                      3 7.825757e-04
5                                      4 4.611971e-03
6                                      5 1.932788e-02
7                                      6 5.906208e-02
8                                      7 1.325988e-01
9                                      8 2.170688e-01
10                                     9 2.526926e-01
11                                    10 1.985598e-01
12                                    11 9.455977e-02
13                                    12 2.063968e-02
Código
probabilidad <- 1 - 0.2763

tabla <- data.frame(
  Numero_de_estudiantes_que_desaprueban = 0:12,
  Probabilidad = dbinom(0:12, size = 12, prob = probabilidad)
)

barplot(tabla$Probabilidad, names.arg = tabla$Numero_de_estudiantes_que_desaprueban,
        xlab = "Número de estudiantes que desaprueban",
        ylab = "Probabilidad",
        main = "Distribución de probabilidad para el consumo diario de marihuana",
        col = "skyblue", border = "black", ylim = c(0, 0.3))

Código
library(ggplot2)

# Probabilidad de que el número de estudiantes que desaprueban sea no menos de 8
probabilidad <- 1 - 0.2763

# Crear tabla
tabla <- data.frame(
  Numero_de_estudiantes_que_desaprueban = 0:12,
  Probabilidad = dbinom(0:12, size = 12, prob = probabilidad)
)

# Crear gráfico utilizando ggplot2
ggplot(tabla, aes(x = Numero_de_estudiantes_que_desaprueban, y = Probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(x = "Número de estudiantes que desaprueban",
       y = "Probabilidad",
       title = "Distribución de probabilidad para el consumo diario de marihuana") +
  theme_minimal()

Código
library(ggplot2)
library(kableExtra)

# Probabilidad de que el número de estudiantes que desaprueban sea no menos de 8
probabilidad <- 1 - 0.2763



# Crear tabla
tabla <- data.frame(
  Numero_de_estudiantes_que_desaprueban = 0:12,
  Probabilidad = dbinom(0:12, size = 12, prob = probabilidad) 
)


# Crear gráfico utilizando ggplot2
ggplot(tabla, aes(x = Numero_de_estudiantes_que_desaprueban, y = Probabilidad)) +
  geom_point(color = "blue", size = 3) +
  geom_line(color = "blue", size = 1) +
  labs(x = "Número de estudiantes que desaprueban",
       y = "Probabilidad",
       title = "Función de probabilidad para el consumo diario de marihuana") +
  theme_minimal()

Distribución Hipergeomètrica

La distribución hipergeométrica surge a partir del “número de éxitos en 𝑛 ensayos dependientes de un experimento de Bernoulli”.

Un experimento hipergeométrico con parámetros 𝑛, 𝑀, y 𝑁 está basado en las siguientes condiciones:

  1. Se elige una muestra sin reemplazo de 𝑛 elementos de un conjunto compuesto por 𝑁 elementos, de los cuales 𝑀 tienen una característica de interés.

  2. Cada elemento se puede caracterizar como un “éxito (el elemento tiene la característica de interés) o como un”fracaso” (el elemento no tiene la característica de interés).

Se dice que una v.a. X tiene una distribución hipergeométrica con parámetros 𝑛, 𝑀, y 𝑁, lo que se escribe: XHg(n,M,N), si la f.m.p. de X está dada por:

fx(x;n,M,N)= \left\{\begin{matrix} \frac{\binom{M}{\ x}\binom{N-M}{n-\ x }}{\binom{N}{n}}, & si x= max\left \{ 0,n`M-N \right \},..., min\left \{ n,M \right \}; \\ 0, & en\: otro\: caso. \end{matrix}\right. Donde n,M y N son números enteros no negativos tales que n≤N y M≤N

Parámetros

Si X es una v.a tal que XH(n,M,N), entonces:

E\left [ X \right ]= n\frac{M}{N} V\left [ X \right ]=n\frac{M}{N}(1-\frac{M}{N})\left ( \frac{N-n}{N-1} \right )

La expresión anterior evidencia que el valor esperado de la distribución binomial y de la distribución hipergeométrica coinciden, mientras que la varianza de las dos distribuciones difieren por el factor ( N-n )/ ( N-1 ), denominado factor de corrección por población finita.

Ejercicios

Ejercicio 4 (5.29)

El dueño de una casa planta 6 bulbos selecciona- dos al azar de una caja que contiene 5 bulbos de tulipán y 4 de narciso. ¿Cuál es la probabilidad de que plante 2 bulbos de narciso y 4 de tulipán?

Respuesta:

Datos:

N=9 tamaño de la poblaciòn

n=6 tamaño de la muestra

M= 5 bulbos de tulipàn

x= 4 bulbos de narciso

P(X=x)=\frac{\binom{M}{x}\binom{N-M}{n-x}}{\binom{N}{n}}

Remplazando obtenemos que:

P(X=4)=\frac{\binom{5}{4}\binom{4}{2}}{\binom{9}{6}}= 0.3571 Es decir la probabilidad de que plante 2 bulbos de narciso y 4 de tulipán es del 35.71%.

Código
library(kableExtra)

# Parámetros
n <- 6
M <- 5
N <- 9
x <- 0:5

# Función de masa de probabilidad
fx <- dhyper(x = x, m = M, n = N - M, k = n)

# Función de distribución acumulada
Fx <- phyper(q = x, m = M, n = N - M, k = n)

# Crear un dataframe con los valores
df <- data.frame(x = x, fx = fx, Fx = Fx)

# Tabla con kableExtra
 From.basic <- c("striped", "bordered", "hover", "condensed", "responsive")
tabla <- kable(df, col.names = c("x", "f(x)", "F(x)"), align = "c") %>%
  kable_styling(bootstrap_options = From.basic)
tabla
x f(x) F(x)
0 0.0000000 0.0000000
1 0.0000000 0.0000000
2 0.1190476 0.1190476
3 0.4761905 0.5952381
4 0.3571429 0.9523810
5 0.0476190 1.0000000

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=6, M=5 y N=9.

Código
# parametros
n <- 6
M <- 5
N <- 9
x <- 0:5
# f.m.p.
fx <- dhyper(x = x, m = M, n = N-M, k = n)
# f.d.a.
Fx <- phyper(q = x, m = M, n = N-M, k = n)
# graficos
par(mfrow = c(1,2))
# f.m.p
plot(x = x, y = fx, xlab = "x", ylab = "f(x)", pch = 15, col = "blue")
segments(x0 = x, y0 = 0, x1 = x, y1 = fx, lwd = 2, col = "blue")
# f.d.a.
plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "x", ylab = "F(x)", col = "blue", lwd = 2)
points(x, Fx, col = "blue", pch = 15)

Código
# Número total de bulbos en la caja
total_bulbos <- 9

# Número de bulbos de tulipán en la caja
bulbos_tulipan <- 5

# Número de bulbos de narciso en la caja
bulbos_narciso <- 4

# Número de bulbos seleccionados
seleccionados <- 6

# Calcular la probabilidad
probabilidad <- dhyper(2, bulbos_narciso, bulbos_tulipan, seleccionados)
round(probabilidad, 4)
[1] 0.3571

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=6, M=5 y N=9.

Código
library(ggplot2)

# Parámetros
n <- 6
M <- 5
N <- 9
x <- 0:5

# Función de masa de probabilidad
fx <- dhyper(x = x, m = M, n = N-M, k = n)

# Función de distribución acumulativa
Fx <- phyper(q = x, m = M, n = N-M, k = n)

# Gráficos
# Función de masa de probabilidad
df_fx <- data.frame(x = x, fx = fx)

ggplot(df_fx, aes(x = x, y = fx)) +
  geom_point(color = "blue", size = 3, shape = 15) +
  geom_segment(aes(x = x, y = 0, xend = x, yend = fx), color = "blue", size = 1.5) +
  labs(x = "x", y = "f(x)", title = "Función de Masa de Probabilidad (fmp)") +
  theme_minimal()

Código
# Función de distribución acumulativa
df_Fx <- data.frame(x = c(0, x), Fx = c(0, Fx))

ggplot(df_Fx, aes(x = x, y = Fx)) +
  geom_step(color = "blue", size = 1.5) +
  geom_point(color = "blue", size = 3, shape = 15) +
  labs(x = "x", y = "F(x)", title = "Función de Distribución Acumulativa (FDA)") +
  theme_minimal()

Ejercicio 5 (5.30)

Para evitar la detección en la aduana, un viajero coloca 6 comprimidos con narcóticos en una botella que contiene 9 píldoras de vitamina que aparentemente son similares. Si el oicial de la aduana selecciona 3 de as tabletas al azar para su análisis, ¿cuál es la probabilidad de que el viajero sea arrestado por posesión ilegal de narcóticos?

Respuesta:

Datos: N=15, n=3, M=6, x=1,2,3

Remplazando obtenemos que:

P(x=1)=\frac{\binom{6}{1}\binom{9}{2}}{\binom{15}{3}}= 0.4747

P(x=2)=\frac{\binom{6}{2}\binom{9}{1}}{\binom{15}{3}}=0.2967

P(x=3)=\frac{\binom{6}{3}\binom{9}{0}}{\binom{15}{3}}=0.0439 La la probabilidad de que el viajero sea arrestado por posesión ilegal de narcóticos esta dada por; P(x=1)+P(x=2)+P(x=3)= 0.8153 * 100= 81.53% es decir el viajero tiene in 81.53 % de ser arrestado por trafico de drogras en el aeropuerto.

Código
library(kableExtra)

# Parámetros
total_comprimidos <- 15
comprimidos_narcoticos <- 6
max_tabletas_seleccionadas <- 10

# Calcular las probabilidades
prob_arresto <- dbinom(0:max_tabletas_seleccionadas, total_comprimidos, comprimidos_narcoticos / total_comprimidos)
prob_acumulada <- pbinom(0:max_tabletas_seleccionadas, total_comprimidos, comprimidos_narcoticos / total_comprimidos)

# Crear la tabla
tabla <- data.frame(
  Tabletas_Seleccionadas = 0:max_tabletas_seleccionadas,
  Probabilidad = prob_arresto,
  Probabilidad_Acumulada = prob_acumulada
)

# Imprimir la tabla con kableExtra
tabla %>%
  kable(col.names = c("Tabletas Seleccionadas", "f(x)", "F(x)")) %>%
 kable_styling(bootstrap_options = From.basic)
Tabletas Seleccionadas f(x) F(x)
0 0.0004702 0.0004702
1 0.0047018 0.0051720
2 0.0219420 0.0271140
3 0.0633879 0.0905019
4 0.1267758 0.2172777
5 0.1859378 0.4032156
6 0.2065976 0.6098132
7 0.1770837 0.7868968
8 0.1180558 0.9049526
9 0.0612141 0.9661667
10 0.0244856 0.9906523
Código
# Número total de tabletas en la botella
total_tabletas <- 15

# Número de tabletas con narcóticos en la botella
tabletas_narcoticos <- 6

# Número de tabletas sin narcóticos en la botella
tabletas_vitaminas <- 9

# Número de tabletas seleccionadas para análisis
seleccionadas <- 3

# Calcular la probabilidad
probabilidad <- 1 - phyper(0, tabletas_narcoticos, tabletas_vitaminas, seleccionadas)
round(probabilidad, 4)
[1] 0.8154

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=3, M=6 y N=15.

Código
# parametros
n <- 3
M <- 6
N <- 15
x <- 0:5
# f.m.p.
fx <- dhyper(x = x, m = M, n = N-M, k = n)
# f.d.a.
Fx <- phyper(q = x, m = M, n = N-M, k = n)
# graficos
par(mfrow = c(1,2))
# f.m.p
plot(x = x, y = fx, xlab = "x", ylab = "f(x)", pch = 15, col = "blue")
segments(x0 = x, y0 = 0, x1 = x, y1 = fx, lwd = 2, col = "blue")
# f.d.a.
plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "x", ylab = "F(x)", col = "blue", lwd = 2)
points(x, Fx, col = "blue", pch = 15)

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=3, M=6 y N=15.

Código
library(ggplot2)

# Parámetros
n <- 3
M <- 6
N <- 15
x <- 0:5

# Función de masa de probabilidad
fx <- dhyper(x = x, m = M, n = N-M, k = n)

# Función de distribución acumulativa
Fx <- phyper(q = x, m = M, n = N-M, k = n)

# Gráficos
# Función de masa de probabilidad
df_fx <- data.frame(x = x, fx = fx)

ggplot(df_fx, aes(x = x, y = fx)) +
  geom_point(color = "blue", size = 3, shape = 15) +
  geom_segment(aes(x = x, y = 0, xend = x, yend = fx), color = "blue", size = 1.5) +
  labs(x = "x", y = "f(x)", title = "Función de Masa de Probabilidad (fmp)") +
  theme_minimal()

Código
# Función de distribución acumulativa
df_Fx <- data.frame(x = c(0, x), Fx = c(0, Fx))

ggplot(df_Fx, aes(x = x, y = Fx)) +
  geom_step(color = "blue", size = 1.5) +
  geom_point(color = "blue", size = 3, shape = 15) +
  labs(x = "x", y = "F(x)", title = "Función de Distribución Acumulativa (FDA)") +
  theme_minimal()

Ejercicio 6 (5.32)

De un lote de 10 misiles, se seleccionan 4 al azar y se disparan. Si el lote contiene 3 misiles defectuosos que no pueden dispararse, la probabilidad de que:

a) los 4 puedan dispararse?

b) a lo sumo fallen 2?

Respuesta Inciso A

Datos:

N=10

n=4

M=7

x=4

P(x=4)=\frac{\binom{7}{4}\binom{3}{0}}{\binom{10}{4}}= 0.1666 La probabilidad de que cuatro de los 10 misiles escogidos al azar es del 16.66%

b. Datos:

N=10

n=4

M=3

P(x\geq 2)=1-P(x< 2)P(x< 2)=P(0)+P(1)

P(x< 2)=\frac{\binom{3}{0}\binom{7}{4}}{\binom{10}{4}}+\frac{\binom{3}{1}\binom{7}{3}}{\binom{10}{4}}= \, 0.1666+0.5000= 0.6667

P(x\leq 2)= 1-0.6667=0.3333

Es decir la probabilidad de que a lo sumo fallen 2 misiles es del 33.33%

::: panel-tabset ## Tabla

Código
library(kableExtra)

# Parámetros
total_misiles <- 10
misiles_defectuosos <- 3
seleccionados <- 4

# Calcular la distribución de frecuencias
x <- 0:seleccionados
probabilidades <- dhyper(x, total_misiles - misiles_defectuosos, misiles_defectuosos, seleccionados)

# Calcular la distribución acumulada
prob_acumulada <- phyper(x, total_misiles - misiles_defectuosos, misiles_defectuosos, seleccionados)

# Crear dataframe
df <- data.frame(x = x,
                 Frecuencia = probabilidades,
                 Acumulada = prob_acumulada)

# Tabla con kableExtra
tabla <- kable(df, col.names = c("x", "Frecuencia", "Acumulada"), align = "c") %>%
  kable_styling(bootstrap_options = From.basic)
tabla
x Frecuencia Acumulada
0 0.0000000 0.0000000
1 0.0333333 0.0333333
2 0.3000000 0.3333333
3 0.5000000 0.8333333
4 0.1666667 1.0000000

Solución en R

Código
# Número total de misiles en el lote
total_misiles <- 10

# Número de misiles defectuosos en el lote
misiles_defectuosos <- 3

# Número de misiles que se seleccionan para disparar
seleccionados <- 4

# a) Probabilidad de que los 4 puedan dispararse
probabilidad_a <- dhyper(4, total_misiles - misiles_defectuosos, misiles_defectuosos, seleccionados)
round(probabilidad_a, 4)
[1] 0.1667
Código
# b) Probabilidad de que a lo sumo fallen 2
probabilidad_b <- sum(dhyper(0:2, total_misiles - misiles_defectuosos, misiles_defectuosos, seleccionados))
round(probabilidad_b, 4)
[1] 0.3333

Inciso A

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=4, M=7 y N=10.

Código
# parametros
n <- 4
M <- 7
N <- 10
x <- 0:5
# f.m.p.
fx <- dhyper(x = x, m = M, n = N-M, k = n)
# f.d.a.
Fx <- phyper(q = x, m = M, n = N-M, k = n)
# graficos
par(mfrow = c(1,2))
# f.m.p
plot(x = x, y = fx, xlab = "x", ylab = "f(x)", pch = 15, col = "blue")
segments(x0 = x, y0 = 0, x1 = x, y1 = fx, lwd = 2, col = "blue")
# f.d.a.
plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "x", ylab = "F(x)", col = "blue", lwd = 2)
points(x, Fx, col = "blue", pch = 15)

Respuesta Inciso B

La siguiente figura presenta el gráfico de la f.m.p. y de la f.d.a. de una variable con distribución hipergeométrica con parámetros n=4, M=3 y N=10.

Código
# parametros
n <- 4
M <- 3
N <- 10
x <- 0:5
# f.m.p.
fx <- dhyper(x = x, m = M, n = N-M, k = n)
# f.d.a.
Fx <- phyper(q = x, m = M, n = N-M, k = n)
# graficos
par(mfrow = c(1,2))
# f.m.p
plot(x = x, y = fx, xlab = "x", ylab = "f(x)", pch = 15, col = "blue")
segments(x0 = x, y0 = 0, x1 = x, y1 = fx, lwd = 2, col = "blue")
# f.d.a.
plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "x", ylab = "F(x)", col = "blue", lwd = 2)
points(x, Fx, col = "blue", pch = 15)

Gráficas Inciso A
Código
library(ggplot2)
library(patchwork)

# Parámetros
n <- 4
M <- 7
N <- 10
x <- 0:5

# Función de masa de probabilidad
fx <- dhyper(x = x, m = M, n = N-M, k = n)

# Función de distribución acumulada
Fx <- phyper(q = x, m = M, n = N-M, k = n)

# Crear dataframe para ggplot2
data <- data.frame(x = x, fx = fx, Fx = Fx)

# Gráfico de función de masa de probabilidad
p1 <- ggplot(data, aes(x = x, y = fx)) +
  geom_point(col = "blue", pch = 15) +
  geom_segment(aes(xend = x, yend = 0), lwd = 2, col = "blue") +
  labs(title = "Función de Masa de Probabilidad", x = "x", y = "f(x)")

# Gráfico de función de distribución acumulada
p2 <- ggplot(data, aes(x = x, y = Fx)) +
  geom_step(col = "blue", lwd = 2) +
  geom_point(col = "blue", pch = 15) +
  labs(title = "Función de Distribución Acumulada", x = "x", y = "F(x)")

# Mostrar los gráficos
p1 + p2 + plot_layout(ncol = 2)

Gráficas Inciso B
Código
library(ggplot2)

# Parámetros
n <- 4
M <- 3
N <- 10
x <- 0:5

# Función de masa de probabilidad
fx <- dhyper(x = x, m = M, n = N-M, k = n)

# Función de distribución acumulada
Fx <- phyper(q = x, m = M, n = N-M, k = n)

# Crear dataframe para ggplot2
data <- data.frame(x = x, fx = fx, Fx = Fx)

# Gráfico de función de masa de probabilidad
ggplot(data, aes(x = x, y = fx)) +
  geom_point(col = "blue", pch = 15) +
  geom_segment(aes(xend = x, yend = 0), lwd = 2, col = "blue") +
  labs(title = "Función de Masa de Probabilidad", x = "x", y = "f(x)")

Código
# Gráfico de función de distribución acumulada
ggplot(data, aes(x = x, y = Fx)) +
  geom_step(col = "blue", lwd = 2) +
  geom_point(col = "blue", pch = 15) +
  labs(title = "Función de Distribución Acumulada", x = "x", y = "F(x)")

:::

Distribución de Poisson

Esta es otra distribución de probabilidad discreta útil en la que la variable aleatoria representa el número de eventos independientes que ocurren a una velocidad constante. La distribución de Poisson, llamada así en honor a Simeón Denis Poisson probabilista francés que fue el primero en describirla, es el principal modelo de probabilidad empleado para analizar problemas de líneas de espera, confiabilidad y control de calidad; como el número de personas que llegan a un lugar determinado en un tiempo definido, los defectos en piezas similares para el material, el número de bacterias en un cultivo, el número de goles anotados en un partido de fútbol, el número de fallas de una máquina en una hora o en un día, la cantidad de vehículos que transitan por una autopista, el número de llamadas telefónicas por minuto, etc. Como se puede observar se trata de hallar la probabilidad de ocurrencia de cualquier número por unidad de medición (temporal o espacial).

-La probabilidad de más de un acierto en un subintervalo es cero o insignificante.

-La probabilidad de una ocurrencia en un subintervalo es la misma para todos los subintervalos, y es proporcional a la longitud de estos.

-El conteo de ocurrencias en cada subintervalo es independiente del de los demás subintervalos.

Entonces el experimento aleatorio recibe el nombre de proceso Poisson o flujo de procesos de Poisson.

Dado un proceso Poisson donde \lambda es el número promedio de ocurrencias en el intervalo de números reales donde este se define, la variable aleatoria X correspondiente al número de ocurrencias en el intervalo es llamada variable aleatoria Poisson y su función de probabilidad está dada por:

fx(x;\lambda )=\left\{\begin{matrix} \frac{e^{-\lambda }\lambda ^{x}}{x!}, & si\, x=0,1,2,...; \\ 0, & en\: otro\, caso \end{matrix}\right.

donde λ es un número real positivo.

Parámetros

Si X es una v.a. tal que X∼P(λ), entonces:

E[X]=λ V[X]=λ

Ejercicios

Ejercicio 7 (5.56)

En cierto crucero ocurren, en promedio, 3 accidentes de tránsito al mes. ¿Cuál es la probabilidad de que en cualquier determinado mes en este crucero

  1. ocurran exactamente 5 accidentes?
  2. ocurran menos de 3 accidentes?
  3. ocurran al menos 2 accidentes?

Respuesta:

a) Datos:

X = 5

λ= 3

P(x=5)=\frac{e^{-3} 3^{5}}{5!}= 0.1008 Es decir que la probabilidad de que ocurran exactamente 5 accidentes es del 10.08%, en un mes.

  1. Datos:

    X < 3

    λ= 3

p(x < 3) = p(x \leq 2) P(x=0)=\frac{e^{-3} 3^{0}}{0}= 0.0497 P(x=1)=\frac{e^{-3} 3^{1}}{1}= 0.1493 P(x=2)=\frac{e^{-3} 3^{2}}{2}= 0.2240

P(x=2)+P(x=1)+P(x=0)=0.423 Es decir la probabilidad de que ocurran menos de 3 axcidentes al mes es de 42.3%

  1. Datos:

    X

    λ= 3

    P(x\geq 2)= 1- P(x\leq 1) P(x\leq 1)= P(x=0)+P(x=1)= 0.0497+0.1493= 1-0.199= 0.801 La probabilidad de que ocurran al menos 2 accidentes al mes es de 80.1%

Código
# Establecer la media
lambda <- 3

# a. ocurran exactamente 5 accidentes
p_a <- round(dpois(5, lambda), 4)
cat("a. La probabilidad de que ocurran exactamente 5 accidentes", p_a, "\n")
a. La probabilidad de que ocurran exactamente 5 accidentes 0.1008 
Código
# b.ocurran menos de 3 accidentes
p_b <- round(ppois(2, lambda), 4)
cat("b. La probabilidad de queocurran menos de 3 accidentes es", p_b, "\n")
b. La probabilidad de queocurran menos de 3 accidentes es 0.4232 
Código
# c. ocurran al menos 2 accidentes
p_c <- round( 1 - ppois(1, lambda), 4)
cat("c. La probabilidad de que ocurran al menos 2 accidentes", p_c, "\n")
c. La probabilidad de que ocurran al menos 2 accidentes 0.8009 
Código
library(tidyverse)
library(kableExtra)

lambda <- 3
n <- 12
x <- (0:n)
fx <- round(dpois(x = x, lambda = lambda),4)
Fx <- round(cumsum(fx),4)
df = data.frame(x,fx,Fx)
From.basic <- c("striped", "bordered", "hover", " condensed", "responsive")
kable(df, align = "c") %>%
kable_styling(bootstrap_options = From.basic)
x fx Fx
0 0.0498 0.0498
1 0.1494 0.1992
2 0.2240 0.4232
3 0.2240 0.6472
4 0.1680 0.8152
5 0.1008 0.9160
6 0.0504 0.9664
7 0.0216 0.9880
8 0.0081 0.9961
9 0.0027 0.9988
10 0.0008 0.9996
11 0.0002 0.9998
12 0.0001 0.9999
Código
# graficos
par(mfrow = c(1,2))
# f.m.p
plot(x = x, y = fx, xlab = "x", ylab = "f(x)", pch = 15, col = "blue")
segments(x0 = x, y0 = 0, x1 = x, y1 = fx, lwd = 2, col = "blue")
# f.d.a.
plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "x", ylab = "F(x)", col = "blue", lwd = 2)
points(x, Fx, col = "blue", pch = 15)

Código
library(ggplot2)


# Gráfico de f.m.p.
p1 <- ggplot(df_fx, aes(x = x, y = fx)) +
  geom_point(color = "blue", size = 3) +
  geom_segment(aes(x = x, y = 0, xend = x, yend = fx), color = "blue", size = 1) +
  labs(x = "x", y = "f(x)", title = "Función de Masa de Probabilidad de poisson(f.m.p.)")

# Gráfico de f.d.a.
p2 <- ggplot(df_Fx, aes(x = x, y = Fx)) +
  geom_step(color = "blue", size = 1.5) +
  geom_point(color = "blue", size = 3) +
  labs(x = "x", y = "F(x)", title = "Función de Distribución Acumulada de poisson(f.d.a.)")

# Mostrar los gráficos
gridExtra::grid.arrange(p1, p2, nrow = 1)

Ejercicio 8(5.57)

Un escritor de libros comete, en promedio, dos errores de procesamiento de texto por página en el primer borrador de su libro. ¿Cuál es la probabilidad de que en la siguiente página cometa

  1. 4 o más errores?
  2. ningún error?

Respuesta: a) Datos: λ= 2 X

P(x\geq 4)= 1-P(x< 4) P(x\geq 4)=1-\sum_{i=0}^{3}\frac{e^{-2}*2^{x}}{x!}=1-0.8569=14.31

La probabilidad de que el escritor cometa 4 o mas errores es del 14.31% por pagina

  1. Datos:
  2. λ= 2
  3. X= 0

P(x=0)=\frac{e^{-2}*2^{0}}{0!}= 0.1353 La probabilidad de que el escritor no tenga errores es del 13.53%

Código
# Promedio de errores por página
lambda <- 2

# a) Probabilidad de que ocurran 4 o más errores
prob_4_o_mas <- 1 - ppois(3, lambda)
prob_4_o_mas
[1] 0.1428765
Código
# b) Probabilidad de que no ocurran errores
prob_ningun_error <- dpois(0, lambda)
prob_ningun_error
[1] 0.1353353
Código
library(tidyverse)
library(kableExtra)

# Parámetros
lambda <- 2

# a) 4 o más errores
prob_4_o_mas <- round(1 - ppois(3, lambda), 4)

# b) ningún error
prob_ningun_error <- round(dpois(0, lambda), 4)

# Crear tabla
df <- tibble(
  Evento = c("4 o más errores", "Ningún error"),
  Probabilidad = c(prob_4_o_mas, prob_ningun_error)
)
x <- (0:n)
fx <- round(dpois(x = x, lambda = lambda),4)
Fx <- round(cumsum(fx),4)
df = data.frame(x,fx,Fx)
From.basic <- c("striped", "bordered", "hover", " condensed", "responsive")
kable(df, align = "c") %>%
kable_styling(bootstrap_options = From.basic)
x fx Fx
0 0.1353 0.1353
1 0.2707 0.4060
2 0.2707 0.6767
3 0.1804 0.8571
4 0.0902 0.9473
5 0.0361 0.9834
6 0.0120 0.9954
7 0.0034 0.9988
8 0.0009 0.9997
9 0.0002 0.9999
10 0.0000 0.9999
11 0.0000 0.9999
12 0.0000 0.9999
Código
# Parámetros
lambda <- 2
n <- 12

# Valores de x
x <- 0:n

# Función de masa de probabilidad de Poisson
pmf <- dpois(x, lambda)

# Gráfico 
barplot(pmf, names.arg = x, col = "skyblue", border = "blue", 
        main = "Función de Probabilidad de Masa de Poisson", 
        xlab = "Número de errores por página", 
        ylab = "Probabilidad", 
        space = 5, 
        width = 0.001)

Código
# Función de distribución acumulada de Poisson
cdf <- ppois(x, lambda)

# Gráfico de la función de distribución acumulada
plot(x, cdf, type = "s", col = "blue", lwd = 2,
     main = "Función de Distribución Acumulada de Poisson",
     xlab = "Número de errores por página",
     ylab = "Probabilidad acumulada")

Código
library(ggplot2)

# Parámetros
lambda <- 2
n <- 12

# Valores de x
x <- 0:n

# Función de masa de probabilidad de Poisson
pmf <- dpois(x, lambda)

# Crear dataframe para ggplot2
df <- data.frame(x = x, pmf = pmf)

# Gráfico de barras para la función de masa de probabilidad
ggplot(df, aes(x = as.factor(x), y = pmf)) +
  geom_col(fill = "skyblue", color = "blue", width = 0.1) +  # Ancho de las barras
  labs(title = "Función de Probabilidad de Masa de Poisson",
       x = "Número de errores por página",
       y = "Probabilidad") +
  theme_minimal()

Código
# Función de distribución acumulada de Poisson
cdf <- ppois(x, lambda)

# Gráfico de la función de distribución acumulada
ggplot(data.frame(x = x, cdf = cdf), aes(x = x, y = cdf)) +
  geom_step(col = "blue", lwd = 2) +
  labs(title = "Función de Distribución Acumulada de Poisson",
       x = "Número de errores por página",
       y = "Probabilidad acumulada") +
  theme_minimal()

Ejercicio 9 (5.58)

Cierta área del este de Estados Unidos resulta afectada, en promedio, por 6 huracanes al año. Calcule la probabilidad de que para cierto año esta área resulte afectada por

  1. menos de 4 huracanes;
  2. cualquier cantidad entre 6 y 8 huracanes.

Respuesta:

Datos:

λ= 6

X=0,1,2,3

P(x< 4)=\sum_{i=0}^{3}\frac{e^{-6}*6^{x}}{x!}=0.0024+0.0148+0.0446+0.0892=0.1512

la probabilidad de que para cierto año esta área resulte afectada por menos de 4 huracanes es de 15.12%

Datos:

λ= 6

X= 6x

P(6\leq x\leq 8)= \sum_{x=6}^{8}\frac{e^{-6}*6^{x}}{x!}=0.1606+0.1376+0.1032= 0.4014

para la cantidad entre 6x, la probabilidad de huracanes es del 40.14%

Código
library(tidyverse)
library(kableExtra)

# Promedio de huracanes por año
lambda <- 6

# Calcular las probabilidades para hasta 10 huracanes
probabilidades <- round(dpois(0:12, lambda), 4)

# Calcular las probabilidades acumuladas
prob_acumuladas <- round(cumsum(probabilidades), 4)

# Crear dataframe
df <- tibble(
  "Número de huracanes" = 0:12,
  "Probabilidad" = probabilidades,
  "Probabilidad acumulada" = prob_acumuladas
)
From.basic <- c("striped", "bordered", "hover", " condensed", "responsive")
kable(df, align = "c") %>%
kable_styling(bootstrap_options = From.basic)
Número de huracanes Probabilidad Probabilidad acumulada
0 0.0025 0.0025
1 0.0149 0.0174
2 0.0446 0.0620
3 0.0892 0.1512
4 0.1339 0.2851
5 0.1606 0.4457
6 0.1606 0.6063
7 0.1377 0.7440
8 0.1033 0.8473
9 0.0688 0.9161
10 0.0413 0.9574
11 0.0225 0.9799
12 0.0113 0.9912
Código
# Promedio de huracanes por año
lambda <- 6

# a) Probabilidad de que ocurran menos de 4 huracanes
prob_menos_de_4 <- round(ppois(3, lambda), 4)
prob_menos_de_4
[1] 0.1512
Código
# b) Probabilidad de que ocurran entre 6 y 8 huracanes
prob_entre_6_y_8 <- round(sum(dpois(6:8, lambda)), 4)
prob_entre_6_y_8
[1] 0.4016
Código
# Promedio de huracanes por año
lambda <- 6

# Números de huracanes
num_huracanes <- 0:15

# Función de probabilidad de masa (PMF)
pmf <- round(dpois(num_huracanes, lambda), 4)

# Función de distribución acumulada (CDF)
cdf <- round(ppois(num_huracanes, lambda), 4)

# Gráfico de PMF
plot(num_huracanes, pmf, type = "h", lwd = 2, col = "blue",
     main = "Función de Probabilidad de Masa de Poisson",
     xlab = "Número de huracanes",
     ylab = "Probabilidad")

Código
# Gráfico de CDF
plot(num_huracanes, cdf, type = "s", lwd = 2, col = "blue",
     main = "Función de Distribución Acumulada de Poisson",
     xlab = "Número de huracanes",
     ylab = "Probabilidad acumulada")

Código
library(ggplot2)

# Promedio de huracanes por año
lambda <- 6

# Números de huracanes
num_huracanes <- 0:20

# Función de probabilidad de masa (PMF)
pmf <- round(dpois(num_huracanes, lambda), 4)

# Función de distribución acumulada (CDF)
cdf <- round(ppois(num_huracanes, lambda), 4)

# Crear dataframe para ggplot2
df <- data.frame(num_huracanes, pmf, cdf)

# Gráfico de PMF
ggplot(df, aes(x = as.factor(num_huracanes), y = pmf)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "blue",  width = 0.1) +
  labs(title = "Función de Probabilidad de Masa de Poisson",
       x = "Número de huracanes",
       y = "Probabilidad") +
  theme_minimal()

Código
# Gráfico de CDF
ggplot(df, aes(x = num_huracanes, y = cdf)) +
  geom_step(col = "blue", lwd = 2) +
  labs(title = "Función de Distribución Acumulada de Poisson",
       x = "Número de huracanes",
       y = "Probabilidad acumulada") +
  theme_minimal()

Distribución Geométrica

Considere una serie de ensayos de Bernoulli con probabilidad de éxito (P) constante, el número de ensayos no es fijo. Estos ensayos se realizan hasta obtener el primer éxito.

f(x)=(1-p)^{x-1}p x=1,2,3.... f(x=k)=f(x\leq k) m=E[X]=\frac{1}{p} v[x]=\sigma ^{2}=\frac{(1-p)}{p^{2}} \sigma =\sqrt[]{v[X]}

Ejemplo

Suponga que cada una de las llamadas que hace una persona a una estación de radio tiene una probabilidad del 2% de que la línea no esté ocupada. Las llamadas son independientes.

a) ¿Cuál es la probabilidad de que la primera llamada que entre sea de la décima persona que la realizó? b) ¿Cuál es la probablidad de que sea necesario llamar más de 5 veces para hallar desocupada la línea? c) ¿Cuál es el número promedio de llamadas que debe hacerse para hallar desocupada la línea?

x\sim g(p) p=0.02 (1-p)=0.98

Respuesta Inciso A

f(x=10)=(0.98)^{10-1}*(0.02)=0.0167=1,67% %

Respuesta Inciso B

f(x>5)=1-f(x\leq 5))=1-F(5)=1-0.0961=0.9039=90.39 %

Respuesta Inciso C

M=E[X]\frac{1}{p}=\frac{1}{0.02}=50 llamadas en promedio

Funciones de distribución geométrica

Los argumentos de estas funciones son:

x: vector de cuantiles que representa el número de fallos antes del primer éxito. prob: Probabiidad de éxito en cada ensayo.

p: vector de probabilidades.

n: número de valores aleatorios por devolver. log,log.p: parámetro booleano. Si es TRUE, las probabilidades p son devueltas como log(p). lower.tail: parámetro booleano, por defecto es TRUE. Las probabilidades son P(X < x), de lo contrario P(X > x).

Parámetros

a) \mu =\frac{1}{p}

b) V(X)=\frac{(1-p)}{p^{2}}

Ejemplo

Un experto tirador acierta en el blanco el 95 % de veces. ¿Cuál es la probabilidad de que falle por primera vez en su decimoquinto disparo?

P(X=15)=0.05(1-0.05)^{14}=0.05(.95)^{14}=0.0244=2.44

Código
x<-14
p<-0.05
pgeomt<-dgeom(x,p)
paste0("La probabilidad de que falle en la ",x+1,"° vez es ", 
       format(100*pgeomt, digits = 3), "%.")
[1] "La probabilidad de que falle en la 15° vez es 2.44%."
Ejercicio 10

Si el número de aspirantes a estudiantes a la UT en 2024-B es de 328.000 alumnos, de los cuales únicamente 88.000 son admitidos. Calcula

a) ¿Cuál es la probabilidad de ser admitido? b) ¿ Cuál es la probabilidad de que la ficha número 500 haya sido el primer admitido?

x= Intentos =500 p= Probabilidad éxito =26.82 q= fracaso =(1-p)

Respuesta Inciso A

P=\frac{\boldsymbol{Casos favorables}}{\boldsymbol{Numero de casos}}=\frac{88.000}{328.000}=0.268=26.82 %

La probabilidad de ser admitido es de un 26,82%

Código
library(ggplot2)

p_admitido <- 88000 / 328000

data_a <- data.frame(
  Admitido = c("Admitido", "No admitido"),
  Probabilidad = c(p_admitido, 1 - p_admitido)
)

ggplot(data_a, aes(x = Admitido, y = Probabilidad, fill = Admitido)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Probabilidad de ser admitido",
       x = "",
       y = "Probabilidad") +
  theme_minimal()

Respuesta Inciso B

p(x=x)=(1-p)^{x-1}p

p(x=500)=(1-0,268)^{500-1}(0,2682)

p(x=500)=(0,7318)^{499}(0,2682)

p(x=500)=2,1468x10^{-68}(0,2682)

p\approx 5.407^{-69}(100)

La probabilidad es de 5,407 %

Código
library(ggplot2)

p_ficha_500 <- 5.407 / 100  # Convertimos el porcentaje a decimal

data_b <- data.frame(
  Ficha = c("Ficha 500", "Otras fichas"),
  Probabilidad = c(p_ficha_500, 1 - p_ficha_500)
)

ggplot(data_b, aes(x = Ficha, y = Probabilidad, fill = Ficha)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Probabilidad de que la ficha número 500 sea la primera admitida",
       x = "",
       y = "Probabilidad") +
  theme_minimal()

Gráficas
Código
# Inciso A
# Definir los parámetros
num_admitidos <- 88000
total_alumnos <- 328000

# Calcular la probabilidad de ser admitido
prob_admitido <- num_admitidos / total_alumnos

# Imprimir la probabilidad
cat("La probabilidad de ser admitido es del", round(prob_admitido * 100, 2), "%.\n")
La probabilidad de ser admitido es del 26.83 %.
Código
library(ggplot2)

prob_admitido <- 88000 / 328000

data_cdf <- data.frame(
  Admitido = c("Admitido", "No admitido"),
  Probabilidad = c(prob_admitido, 1)
)

ggplot(data_cdf, aes(x = Admitido, y = Probabilidad, fill = Admitido)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Función de Distribución Acumulada",
       x = "Admitido",
       y = "Probabilidad acumulada") +
  theme_minimal()

Código
library(ggplot2)

prob_admitido <- 88000 / 328000

data_prob <- data.frame(
  Admitido = c("Admitido", "No admitido"),
  Probabilidad = c(prob_admitido, 1 - prob_admitido)
)

ggplot(data_prob, aes(x = Admitido, y = Probabilidad, fill = Admitido)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Función de Probabilidad",
       x = "Admitido",
       y = "Probabilidad") +
  theme_minimal()

Ejercicio 11

Si 0.05 es la probabilidad de que cierto instrumento de medición sufra una desviación excesiva.¿Cuál es la probabilidad de que el sexto de los instrumentos probados sea el primero en molestar esa desviación? Calcula la esperanza y varianza en este caso.

x=6 p=0.05

p(x=x)=(1-p)^{x-1}p

p(x=6)=(1-0.05)^{6-1}(0.05)

p(x=6)=(0.95)^{5}(0.05)

p(x=6)=(0.7737)(0.05)

p(x=6)=0.03869

La probabilidad es de 3.86%

Esperanza

E(X)=\frac{1}{p}=\frac{1}{0.05}=20

Varianza

Var(x)=\frac{1-p}{p^{2}}=\frac{1-0.05}{(0.05)^{2}}=\frac{0.95}{0.0025}=380

Gráficas
Código
# Definir la función de probabilidad de la distribución geométrica
prob_geom <- function(x, p) {
  return ((1 - p)^(x - 1) * p)
}

# Parámetros
p <- 0.05

# Secuencia de valores para x
x_values <- 1:10

# Calcular las probabilidades para cada valor de x
prob_values <- sapply(x_values, prob_geom, p)

# Crear la gráfica de barras
barplot(prob_values, 
        names.arg = x_values,
        col = "skyblue",
        xlab = "Número de instrumentos probados",
        ylab = "Probabilidad",
        main = "Función de Distribución")

Código
#library(ggplot2)

# Definir la función de probabilidad de la distribución geométrica
prob_geom <- function(x, p) {
  return ((1 - p)^(x - 1) * p)
}

# Parámetros
p <- 0.05

# Secuencia de valores para x
x_values <- 1:10

# Calcular las probabilidades para cada valor de x
prob_values <- sapply(x_values, prob_geom, p)

# Crear el data frame con los valores de la distribución
data_prob <- data.frame(
  x = x_values,
  probabilidad = prob_values
)

# Graficar la función de probabilidad con ggplot2
ggplot(data_prob, aes(x = factor(x), y = probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(title = "Función de Probabilidad Geométrica",
       x = "Número de instrumentos probados",
       y = "Probabilidad") +
  theme_minimal()

Código
library(ggplot2)

# Definir parámetros de la distribución geométrica
p <- 0.2
x_values <- 0:10  # Valores de x para graficar

# Calcular la probabilidad de la distribución geométrica
probabilidades <- dgeom(x_values, prob = p)

# Crear el data frame con los valores de la distribución
data_prob <- data.frame(
  x = x_values,
  probabilidad = probabilidades
)

# Graficar la función de probabilidad
ggplot(data_prob, aes(x = x, y = probabilidad)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(title = "Función de Probabilidad Geométrica",
       x = "Número de intentos hasta el primer éxito",
       y = "Probabilidad") +
  theme_minimal()

Ejercicio 12

Harry Potter está saltando de un escalón a otro. La probabilidad de que se caiga al saltar es del 25%. ¿Cuál es la probabilidad de que la primera vez que se cae sea después de haber saltado 5 veces? Calcula la esperanza y varianza en este caso.

x=5 p=0.25

p(x=5)=(1-0.25)^{5-1}(0.25)

p(x=5)=(0.75)^{4}(0.250)

p(x=5)=(0.316)(0.25)

p(x=5)=0.079101

La probabilidad es de 7.91%

Esperanza

E(x)=\frac{1}{p}=\frac{1}{0.25}=4

Varianza

Var(x)=\frac{1-p}{p^{2}}=\frac{1-0.25}{(0.25)^{2}}=\frac{0.75}{0.0625}=12

Gráficas
Código
# Definir la función de probabilidad
prob_caer <- 0.25

# Calcular la probabilidad para x = 5
prob_x <- (1 - prob_caer)^(5 - 1) * prob_caer

# Crear el vector de probabilidades
prob_vector <- c(prob_x, 1 - prob_x)

# Nombres para las categorías
categorias <- c("Primera caída después del salto 5", "Otras posibilidades")

# Crear el gráfico de barras con R base
barplot(prob_vector, 
        names.arg = categorias,
        col = c("lightgreen", "lightcoral"),
        main = "Función de Probabilidad",
        ylab = "Probabilidad",
        ylim = c(0, 1))

Código
library(ggplot2)

# Definir la función de probabilidad
prob_caer <- 0.25

# Calcular la probabilidad para x = 5
prob_x <- (1 - prob_caer)^(5 - 1) * prob_caer

# Data frame para la función de probabilidad
data_prob <- data.frame(
  Saltos = c("Primera caída después del salto 5", "Otras posibilidades"),
  Probabilidad = c(prob_x, 1 - prob_x)
)

# Gráfico de barras para la función de probabilidad
ggplot(data_prob, aes(x = Saltos, y = Probabilidad, fill = Saltos)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Función de Probabilidad",
       x = "",
       y = "Probabilidad") +
  theme_minimal()

Código
# Data frame para la función de distribución acumulada
data_cdf <- data.frame(
  Saltos = c("Primera caída después del salto 5", "Otras posibilidades"),
  Probabilidad = c(prob_x, 1)
)

# Gráfico de barras para la función de distribución acumulada
ggplot(data_cdf, aes(x = Saltos, y = Probabilidad, fill = Saltos)) +
  geom_bar(stat = "identity", width = 0.5) +
  scale_fill_manual(values = c("lightgreen", "lightcoral")) +
  labs(title = "Función de Distribución Acumulada",
       x = "",
       y = "Probabilidad acumulada") +
  theme_minimal()

Binomial Negativa

La distribución binomial negativa es una distribución discreta, que simula el número de ensayos necesarios para producir un número específico de eventos. Cada prueba tiene dos posibles resultados. La distribución binomial negativa también puede modelar el número de no eventos que deben ocurrir para observar un número específico de resultados. Para representar que una variable aleatoria X sigue una distribución binomial negativa, se usa: X∼BN(k,p)

Donde X es el número de ensayos independientes hasta obtener el 𝒌-ésimo éxito y p , la probabilidad de éxito en los ensayos.

P(X = x) = {x-1 \choose k-1}p^k(1-p)^{x-k}. 0 < p <1

Parámetros

\mu=\frac{k(1-p)}{p} si se piensa en el número de fracasos.

\mu=\frac{k}{p} si se cuenta también los k-1 éxitos.

V(X)=\frac{k(1-p)}{p^2}

En R tenemos las siguientes funciones para la distribución binomiales negativas:

Funciones distribución binomial negativa

Donde: - X = es el número de pruebas falladas.

  • size = es el número de ensayos.

  • prob = es la probabilidad, debe estar entre 0 y 1.

  • mu = es la parametrización alternativa por la media.

  • q = vector de cuantiles.

  • p = vector de probabilidades.

  • log, log.p = parámetro booleano. Si es TRUE, las probabilidades p son devueltas como log(p).

  • lower.tail = parámetro booleano. Por defecto es TRUE. Las probabilidades son P(X<x)𝑃(𝑋<𝑥) de lo contrario P(X>x)𝑃(𝑋>𝑥).

Ejemplo

Una refrigeradora tiene una probabilidad de 0.95 % de pasar un control de calidad. Se asume que los resultados del control de calidad de diferentes refrigeradoras son independientes. Calcular la probabilidad de que sea necesario revisar 20 refrigeradoras para que 15 pasen el control de calidad.

X: número de refrigeradoras hasta que 15 pasen el control de calidad. Los datos que se tienen son x=20𝑥=20, k=15𝑘=15, p=0.95𝑝=0.95.

P(X=20)={20-1 \choose 15-1}(0.95)^{15}(1-0.95)^{20-15} \\ P(X=20)={19 \choose 14}(0.95)^{15}(1-0.95)^{5} \\ P(X=20)=\frac{19!}{14!5!}(0.95)^{15}(1-0.95)^5 \\ P(X=20)=0.001683=0.1683%

Código
x<-20
k<-15
p<-0.95
pbn<-dnbinom(x-k,size = k, prob = p)
paste0("La probabilidad de que sea necesario es ",format(100*pbn,digits = 3),"%.")
[1] "La probabilidad de que sea necesario es 0.168%."
Ejercicio 13

La probabilidad de que un futbolista profesional haga gol de tiro libre es del 70%. En un entrenamiento este futbolista hace 14 tiros libres.

a) ¿Cuál es la probabilidad de que el 5 tiro que lanza, sea su tercer gol?

E[X]=M=\frac{r}{p}=\frac{3}{0.7}=4,2857

V[X]=\sigma ^{2}=\frac{r(1-p)}{p^{2}}=\frac{(3)(0.3)}{(0.7)^{2}}=1.8367

\sigma =\sqrt{v[x]}=\sqrt{1.8367}=1.3553

Respuesta Inciso A

P=0.7 K=r=3

X\sim Bin*(p,r)

f(x=5)=\binom{5-1}{3-1}(0.7)^{2}(0.3)^{5-3}=0.1852=18,52 %

Código
# Cargar la librería necesaria (si aún no está cargada)
library(VGAM)

# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer gol)
p <- 0.7  # Probabilidad de éxito en cada tiro libre
x <- 5  # Número total de tiros libres

# Calcular la probabilidad utilizando la distribución binomial negativa
prob <- dnbinom(x - k, k, p)
prob
[1] 0.18522
Código
cat("La probabilidad de que el quinto entrevistado sea el tercer chef de origen Peruano es de", round(prob * 100, 1), "%.\n")
La probabilidad de que el quinto entrevistado sea el tercer chef de origen Peruano es de 18.5 %.
Código
# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer gol)
p <- 0.7  # Probabilidad de éxito en cada tiro libre
x <- 1:20  # Número total de tiros libres (valores de x para graficar)

# Calcular la PMF utilizando la distribución binomial negativa
pmf <- dnbinom(x - k, k, p)

# Calcular la CDF utilizando la distribución binomial negativa
cdf <- pnbinom(x - k, k, p)

# Graficar la PMF
plot(x, pmf, type = "h", xlab = "Número de tiros libres", ylab = "Probabilidad", main = "Función de Masa de Probabilidad (PMF)", col = "skyblue")

Código
# Graficar la CDF
plot(x, cdf, type = "l", xlab = "Número de tiros libres", ylab = "Probabilidad acumulada", main = "Función de Distribución Acumulada (CDF)", col = "red")

Código
# Cargar las librerías necesarias
library(ggplot2)
library(VGAM)

# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer gol)
p <- 0.7  # Probabilidad de éxito en cada tiro libre
x <- 1:20  # Número total de tiros libres (valores de x para graficar)

# Calcular la PMF utilizando la distribución binomial negativa
pmf <- dnbinom(x - k, k, p)

# Calcular la CDF utilizando la distribución binomial negativa
cdf <- pnbinom(x - k, k, p)

# Crear un data frame con los valores de la PMF
data_pmf <- data.frame(
  Tiros = x,
  PMF = pmf
)

# Crear un data frame con los valores de la CDF
data_cdf <- data.frame(
  Tiros = x,
  CDF = cdf
)

# Graficar la PMF
ggplot(data_pmf, aes(x = as.factor(Tiros), y = PMF)) +
  geom_bar(stat = "identity", fill = "skyblue", alpha = 0.7, width = 0.5) +
  labs(title = "Función de Masa de Probabilidad (PMF)",
       x = "Número de tiros libres",
       y = "Probabilidad") +
  theme_minimal()

Código
# Graficar la CDF
ggplot(data_cdf, aes(x = as.factor(Tiros), y = CDF)) +
  geom_line(color = "red") +
  geom_point(color = "red") +
  labs(title = "Función de Distribución Acumulada (CDF)",
       x = "Número de tiros libres",
       y = "Probabilidad acumulada") +
  theme_minimal()

Ejercicio 14

Una agencia de renta de coches en un aeropuerto ene disponible 5 Ford, 7 Chevrolet, 4 Dodge, 2 Honda y 4 Toyota. Calcule la probabilidad de:

a) El sexto auto elegido al azar sea el tercero de Ford

b) El segundo auto elegido sea el quinto de Chevrolet

Respuesta Inciso A

p=\frac{5}{22} q=\frac{17}{22} x=6 k=3

P(x=6)=\binom{6-1}{3-1}p^{3}q^{6-3}

P(x=6)=\binom{5}{2}(\frac{5}{22})^{3}

P(x=6)=10(\frac{125}{10648})(\frac{4913}{10648})

P(x=6)=0.0541\approx 5.4%

La probabilidad de que el sexto auto sea el tercero de Ford es del 5.4%.

Código
# Definir los parámetros
p <- 5/22  # Probabilidad de que el auto sea un Ford
q <- 1 - p  # Probabilidad de que el auto no sea un Ford
x <- 6  # Número total de autos elegidos
k <- 3  # Número de autos de Ford que deseamos en la posición sexta

# Calcular la probabilidad utilizando la distribución binomial
prob_a <- choose(x - 1, k - 1) * p^k * q^(x - k)

# Imprimir la probabilidad
cat("La probabilidad de que el sexto auto elegido sea el tercero de Ford es del", round(prob_a * 100, 1), "%.\n")
La probabilidad de que el sexto auto elegido sea el tercero de Ford es del 5.4 %.
Código
# Definir los parámetros
p <- 5/22  # Probabilidad de que el auto sea un Ford
x_values <- 1:20  # Valores de x para graficar

# Calcular la PMF utilizando la distribución binomial
pmf_values <- dbinom(x_values - 1, size = 6 - 1, prob = p)

# Calcular la CDF utilizando la distribución binomial
cdf_values <- pbinom(x_values - 1, size = 6 - 1, prob = p)

# Graficar la PMF
plot(x_values, pmf_values, type = "h", main = "Función de Masa de Probabilidad (PMF)",
     xlab = "Número de autos", ylab = "Probabilidad", col = "blue", lwd = 2)

Código
# Graficar la CDF
plot(x_values, cdf_values, type = "s", main = "Función de Distribución Acumulada (CDF)",
     xlab = "Número de autos", ylab = "Probabilidad acumulada", col = "red", lwd = 2)

Código
library(ggplot2)

# Definir los parámetros
p <- 5/22  # Probabilidad de que el auto sea un Ford
x_values <- 1:20  # Valores de x para graficar

# Calcular la PMF utilizando la distribución binomial
pmf_values <- dbinom(x_values - 1, size = 6 - 1, prob = p)

# Calcular la CDF utilizando la distribución binomial
cdf_values <- pbinom(x_values - 1, size = 6 - 1, prob = p)

# Crear el data frame para la PMF
data_pmf <- data.frame(
  x = x_values,
  pmf = pmf_values
)

# Crear el data frame para la CDF
data_cdf <- data.frame(
  x = x_values,
  cdf = cdf_values
)

# Graficar la PMF
ggplot(data_pmf, aes(x = x, y = pmf)) +
  geom_bar(stat = "identity", fill = "skyblue", width = 0.5) +
  labs(title = "Función de Masa de Probabilidad (PMF)",
       x = "Número de autos",
       y = "Probabilidad") +
  theme_minimal()

Código
# Graficar la CDF
ggplot(data_cdf, aes(x = x, y = cdf)) +
  geom_line(color = "red") +
  geom_point(color = "red") +
  labs(title = "Función de Distribución Acumulada (CDF)",
       x = "Número de autos",
       y = "Probabilidad acumulada") +
  theme_minimal()

Respuesta Inciso B

p=\frac{7}{22} q=\frac{15}{22} x=5 k=2

P(x=5)=\binom{5-1}{2-1}p^{2}q^{5-2}

P(x=5)=\binom{4}{1}(\frac{7}{22})^{2}

P(x=5)=4(\frac{49}{484})(\frac{3375}{10648})

P(x=5)=0.128\approx 12.8%

La probabilidad de que el segun auto elegido sea el quinto de Chevrolet es de 12.8%

Código
# Definir los parámetros
p_chevrolet <- 7 / 22  # Probabilidad de que el auto sea un Chevrolet
x <- 5  # Número total de autos elegidos
k <- 2  # Número de Chevrolet que deseamos en la posición segunda

# Calcular la probabilidad utilizando la distribución binomial negativa
prob_b <- choose(x - 1, k - 1) * p_chevrolet^k * (1 - p_chevrolet)^(x - k)

# Imprimir la probabilidad
cat("La probabilidad de que el segundo auto elegido sea el quinto de Chevrolet es del", round(prob_b * 100, 1), "%.\n")
La probabilidad de que el segundo auto elegido sea el quinto de Chevrolet es del 12.8 %.
Código
# Definir los parámetros
p_chevrolet <- 7 / 22  # Probabilidad de que el auto sea un Chevrolet
x_values <- 1:20  # Valores de x para graficar

# Calcular la PMF utilizando la distribución binomial negativa
pmf_values_b <- dbinom(x_values - 1, size = 5 - 1, prob = p_chevrolet)

# Calcular la CDF utilizando la distribución binomial negativa
cdf_values_b <- pbinom(x_values - 1, size = 5 - 1, prob = p_chevrolet)

# Graficar la PMF
plot(x_values, pmf_values_b, type = "h", main = "Función de Masa de Probabilidad (PMF)",
     xlab = "Número de autos", ylab = "Probabilidad", col = "blue", lwd = 2)

Código
# Graficar la CDF
plot(x_values, cdf_values_b, type = "s", main = "Función de Distribución Acumulada (CDF)",
     xlab = "Número de autos", ylab = "Probabilidad acumulada", col = "red", lwd = 2)

Código
library(ggplot2)

# Definir los parámetros
p_chevrolet <- 7 / 22  # Probabilidad de que el auto sea un Chevrolet
x_values <- 1:20  # Valores de x para graficar

# Calcular la PMF utilizando la distribución binomial negativa
pmf_values_b <- dbinom(x_values - 1, size = 5 - 1, prob = p_chevrolet)

# Calcular la CDF utilizando la distribución binomial negativa
cdf_values_b <- pbinom(x_values - 1, size = 5 - 1, prob = p_chevrolet)

# Crear el data frame para la PMF
data_pmf_b <- data.frame(
  x = x_values,
  pmf = pmf_values_b
)

# Crear el data frame para la CDF
data_cdf_b <- data.frame(
  x = x_values,
  cdf = cdf_values_b
)

# Graficar la PMF con ggplot2
ggplot(data_pmf_b, aes(x = x, y = pmf)) +
  geom_bar(stat = "identity", fill = "skyblue", width = 0.5) +
  labs(title = "Función de Masa de Probabilidad (PMF)",
       x = "Número de autos",
       y = "Probabilidad") +
  theme_minimal()

Código
# Graficar la CDF con ggplot2
ggplot(data_cdf_b, aes(x = x, y = cdf)) +
  geom_line(color = "red") +
  geom_point(color = "red") +
  labs(title = "Función de Distribución Acumulada (CDF)",
       x = "Número de autos",
       y = "Probabilidad acumulada") +
  theme_minimal()

Ejercicio 15

En una cocina hay 10 chef, de los cuales 3 son de EEUU y 7 de Perú, se entrevista al azar a cada chef. Calcule la probabilidad de que el quinto entrevistado sea el tercero de origen Peruano.

p=\frac{7}{10} q=\frac{3}{10} x=5 k=3

P(x=5)=\binom{5-1}{3-1}p^{3}q^{5-3}

P(x=5)=\binom{4}{2}(\frac{7}{10})^{3}

P(x=5)=6(\frac{343}{1000})(\frac{9}{100})

P(x=5)0.1852\approx 18.5%

La probabilidad de que el quinto entrevistado sea el tercer chef de origen Peruano es de 18.5%

Código
# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer chef peruano)
p <- 7/10  # Probabilidad de éxito en cada entrevista (chef peruano)
x <- 5  # Número total de entrevistados

# Calcular la probabilidad utilizando la distribución binomial negativa
prob <- dnbinom(x - k, k, p)
prob
[1] 0.18522
Código
cat("La probabilidad de que el quinto entrevistado sea el tercer chef de origen Peruano es del", round(prob * 100, 1), "%.\n")
La probabilidad de que el quinto entrevistado sea el tercer chef de origen Peruano es del 18.5 %.
Código
# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer chef peruano)
p <- 7/10  # Probabilidad de éxito en cada entrevista (chef peruano)
x <- 1:20  # Número total de entrevistados (valores de x para graficar)

# Calcular la PMF utilizando la distribución binomial negativa
pmf <- dnbinom(x - k, k, p)

# Calcular la CDF utilizando la distribución binomial negativa
cdf <- pnbinom(x - k, k, p)

# Graficar la PMF
barplot(pmf, names.arg = x, xlab = "Número de entrevistados", ylab = "Probabilidad", col = "skyblue", main = "PMF de la distribución binomial negativa")

Código
# Graficar la CDF
plot(x, cdf, type = "o", col = "red", xlab = "Número de entrevistados", ylab = "Probabilidad acumulada", main = "CDF de la distribución binomial negativa")

Código
# Cargar la librería ggplot2
library(ggplot2)

# Definir los parámetros
k <- 3  # Número de éxitos requeridos (tercer chef peruano)
p <- 7/10  # Probabilidad de éxito en cada entrevista (chef peruano)
x <- 1:20  # Número total de entrevistados (valores de x para graficar)

# Calcular la PMF utilizando la distribución binomial negativa
pmf <- dnbinom(x - k, k, p)

# Calcular la CDF utilizando la distribución binomial negativa
cdf <- pnbinom(x - k, k, p)

# Data frame para la PMF
data_pmf <- data.frame(x = x, pmf = pmf)

# Data frame para la CDF
data_cdf <- data.frame(x = x, cdf = cdf)

# Graficar la PMF
ggplot(data_pmf, aes(x = x, y = pmf)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(x = "Número de entrevistados", y = "Probabilidad", title = "PMF de la distribución binomial negativa") +
  theme_minimal()

Código
# Graficar la CDF
ggplot(data_cdf, aes(x = x, y = cdf)) +
  geom_line(color = "red") +
  geom_point(color = "red") +
  labs(x = "Número de entrevistados", y = "Probabilidad acumulada", title = "CDF de la distribución binomial negativa") +
  theme_minimal()