1. Instale el paquete “gtools” con la sentencia: install.packages(′gtools′), incluya la librería “gtools” (library(gtools)).
(library(gtools))
## [1] "gtools" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
2. Explique brevemente la diferencia entre permutación y combinación y exprese las ecuaciones para calcular permutaciones y combinaciones.
Respuesta: Permutación y combinación hacen referencia a arreglos o agrupaciones de elementos de un determinado conjunto. Se diferencian en que en la permutación el orden sí es importante, mientras que en la combinación no lo es. Esto repercute en que, dado el mismo conjunto de elementos, el número de permutaciones será mayor al de combinaciones posibles.
\[ Permutación: \begin{equation} P(n,r) = \frac{n!}{(n - r)!} \end{equation} \] \[ Combinación: \begin{equation} C(n,r) = \frac{n!}{r!(n - r)!} \end{equation} \] 3. Busque en la ayuda de R las funciones combinations y permutations y explique brevemente cómo funcionan.
‘combinations’ enumera las posibles combinaciones para los elementos de un arreglo, mientras que ‘permutations’ enumera las permutaciones posibles.
Ambas reciben como entrada:
- n Tamaño del vector fuente.
Es decir, el número de elementos totales del conjunto.
- r
Tamaño del vector objetivo. Es decir, el número elementos que se
seleccionarán del conjunto.
- v Vector fuente. Por defecto
está indicado como ‘1:n’
- set Bandera lógica que
indica si los elementos duplicados deben ser removidos de la fuente
‘v’. Por defecto está en ‘TRUE’.
-
repeats.allowed Bandera lógica que indica si se permiten las
repeticiones. Por defecto está en ‘FALSE’.
Ambas funciones retornan una matriz.
Estructura de entrada de las funciones:
combinations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
Podemos visualizar los primeros resultados con
head(combinaciones) y los últimos con
tail(combinaciones). Para obtener el número total de
combinaciones o permutaciones, se utiliza
nrow(combinaciones) o nrow(permutaciones).
Ejemplo de uso:
(library(gtools))
## [1] "gtools" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
n <- 10
r <- 3
alumnos <- c(1:n)
combinaciones <- combinations(n,r,alumnos)
head(combinaciones)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 1 2 4
## [3,] 1 2 5
## [4,] 1 2 6
## [5,] 1 2 7
## [6,] 1 2 8
4. Calcule:
a) La cantidad de permutaciones posibles con n
= 11 y r = 3 con y sin repetición.
Permutaciones con repetición:
n <- 11
r <- 3
conjunto <- c(1:n)
permutaciones <- permutations(n,r,conjunto,set = TRUE, repeats.allowed = TRUE)
# Permutaciones con repetición
nrow(permutaciones)
## [1] 1331
Para calcular con repeticiones, modificamos cada función de
repeats.allowed = TRUE a
repeats.allowed = FALSE.
Resultados sin repetición:
n <- 11
r <- 3
conjunto <- c(1:n)
permutaciones <- permutations(n,r,conjunto,set = TRUE, repeats.allowed = FALSE)
# Permutaciones sin repetición
nrow(permutaciones)
## [1] 990
n <- 5
r <- 3
conjunto <- c("a", "b", "c", "d", "e")
combinaciones <- combinations(n,r,conjunto, set= TRUE, repeats.allowed = TRUE)
# Combinaciones con repetición
nrow(combinaciones)
## [1] 35
Combinaciones sin repetición:
n <- 5
r <- 3
conjunto <- c("a", "b", "c", "d", "e")
combinaciones <- combinations(n,r,conjunto, set= TRUE, repeats.allowed = FALSE)
# Combinaciones sin repetición
nrow(combinaciones)
## [1] 10
Permutaciones:
\[
\begin{equation}
P(n,r) = \frac{39!}{(39 - 25)!} = \frac{39!}{14!} =
2.3397891608591×10^{35}
\end{equation}
\]
# Permutaciones sin repetición:
factorial(39)/factorial(39-25)
## [1] 2.339789e+35
Combinaciones:
\[
\begin{equation}
P(n,r) = \frac{39!}{25!(39 - 25)!} = 15084504396 = 1.5×10^{10}
\end{equation}
\]
# Combinaciones sin repitición:
factorial(39)/(factorial(25)*factorial(39-25))
## [1] 15084504396
5. Considere un problema de una vendedora viajera que debe
recorrer 50 ciudades y volver al origen sin pasar dos veces por la misma
ciudad. Considerando que solo existe una ruta óptima, si se selecciona
una ruta al azar.
Debido a que el enunciado no indica si la vendedora ya se encuentra en una de las 50 ciudades a recorrer, podemos interpretar que la vendedora está en una ciudad distinta de las 50 que debe recorrer, por lo que podría empezar en cualquier punto*. Si existe solo una ruta correcta, entonces el orden de las ciudades que visite sí importa. La cantidad posible de rutas asciende a 50! Al existir solo una elección tenemos:
\[ \begin{equation} \frac{RutaÓptima}{RutasTotales} = \frac{1}{50!} = 3.2879494×10^{-65} \end{equation} \]
1/factorial(50)
## [1] 3.287949e-65
*Alternativamente, si interpretamos el problema como que la vendedora ya está en una de las ciudades a recorrer, significa la vendedora ya realizó la primera elección. En ese caso, el cálculo sería:
\[ \begin{equation} \frac{RutaÓptima}{RutasTotales} = \frac{1}{49!} = 1.643975×10^{-63} \end{equation} \]
1/factorial(49)
## [1] 1.643975e-63
\[ \begin{equation} \frac{RutaÓptima}{RutasTotales} = \frac{1}{50!-1} = 3.2879494×10^{-65} \end{equation} \]
1/(factorial(50)-1)
## [1] 3.287949e-65
Al restar solo una ruta la probabilidad sigue siendo extremadamente baja considerando la gran cantidad de rutas posibles. Es por esto que esta diferencia no llega a verse reflejada en los decimales presentes en el resultado mostrado.
Factorial de 50, es un número muy grande, por lo que la capacidad de cómputo actual de los computadores en que los estudiantes estamos realizando estas operaciones se ve excedida.
6. Una bencinera tiene 5 funcionarios que deben limpiar el
parabrisas de cada cliente que es atendido. Janet da servicio al 10 % de
los clientes y no limpia 1 de cada 20 parabrisas; Tomás da servicio al
60 % de los clientes y no limpia 1 de cada 10 parabrisas; Georgina da
servicio al 15 % de los clientes y no limpia 1 de cada 10 parabrisas;
Pedro da servicio al 5 % de los clientes y no limpia 1 de cada 20
parabrisas; Marcela da servicio al 10 % de los clientes y no limpia 3 de
cada 5 parabrisas. Si un cliente envía una nota de agradecimiento porque
su parabrisas quedó como nuevo.
Esta ecuación se puede resolver con el Teorema de Bayes.
\[
\begin{equation}
P(B_j|A)=\frac{P(A_j|B)P(Bj)}{\sum_{i=1}^{k}P(A|B_i)P(B_i)}
\end{equation}
\] Podemos ilustrar el problema con el siguiente diagrama:
\[
\begin{equation}
P(Pedro|Limpio)=\frac{P(Limpio|Pedro)P(Pedro)}{P(L|J)P(J)+P(L|T)P(T)+P(L|G)P(G)+P(L|P)P(P)+P(L|M)P(M)}
\end{equation}
\] Para simplificar, usamos solo la inicial del resto de los
trabajadores y L = Limpio.
Luego,
\[
\begin{equation}
P(Pedro|Limpio)=\frac{0.95\cdot0.05}{(0.95\cdot0.1)+(0.9\cdot0.6)+(0.9\cdot0.15)+(0.95\cdot0.05)+(0.4\cdot0.1)}
= 0.05539359
\end{equation}
\]
# b) Probabilidad de que el cliente fuese atendido por Pedro
(0.95*0.05)/((0.95*0.1)+(0.9*0.6)+(0.9*0.15)+(0.95*0.05)+(0.4*0.1))
## [1] 0.05539359
Para calcular la probabilidad de que el cliente haya sido atendido
por Janet o Georgina, primero debemos hacer la unión de aquellos
subconjuntos. Si consideramos que el cliente solo fue atendido uan vez,
eventos son mutuamente excluyentes. Por lo tanto:
\[ \begin{equation} Janet\cup Georgina = P(L|J\cup L|G) = P(L|J)+P(L|G) \end{equation} \] \[ \begin{equation} P(L|J\cup L|G)=\frac{(0.95\cdot0.1)+(0.9\cdot0.15)}{(0.95\cdot0.1)+(0.9\cdot0.6)+(0.9\cdot0.15)+(0.95\cdot0.05)+(0.4\cdot0.1)} = 0.2682216 \end{equation} \]
# c) Probabilidad de que el cliente fuese atendido por Janet o Georgina
((0.95*0.1)+(0.9*0.15))/((0.95*0.1)+(0.9*0.6)+(0.9*0.15)+(0.95*0.05)+(0.4*0.1))
## [1] 0.2682216
\[ \begin{equation} P(L|J\cup L|T\cup L|G\cup L|P\cup L|M)=\frac{(0.95\cdot0.1)+(0.9\cdot0.6)+(0.9\cdot0.15)+(0.95\cdot0.05)+(0.4\cdot0.1)}{(0.95\cdot0.1)+(0.9\cdot0.6)+(0.9\cdot0.15)+(0.95\cdot0.05)+(0.4\cdot0.1)} = 1 \end{equation} \]
# d) Probabilidad de que el cliente fuese atendido por Janet, Tomás, Georgina, Pedro o Marcela
((0.95*0.1)+(0.9*0.6)+(0.9*0.15)+(0.95*0.05)+(0.4*0.1))/((0.95*0.1)+(0.9*0.6)+(0.9*0.15)+(0.95*0.05)+(0.4*0.1))
## [1] 1
La probabilidad es 1 porque al incluir a todos los trabajadores posibles, quien atendió al cliente estará sí o sí dentro de la operación. Por lo tanto, existe la completa probabilidad y tenemos la certeza de que el cliente fue atendido por Janet, Georgina, Tomás, Pedro o Marcela.
7. De un grupo de 40 personas se quiere saber la opinión de 3
personas (seleccionadas al azar) acerca del apruebo o rechazo de la
nueva constitución. Si se sabe que 22 personas aprueban y 18 rechazan
¿Cuál es la probabilidad de que las dos personas seleccionadas
rechacen?
En el enunciado se menciona que se quiere saber la opinión de 3 personas pero luego se pregunta por “las dos personas seleccionadas”. Por lo tanto, se resolverá para la probabilidad de que, dado una muestra de 3 personas escogidas al azar, 2 de ellas rechacen.
Estamos frente a un problema de distribución discreta que puede ser resuelto mediante distribución hipergeométrica debido a que trabajamos con una población total finita en donde existe un muestreo aleatorio sin reemplazo sobre el cual se busca un número específico de casos favorables, que 2 personas voten rechazo, en una muestra particular, 3 personas de un total de 40. En este escenario y con los datos entregados, el uso de la distribución hipergeométrica es la estrategia adecuada para modelar el problema. Para ello usamos la siguiente fórmula:
\[
Distribución\ Hipergeométrica =
\begin{equation}
f(x)=\frac{\binom{K}{x}\binom{N-K}{n-x}}{\binom{N}{n}}
\end{equation}
\] En donde,
N = Tamaño de población
K = Número de casos
favorables en N
n = Tamaño de muestra
x = Valor que toma la
variable (Casos favorables en n)
Luego, definimos la función en R y calculamos.
# Probabilidad de que al seleccionar 3 personas aleatoriamente de un grupo inicial de 40, en donde 22 de ellas votan Apruebo y 18 votan Rechazo, 2 personas de este subgrupo de 3 voten Rechazo.
N = 40 # Tamaño de población
K = 18 # Casos favorables en N
n = 3 # Muestra
x = 2 # Casos favorables en n
binomio = function(n,k)
{resultado=factorial(n)/(factorial(n-k)*factorial(k))
return(resultado)}
probabilidad = (binomio(K,x)*binomio(N-K,n-x))/binomio(N,n)
print(probabilidad)
## [1] 0.3406883
Finalmente, podemos calcular de manera directa usando la función dhyper.
#Comprobación mediante función dhyper
print(dhyper(x=x, m=K, n=(N-K), k=n))
## [1] 0.3406883
combinations: Enumerate the Combinations or Permutations of the Elements of a Vector.(2023). RDocumentation. Recuperado el 24 de abril de 2023 de https://www.rdocumentation.org/packages/gtools/versions/3.9.4/topics/combinations
Huera Guzmán, J. (2023). Permutaciones y combinaciones: fórmulas. Neurochispas. Recuperado el 24 de abril de 2023 de https://www.neurochispas.com/wiki/permutaciones-y-combinaciones-formulas/
López, J. F. (2021). Teorema de Bayes: qué es y cómo se aplica. Economipedia. Recuperado de https://economipedia.com/definiciones/teorema-de-bayes.html
Manuel. (2020). Probabilidad condicional con y sin devolución. Las mates fáciles. Recuperado de https://lasmatesfaciles.com/2020/07/16/probabilidad-condicional-con-y-sin-devolucion/
Teorema de Bayes. (2023). Wikipedia, la enciclopedia libre. Recuperado el 24 de abril de 2023 de https://es.wikipedia.org/wiki/Teorema_de_Bayes
Distribución hipergeométrica. (2023). Wikipedia, la enciclopedia libre. Recuperado el 3 de mayo de 2023 de https://es.wikipedia.org/wiki/Distribuci%C3%B3n_hipergeom%C3%A9trica