Instale el paquete “gtools” con la sentencia: install.packages(′gtools′), incluya la librería “gtools” (library(gtools)).
#install.packages('gtool')
(library(gtools))
## [1] "gtools" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
Explique brevemente la diferencia entre permutación y combinación y exprese las ecuaciones para calcular permutaciones y combinaciones:
Las permutaciones es una manera de contabilizar combinaciones posibles en el que importa el orden y las combinatorias son las que no importa el orden pero si la existencia de algún elemento, por ejemplo AB y BA equivalen a lo mismo en combinación pero en permutación son distintos.
Permutaciones:
Combinaciones:
Busque en la ayuda de R las funciones combinations y permutations y explique brevemente cómo funcionan.
Las funciones combinations y permutations tienen la misma sintaxis para poder usarlas, estas son:
combinations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
en donde:
Calcule:
#Permutación sin repetición
perm = permutations(11,3, repeats.allowed = F)
nrow(perm)
## [1] 990
#Permutación con repetición
perm2 = permutations(11,3, repeats.allowed = T)
nrow(perm2)
## [1] 1331
#Comninatoria sin repetición
comb = combinations(5,3,v=c('a','b','c','d','e'))
nrow(comb)
## [1] 10
#Combinatoria con repetición
comb2 = combinations(5,3,v=c('a','b','c','d','e'), repeats.allowed = T)
nrow(comb2)
## [1] 35
#Permutación
#permc = permutations(39, 25)
#nrow(permc)
#Combinatoria
#combc = combinations(39,25)
#nrow(permc)
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
No se puede usar las funciones de permutación debido a que tienen limitaciones para entradas demasiado grandes debido a restricciones de memoria y tiempo de ejecución. Por lo anterior se debe hacer a fuerza bruta.
permutacion = 50*49*48*47*46*45*44*43*42*41*40*39*38*37*36*35*34*33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1
proba_optima = 1/permutacion
sprintf("%0.1f%%", proba_optima * 100)
## [1] "0.0%"
Se peude ver que la cantidad de posibles rutas es tan grande que la probabilidad de que se eliga de manera aleatoria la optima tiende a 0%.
proba_optima2 = 1 / (permutacion - 1)
sprintf("%0.1f%%", proba_optima * 100)
## [1] "0.0%"
El quitar una ruta posible aumentaría la posibilidad pero ya que siguen siendo tan grande las cantidades de posibles rutas es tecnicamente discriminable y la probabilidad sigue siendo de 0%.
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.
Para este problema se debe utilizar el teorema de bayes, ya que entrega la probabilida de cuando n eventos estan relacionados: P[An|B] = (P[B|Ai]P[Ai])/(Σ(i=1 a n)P[B|Ai]P[Ai].)
(library(gtools))
## [1] "gtools" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
#P(A) =Probabilidad de que haya sido antendido por Pedro = 0.05
#P(B|A) = Probabilidad de haya sido limpiado su parabrisas y sea atendido por Pedro = 0.95
prob_pedro = (0.05*0.95)/((0.4*0.1) + (0.05*0.95)+(0.9*0.15)+(0.9*0.6)+(0.95*0.1))
sprintf("%0.1f%%", prob_pedro * 100)
## [1] "5.5%"
(library(gtools))
## [1] "gtools" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
Prob_JanetGeorgina = ((0.9*0.15) + (0.95*0.1))/((0.4*0.1) + (0.05*0.95)+(0.9*0.15)+(0.9*0.6)+(0.95*0.1))
sprintf("%0.1f%%", Prob_JanetGeorgina * 100)
## [1] "26.8%"
Prob_Todos = ((0.4*0.1) + (0.05*0.95)+(0.9*0.15)+(0.9*0.6)+(0.95*0.1))/((0.4*0.1) + (0.05*0.95)+(0.9*0.15)+(0.9*0.6)+(0.95*0.1))
sprintf("%0.1f%%", Prob_Todos * 100)
## [1] "100.0%"
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 tres personas seleccionadas rechacen?
Considerando que no es posible que a las personas ya seleccionadas se les vuelva a elegir se puede resolver con probabilidades sin repetición
(18/40)x(17/39)x(16/38)
prob = (18/40)*(17/39)*(16/38)
sprintf("%0.1f%%", prob * 100)
## [1] "8.3%"