La diferencia principal entre permutacion y combinacion es en la importancia del orden, es decir, en la permutacion el orden es importante, por ejemplo una permutacion de las muestras {a,b,c,d} seria {a,b} y otra totalmente distinta seria {b,a}, en la combinacion esto no pasa, ya que {a,b} y {b,a} son iguales. n = poblacion r = muestra Permutacion = n!/(n-r)! Combinacion = n!/(n-r)!*r!
las funciones trabajas con vectores de elementos los cuales se les puedes asignar flags para indicar si la permutacion o combinacion es con o sin repeticion y las funciones es cuestion retornan matrices con los resultados.
print('Numero de permutaciones sin repeticion: ')
## [1] "Numero de permutaciones sin repeticion: "
nrow(permutations(11, 3, 1:11))
## [1] 990
print('Numero de permutaciones con repeticion: ' )
## [1] "Numero de permutaciones con repeticion: "
nrow(permutations(11, 3, 1:11, repeats.allowed = TRUE))
## [1] 1331
print('Numero de combinaciones sin repeticion: ')
## [1] "Numero de combinaciones sin repeticion: "
nrow(combinations(5, 3, c('a','b','c','d','e')))
## [1] 10
print('Numero de combinaciones con repeticion: ')
## [1] "Numero de combinaciones con repeticion: "
nrow(combinations(5, 3, c('a','b','c','d','e'), repeats.allowed = TRUE))
## [1] 35
combinacion <- function(n, r) {
numerador <- factorial(n)
denominador <- factorial(n-r)*factorial(r)
return(numerador/denominador)
}
permutacion <- function(n, r) {
numerador <- factorial(n)
denominador <- factorial(n-r)
return (numerador/denominador)
}
print("combinaciones: ")
## [1] "combinaciones: "
print(combinacion(n = 39, r =25))
## [1] 15084504396
print("Permutaciones: ")
## [1] "Permutaciones: "
print(permutacion(n = 39, r =25))
## [1] 2.339789e+35
se devio crear una funcion de combinacion y permuutacion debido a que las funciones ya incluidas eran demaciado lentas y al intentar con numeros tan grandes se quedaban en un loop infinito.
casos_totales <- permutacion(n = 50, r = 49)
posibilidad = 1/casos_totales
print(posibilidad)
## [1] 3.287949e-65
asumiendo que la opcion anterior no vuelve al pool de selecciones entonces tenemos un casos_totales - 1 de posibilidades de que sea la correcta
casos_totales = casos_totales - 1
print(1/casos_totales)
## [1] 3.287949e-65
bueno resolvi el problema utilizando el teorema de bayes entonces apoyandome en un grafo de tipo arbol fui asignando los porcentajes necesarios para poder resolver los problemas en cada caso
prob_pedro_atendio = 0.05
prob_pedro_parabrisa = 0.95
prob_janet_atendio = 0.1
prob_janet_parabrisa = 0.95
prob_tomas_atendio = 0.6
prob_tomas_parabrisa = 0.9
prob_georgina_atendio = 0.15
prob_georgina_parabrisa = 0.9
prob_marcela_atendio = 0.1
prob_marcela_parabrisa = 0.4
prob_pedro_parabrisa_atendio = prob_pedro_atendio * prob_pedro_parabrisa
prob_janet_parabrisa_atendio = prob_janet_atendio * prob_janet_parabrisa
prob_georgina_parabrisa_atendio = prob_georgina_atendio * prob_georgina_parabrisa
prob_tomas_parabrisa_atendio = prob_tomas_atendio * prob_tomas_parabrisa
prob_marcela_parabrisa_atendio = prob_marcela_atendio * prob_marcela_parabrisa
apoyandonos en el teorema de bayes necesitamos la probabilidad de que pedro haya limpiado su parabrisa dado de que la atendio y lo dividimos por la probabilidad de los demas empleados.
pedro = prob_pedro_parabrisa_atendio/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
print(pedro)
## [1] 0.05539359
janet_georgina = (prob_georgina_parabrisa + prob_janet_parabrisa_atendio)/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
print(janet_georgina)
## [1] 1.16035
marcela = prob_marcela_parabrisa_atendio/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
janet = prob_janet_parabrisa_atendio/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
georgina = prob_georgina_parabrisa_atendio/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
tomas = prob_tomas_parabrisa_atendio/(prob_marcela_parabrisa_atendio + prob_tomas_parabrisa_atendio + prob_georgina_parabrisa_atendio + prob_janet_parabrisa_atendio + prob_pedro_parabrisa_atendio)
print("pedro: ")
## [1] "pedro: "
print(pedro)
## [1] 0.05539359
print("georgina: ")
## [1] "georgina: "
print(georgina)
## [1] 0.1574344
print("janet: ")
## [1] "janet: "
print(janet)
## [1] 0.1107872
print("tomas: ")
## [1] "tomas: "
print(tomas)
## [1] 0.6297376
print("marcela: ")
## [1] "marcela: "
print(marcela)
## [1] 0.04664723
print(tomas + pedro + janet + marcela + georgina)
## [1] 1
bueno claramente se puede observar que de que tomas tiene mas probabilidades de haber sido el que recibio la nota de agradeciemiento y marcela la que menos, la suma de todas las probabilidades da 1 porque si el cliente mando la nota es porque alguien le limpio el parabrisa de los 5 empleados.