# install.packages('gtools')
library(gtools)
Permutación: La permutación es una agrupación de elemenentos donde si importa el orden con el que se ordenen los elementos
Combinación: La combinación es una agrupación con todos los elementos, donde no importa el orden con el que se ordenen los elementos
combinations: Esta función recibe un vector y enumera todas las posibles combinaciones de un tamaño en especifico considerando los elementos que contiene el vector de entrada. Retorna una matriz
permutations: Esta función al igual que combinations recibe un vector, pero solo enumera todas las posibles permutaciones considerando los elementos del vector. Retorna una matriz.
Con repetición:
# permutations(14,4,1:14,TRUE,TRUE)
Podemos utilizar la funcion nrow() para facilmente obtener la cantidad de permutaciones con repetición
nrow(permutations(14,4,1:14,TRUE,TRUE))
## [1] 38416
Sin repetición:
# permutations(14,4,1:14,TRUE,FALSE)
Podemos utilizar la funcion nrow() para facilmente obtener la cantidad de permutaciones sin repetición
nrow(permutations(14,4,1:14,TRUE, FALSE))
## [1] 24024
Por lo tanto, la cantidad de permutaciones con repetición es 38416 y sin repeticion es 24024, considerando n = 14 y r = 4.
Con repeticion:
combinations(3, 3, c("a", "b", "c"), TRUE, TRUE)
## [,1] [,2] [,3]
## [1,] "a" "a" "a"
## [2,] "a" "a" "b"
## [3,] "a" "a" "c"
## [4,] "a" "b" "b"
## [5,] "a" "b" "c"
## [6,] "a" "c" "c"
## [7,] "b" "b" "b"
## [8,] "b" "b" "c"
## [9,] "b" "c" "c"
## [10,] "c" "c" "c"
Sin repetición:
combinations(3,3,c("a","b","c"), TRUE, FALSE)
## [,1] [,2] [,3]
## [1,] "a" "b" "c"
Permutaciones:
# permutations(30,2,1:30,TRUE,FALSE)
nrow(permutations(30,2,1:30,TRUE,FALSE))
## [1] 870
Combinaciones:
# combinations(30,2,1:30,TRUE,FALSE)
nrow(combinations(30,2,1:30,TRUE,FALSE))
## [1] 435
data("Titanic")
force(Titanic)
## , , Age = Child, Survived = No
##
## Sex
## Class Male Female
## 1st 0 0
## 2nd 0 0
## 3rd 35 17
## Crew 0 0
##
## , , Age = Adult, Survived = No
##
## Sex
## Class Male Female
## 1st 118 4
## 2nd 154 13
## 3rd 387 89
## Crew 670 3
##
## , , Age = Child, Survived = Yes
##
## Sex
## Class Male Female
## 1st 5 1
## 2nd 11 13
## 3rd 13 14
## Crew 0 0
##
## , , Age = Adult, Survived = Yes
##
## Sex
## Class Male Female
## 1st 57 140
## 2nd 14 80
## 3rd 75 76
## Crew 192 20
# Entrada: Tres probabilidades, la de B dado A, la de A y la de B
# Salida: La probabilidad de A dado B
# Descripcion: Funcion que calcula la probabilidad de A, dado B (Teorema de Bayes)
bayes = function(PBA, PA, PB){
return((PBA * PA)/ PB)
}
Pasajeros:
pasajeros_sobrevivientes = apply(Titanic, c(1,4),sum)[5] + apply(Titanic, c(1,4),sum)[6] + apply(Titanic, c(1,4),sum)[7]
total_pasajeros = apply(Titanic, 1, sum)[1]+ apply(Titanic, 1, sum)[2] + apply(Titanic, 1, sum)[3]
supervivencia = pasajeros_sobrevivientes / total_pasajeros
supervivencia = supervivencia * 100
supervivencia
## 1st
## 37.91793
Tripulación:
crew_sobrevivientes = apply(Titanic, c(1,4), sum)[8]
total_crew = apply(Titanic,1, sum)[4]
supervivencia = crew_sobrevivientes / total_crew
supervivencia = supervivencia * 100
supervivencia
## Crew
## 23.9548
Considerando lo anterior, el porcentaje de supervivencia de los pasajeros es mayor que el de la tripulación
Teniendo en consideración:
P(B|A) La probabilidad de que sea mujer, tripultante y sobreviva
P(A) La probabilidad de supervivencia
P(B) La probabilidad de que sea mujer y de la tripilación
Utilizamos el teorema de Bayes para calcular la probabilidad:
mujer_tripulante_sobreviva = (apply(Titanic, c(1,2,4), sum)[16]) / (apply(Titanic, 4, sum)[2])
supervivencia = (apply(Titanic, 4, sum)[2]) / ((apply(Titanic,4,sum)[1]) + (apply(Titanic,4,sum)[2]))
mujer_tripulante = (apply(Titanic, c(1,2),sum)[8]) / (apply(Titanic,1,sum)[4])
bayes(mujer_tripulante_sobreviva, supervivencia, mujer_tripulante)
## Yes
## 0.3496434
menor_terclase_sobreviva = (apply(Titanic, c(1,3,4), sum)[11]) / (apply(Titanic, 4, sum)[2])
supervivencia = (apply(Titanic, 4, sum)[2]) / ((apply(Titanic,4,sum)[1]) + (apply(Titanic,4,sum)[2]))
menor_tercera = (apply(Titanic, c(1,3),sum)[3]) / (apply(Titanic,1,sum)[3])
bayes(menor_terclase_sobreviva, supervivencia, menor_tercera)
## Yes
## 0.109628
ninos_supervivientes = apply(Titanic, c(3,4),sum)[3]
ninos_totales = apply(Titanic,3,sum)[1]
ninos = ninos_supervivientes / ninos_totales
mujeres_supervivientes = apply(Titanic,c(2,3,4),sum)[8]
mujeres_totales = apply(Titanic,c(2,3),sum)[4]
mujeres = mujeres_supervivientes / mujeres_totales
ninos
## Child
## 0.5229358
mujeres
## [1] 0.7435294
Considerando las probabilidades anteriores, si se cumple el código de las mujeres y ninos primero
set.seed(98)
sample(apply(Titanic,1,sum),1)
## 2nd
## 285
mujeres_sobrevivientes = apply(Titanic,c(1,2,3,4),sum)[30]
total_mujeres = apply(Titanic,c(1,2,3),sum)[14]
mujeres = mujeres_sobrevivientes / total_mujeres
ninos_sobrevivientes = apply(Titanic,c(1,3,4),sum)[10]
total_ninos = apply(Titanic,c(1,3),sum)[2]
ninos = ninos_sobrevivientes / total_ninos
hombres_sobrevivientes = apply(Titanic,c(1,2,3,4),sum)[26]
total_hombres = apply(Titanic,c(1,2,3),sum)[10]
hombres = hombres_sobrevivientes / total_hombres
mujeres
## [1] 0.8602151
ninos
## [1] 1
hombres
## [1] 0.08333333
Considerando las probabilidades anteriores obtenidas, si se cumple el código de mujeres y ninos primero