Encontrar probabilidades de acuerdo a la distribución binomial.
Identificar ejercicios casos de la literatura de distribuciones de probabilidad binomial y realizar cálculos de probabilidades, determinar el valor esperado y calcualr la varianza y la desviación.
Los ejercicios que se presenta utilizan funciones relacionadas con la distribución binomial dbinom() pbinom(), rbinom() en algunos ejercicios del caso se utiliza la función f.prob.binom() previamente codificada y que encapsula la fórmula para determinar probabilidad binomiales.
library(dplyr)
library(ggplot2)
library(mosaic) # Gráficos de distribuciones
options(scipen=999) # Notación normal
# options(scipen=1) # Notación científica
Se carga función de servicio github o de manera local
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/funciones/funciones.distribuciones.r")
##
## Attaching package: 'gtools'
## The following object is masked from 'package:mosaic':
##
## logit
Se determina una semilla porque algunos ejercicios calculan valores aleatorios
set.seed(2021)
Tienda de ropa MartinClothingStore (Anderson, Sweeney, and Williams 2008)
De acuerdo con la experiencia, el gerente de la tienda estima que la probabilidad de que un cliente realice una compra es 0.30.
Identificar las probabilidad para cuando se compre 0,1,2,3, determinar la tabla de probabilidad incluyendo probabilidad acumulada
Encontrar la probabilidad de que compren dos clientes
Encontrar la probabilidad de que compren los tres próximos clientes.
Encontrar la probabilidad de que sean menor o igual que dos.
Calcular la probabilidad de que sean mayor que dos
Determinar el valor esperado y su significado
Determinar la varianza y la desviación estándar y si significado
Interpretar
Identificar las probabilidad para cuando se compre 0,1,2,3, determinar la tabla de probabilidad incluyendo probabilidad cumulada
x <- c(0,1,2,3)
n <- 3
exito <- 0.30
tabla1 <- data.frame(x=x, f.prob.x = f.prob.binom(x,n,exito), f.acum.x = cumsum(f.prob.binom(x,n,exito)))
tabla1
## x f.prob.x f.acum.x
## 1 0 0.343 0.343
## 2 1 0.441 0.784
## 3 2 0.189 0.973
## 4 3 0.027 1.000
Determinar tabla de probabilidad usando función propia de los paquetes base de R dbinom()
tabla2 <- data.frame(x=x, f.prob.x = dbinom(x = x, size = n, prob = exito), f.acum.x = cumsum(dbinom(x = x, size = n, prob = exito)))
tabla2
## x f.prob.x f.acum.x
## 1 0 0.343 0.343
## 2 1 0.441 0.784
## 3 2 0.189 0.973
## 4 3 0.027 1.000con pbinom() en lugar de cumsum()
tabla3 <- data.frame(x=x, f.prob.x = dbinom(x = x, size = n, prob = exito), f.acum.x = pbinom(q = x, size = n, prob = exito))
tabla3
## x f.prob.x f.acum.x
## 1 0 0.343 0.343
## 2 1 0.441 0.784
## 3 2 0.189 0.973
## 4 3 0.027 1.000
plotDist(dist = "binom", size=3, prob=0.30,xlab = paste("Variables ",min(tabla1$x),"-",max(tabla1$x) ))
plotDist(dist = "binom", size=3, prob=0.30,xlab = paste("Variables ",min(tabla1$x),"-",max(tabla1$x) ), kind = "histogram")
Encontrar la probabilidad de que compren dos clientes
Identificar la probabilidad cuando \(P(x=2)\) de la tabla.
Se puede usar tabla1, tabla2 o tabla3 es la misma.
valor.x <- 2
la.probabilidad <- filter(tabla1, x == valor.x)
la.probabilidad
## x f.prob.x f.acum.x
## 1 2 0.189 0.973
paste("La probabilidad cuando x es ", valor.x, " es igual a : ", la.probabilidad$f.prob.x )
## [1] "La probabilidad cuando x es 2 es igual a : 0.189"
Usando dbinom()
dbinom(x = 2, size = 3, prob = exito)
## [1] 0.189
Encontrar la probabilidad de que compren los tres próximos clientes
Identificar la probabilidad cuando \(P(x=3)\) de la tabla.
Se puede usar tabla1, tabla2 o tabla3 es la misma.
valor.x <- 3
la.probabilidad <- filter(tabla1, x == valor.x)
la.probabilidad
## x f.prob.x f.acum.x
## 1 3 0.027 1
paste("La probabilidad cuando x es ", valor.x, " es igual a : ", la.probabilidad$f.prob.x )
## [1] "La probabilidad cuando x es 3 es igual a : 0.027"
Usando dbinom()
dbinom(x = 3, size = 3, prob = exito)
## [1] 0.027
Encontrar la probabilidad de que sean menor o igual que dos
Ahora usar la función acumulada por la pregunta
\(P(x=0)+P(x=1)+P(x=2)\)
valor.x <- 2
la.probabilidad <- filter(tabla1, x == valor.x)
la.probabilidad
## x f.prob.x f.acum.x
## 1 2 0.189 0.973
paste("La probabilidad de que sea menor o igual a ", valor.x, " es igual a : ", la.probabilidad$f.acum.x )
## [1] "La probabilidad de que sea menor o igual a 2 es igual a : 0.973"
Usando pbinom()
pbinom(q = 2, size = 3, prob = exito)
## [1] 0.973
La expresión lower.tail = FALSE como atributo de la función pbinom() significa encontrar en la tabla de distribución la sumatoria de las probabilidades a partir de el valor de \(x\), o lo que es lo mismo, \(1-prob.acum(x),1-0.97=0.27\)
pbinom(q = 2, size = 3, prob = exito, lower.tail = FALSE)
## [1] 0.027
Determinar el valor esperado y su significado
El valor esperado de la distribución binomial
\[ \mu = n \cdot p \]
Siendo \(p\) el éxito de la probabilidad y \(n\) el número de experimentos
VE <- n * exito
paste ("El valor esperado es: ", VE)
## [1] "El valor esperado es: 0.9"
El valor esperado \(VE\) significa el valor medio o el valor promedio de todos valores de la distribución de probabilidad.
Determinar la varianza y la desviación estándar y su significado.
La varianza en la distribución binomial
\[ \sigma^{2} = n \cdot p \cdot(1-p) \]
varianza <- n * exito *( 1 - exito)
paste ("La varianza es: ", round(varianza,2))
## [1] "La varianza es: 0.63"
La desviación
\[ \sigma = \sqrt{\sigma^{2}} \]
desviacion.std <- sqrt(varianza)
paste("La desviación std es: ", round(desviacion.std, 2))
## [1] "La desviación std es: 0.79"
En el presente ejercicio, ejercicio número uno, se nos presenta el caso de una tienda de ropa, se nos plantean diferentes preguntas, las cuales estamos encargados a resolver. Básicamente es calcular las diferentes probabilidades de que cierta cantidad de clientes compre en la tienda. Por ejemplo, resolvimos la probabilidad de que compren entre 1 a 3 personas con diferentes métodos en R, como ya antes se había mencionado, se puede resolver por medio de varias metodologías y todas siempre te llevarán al mismo resultado correcto, eso ya dependiendo del gusto de cada quien. Generamos un data frame con los resultados de 0,1,2,3 compras: la probabilidad de que comprasen 0 veces fue del 0.343 o 33%, la probabilidad de que compraran 1 sola vez fue de 44%, la probabilidad de que fueran 2 veces fue del 18% y, por último, la probabilidad de 3 fue de 2%. Y así se fue resolviendo lo demás del respectivo caso, apoyandonos en las gráficas y demás herramientas que R nos proporciona. También se nos pide el valor esperado, la varianza y la desviación estándar. El valor esperado significa el promedio de la distribución de la probabilidad, y en este caso el valor esperado fue de 0.9. La varianza fue de 0.63 y la desvión de 0.79.
Un jugador encesta con probabilidad 0.55. (“La Distribución Binomial o de Bernoulli,” n.d.):
Determinar las probabilidad de los tiros del 1 al 6 con la tabla de probabilidad
Determinar la probabilidad de encestar cuatro tiros \(P(x=4)\)
Determinar la probabilidad de encestar todos tiros o sea seis \(P(x=6)\)
Determinar la probabilidad de encestar al menos tres \(P(x \leq 3)\) o \(P.acum(x=3)\)
Determinar el valor esperado VE
Determinar la varianza y su desviación estándard
Interpretar el ejercicio
Se construye la tabla de probabilidades tal y como se construye usando el código de tabla3
Se inicializan valores:
x <- 0:6
n <- 6
exito <- 0.55
tabla <- data.frame(x=x, f.prob.x = dbinom(x = x, size = n, prob = exito), f.acum.x = pbinom(q = x, size = n, prob = exito))
tabla
## x f.prob.x f.acum.x
## 1 0 0.008303766 0.008303766
## 2 1 0.060894281 0.069198047
## 3 2 0.186065859 0.255263906
## 4 3 0.303218437 0.558482344
## 5 4 0.277950234 0.836432578
## 6 5 0.135886781 0.972319359
## 7 6 0.027680641 1.000000000
Dos formas de visualizar las probabilidades
plotDist(dist = "binom", size=n, prob=exito,xlab = paste("Variables ",min(tabla$x),"-",max(tabla$x) ))
plot(x = tabla$x, y=tabla$f.prob.x, type = "h", xlab = paste(min(tabla$x), '-', max(tabla$x)), ylab= "f(x)")
Calcular la probabilidad de encestar cuatro tiros \(P(x=4)\)
dbinom(x = 4, size = n, prob = exito)
## [1] 0.2779502
Usando la función pbinom()
pbinom(q = 3, size = n, prob = exito)
## [1] 0.5584823
o utilizando el renglón de la tabla de distribución en la columna de probabilidad acumulada f.acum.x.
valor.x <- 3
la.probabilidad <- filter(tabla, x == valor.x)
la.probabilidad
## x f.prob.x f.acum.x
## 1 3 0.3032184 0.5584823
VE <- n * exito
paste("El valor esperado es: ",VE)
## [1] "El valor esperado es: 3.3"
El valor esperado de 3.3 significa que es lo que se espera encestar en promedio de los n=n= 6 tiros.
Varianza
varianza <- n * exito *( 1 - exito)
paste ("La varianza es: ", round(varianza,2))
## [1] "La varianza es: 1.48"
Desviación
desviacion.std <- sqrt(varianza)
paste("La desviación std es: ", round(desviacion.std, 2))
## [1] "La desviación std es: 1.22"
De el valor esperado 3.3 hay una desviación aproximada de 1.2186058 hacia arriba o hacia abajo.
La probabilidad de que un paciente se recupere de una rara enfermedad sanguínea es \(0.4\) Si se sabe que \(15\) personas contraen tal enfermedad,
Determine tabla de probabilidad de 1 al 15
Visualizar la gráfica de probabilidades
¿Cuál es la probabilidad de que sobrevivan al menos diez,
¿Cuál es la probabilidad de que sobrevivan de tres a ocho?, y
¿Cuál es la probabilidad de que sobrevivan exactamente cinco?
¿Cuál es el valor esperado ‘VE’ o la esperanza media?
¿Cual es la varianza y la desviación estándar?
¿Cómo se comportarían las probabilidades para un experimento de 100 personas?
Interpretación del ejercicio (Walpole, Myers, and Myers 2012).
Inicializar valores
x <- 0:15
n <- 15
exito <- 0.40
tabla <- data.frame(x=x, f.prob.x = f.prob.binom(x,n,exito), f.acum.x = cumsum(f.prob.binom(x,n,exito)))
tabla
## x f.prob.x f.acum.x
## 1 0 0.000470184985 0.000470185
## 2 1 0.004701849846 0.005172035
## 3 2 0.021941965947 0.027114001
## 4 3 0.063387901624 0.090501902
## 5 4 0.126775803249 0.217277706
## 6 5 0.185937844765 0.403215550
## 7 6 0.206597605294 0.609813156
## 8 7 0.177083661681 0.786896817
## 9 8 0.118055774454 0.904952592
## 10 9 0.061214105272 0.966166697
## 11 10 0.024485642109 0.990652339
## 12 11 0.007419891548 0.998072231
## 13 12 0.001648864788 0.999721096
## 14 13 0.000253671506 0.999974767
## 15 14 0.000024159191 0.999998926
## 16 15 0.000001073742 1.000000000
La gráfica se presenta con la función plot() que requiere las coordenadas de x & y siendo estás las variables aleatorias discretas y las probabilidades respectivamente.
plot(x = tabla$x, y=tabla$f.prob.x, type = "h", xlab = paste(min(tabla$x), '-', max(tabla$x)), ylab= "f(x)")
Se requiere la suma de las probabilidades en donde \(P(\leq 10)\) o bien \(P(x=0)+P(x=1)+P(x=2)...+P(x=10)\) o mediante la función acumulada de la probabilidad \(F(x=10)\). Como se necesita la probabilidad acumulada entonces se usa pbinom()
x = 10
prob <- pbinom(q = x, size = n, prob = exito)
paste ("La probabilidad de que se enfermen menos que diez es: ", prob, " o el ", round(prob * 100, 2), "%")
## [1] "La probabilidad de que se enfermen menos que diez es: 0.990652339224576 o el 99.07 %"
Se requiere el valor acumulado entre tres y ocho es decir, \(F(x=8)-F(x=2)\), o sumar las probabilidades de tres a ocho \(P(x=3)+P(x=4)+P(x=5)+P(x=6)+P(x=6)+P(x=7)+P(x=8)\) se usa la resta usando la función pbinom()
x1 = 2 #
x2 = 8
prob <- pbinom(q = x2, size = n, prob = exito) - pbinom(q = x1, size = n, prob = exito)
paste ("La probabilidad de que se enfermen de tres a ocho es: ", prob, " o el ", round(prob * 100, 2), "%")
## [1] "La probabilidad de que se enfermen de tres a ocho es: 0.877838591066112 o el 87.78 %"
Se comprueba sumando las probabilidades de tres a ocho
sum(dbinom(x = 3:8, size = n, prob = exito))
## [1] 0.8778386
o sumando los renglones de las probabilidades de tres a ocho de la tabla de probabilidad.
sum(filter(tabla, x %in% 3:8) %>%
select(f.prob.x))
## [1] 0.8778386
Aquí se calcula la probabilidad con la función dbinom() cuando \(P(x=5)\)
x = 10
prob <- dbinom(x = x, size = n, prob = exito)
paste ("La probabilidad de que se enfermen menos que diez es: ", prob, " o el ", round(prob * 100, 2), "%")
## [1] "La probabilidad de que se enfermen menos que diez es: 0.024485642108928 o el 2.45 %"
Se comprueba la probabilidad extrayendo con la función filter() el registro de la tabla de distribución cuando \(x==10\)
filter(tabla, x==10)
## x f.prob.x f.acum.x
## 1 10 0.02448564 0.9906523
Se determina el valor medio o el valor esperado de la tabla de distribución.
VE <- n * exito
paste("El valor esperado es: ",VE)
## [1] "El valor esperado es: 6"
Se espera que se recuperen 6 en promedio
Se calcula la varianza
varianza <- n * exito *( 1 - exito)
paste ("La varianza es: ", round(varianza,2))
## [1] "La varianza es: 3.6"
Se determina la desviación
desviacion.std <- sqrt(varianza)
paste("La desviación std es: ", round(desviacion.std, 2))
## [1] "La desviación std es: 1.9"
Siendo la desviación una medida de variabilidad significa que tanto estarían las probabilidades por encima o por debajo del valor esperado. Siendo la desviación una medida de variabilidad significa que tanto estarían las probabilidades por encima o por debajo del valor esperado.
Con la función de aleatoriedad rbinom() se calculan las probabilidades de una muestra de \(100\), con ello las proporciones o frecuencias relativas siendo los elementos de la función \(n\) la cantidad de experimentos que serían \(100\), size el tamaño del estudio original es decir \(15\) y prob la probabilidad de éxito.
La variable llamada variables contiene los valores aleatorios de la muestra y la frecuencia es la cantidad de ocasiones de cada variable aleatoria.
muestra <- 100
variables <- rbinom(n = muestra, size = n, prob = exito)
variables
## [1] 6 7 7 5 7 7 7 5 8 10 3 8 6 6 8 5 6 8 9 6 4 9 5 5 6
## [26] 9 9 8 9 8 3 9 9 8 6 5 9 5 9 6 4 8 6 9 4 8 8 2 3 8
## [51] 6 7 3 6 5 4 6 5 8 7 2 6 3 5 8 4 3 7 5 3 3 7 4 9 3
## [76] 6 6 5 7 11 6 6 9 7 5 5 10 8 6 5 4 7 9 6 5 8 7 7 7 7
frecuencia = table(variables)
frecuencia
## variables
## 2 3 4 5 6 7 8 9 10 11
## 2 9 7 16 19 16 15 13 2 1
Las probabilidades relativas de la muestra
probs <- prop.table(frecuencia)
probs
## variables
## 2 3 4 5 6 7 8 9 10 11
## 0.02 0.09 0.07 0.16 0.19 0.16 0.15 0.13 0.02 0.01
tablaexp <- data.frame(x=1:length(frecuencia), f.prob.x = as.vector(probs), f.acum.x = cumsum(as.vector(probs)))
tablaexp
## x f.prob.x f.acum.x
## 1 1 0.02 0.02
## 2 2 0.09 0.11
## 3 3 0.07 0.18
## 4 4 0.16 0.34
## 5 5 0.19 0.53
## 6 6 0.16 0.69
## 7 7 0.15 0.84
## 8 8 0.13 0.97
## 9 9 0.02 0.99
## 10 10 0.01 1.00
A partir de la nueva tabla del experimento se compara con la tabla original en dos g´rfias
Con la función par(mfrow=c(1,2)) se puede ver dos gráficas tipo plot() al mismo tiempo en el mismo renglón.
par(mfrow=c(1,2))
plot(x = tabla$x, y=tabla$f.prob.x, type = "h", xlab = "X", ylab= "f(x)", main = "15 pacientes")
plot(x = tablaexp$x, y=tablaexp$f.prob.x, type = "h", xlab = "X", ylab= "f(x)", xlim = c(0,15), ylim = range(0, 0.20), main="Simulando 100 pacientes")
¿Cómo se comportan las probabilidades del estudio con 15 y del experimento o simulación con 100 pacientes?, muy similares las probabilidades.
En el presente caso, caso número 16 retomamos las probabilidades como ya antes habíamos visto. Escogí los primeros tres casos al azar, realmente no hubo algo específico que me hiciera preferirlos. Además de la probabilidad, volvimos a usar términos como el valor esperado, la varianza y la desviación estándar. Podemos darnos cuenta que las fórmulas utilizadas sirven para cualquier caso que se nos plantee, ya sea dentro de una tienda de ropa, hasta calcular cuál es la probabilidad de que las personas se enfermen en un hospital. Como en el caso pasado, mencionamos que hay diferentes caminos por tomar o elegir y cualquiera te llevará al mismo resultado, independientemente del número de pasos o que tan grande es el código en el software. Hicimos uso de las diferentes gráficas que el software nos ofrece para visualizar de mejor manera los datos recabados. Los casos escogidos fueron el de la tienda de ropa, el de las canastas en el basquetbol y el del hospital, todos y cada uno de ellos nos solicitaban encontrar las probabilidades, el valor esperado, la varianza y la desviación estándar, utilizamos muchas de las diferentes funciones cargadas previamente para llegar al resultado, de esa manera, podemos cerciorarnos de que los resultados estén correctos.
Este caso sirvió mucho para retomar y dejar más claro alguno de los términos que ya hemos estado viendo, además de ponerlos en práctica y demostrar que la probabilidad está en cualquier capítulo de la vida diaria.
Anderson, David R., Dennis J. Sweeney, and Thomas A. Williams. 2008. Estadística Para Administración y Economía. 10th ed. Australia • Brasil • Corea • España • Estados Unidos • Japón • México • Reino Unido • Singapur: Cengage Learning,.
Hernández, Freddy. 2021. “Manual de r. Distribuciones Discretas.” https://fhernanb.github.io/Manual-de-R/.
“La Distribución Binomial o de Bernoulli.” n.d. https://www.profesor10demates.com/2014/04/la-distribucion-binomial-o-de-bernoulli_3.html.
Mendenhall, William, Robert J. Beaver, and Barbara M. Beaver. 2006. Introducción a La Probabilidad y Estadística. 13a Edición.
R CODER Binom. n.d. “La Función Dbinom.” https://r-coder.com/distribucion-binomial-r/.
Walpole, Ronald E., Raymond H. Myers, and Sharon L. Myers. 2012. Probabilidad y Estadística Para Ingeniería y Ciencias. Novena Edición. México: Pearson.