1. Para poder realizar los ejercicios planteados, se debe inatalar el paquete “gtools” con la sentencia: install.packages(′gtools′) y luego incluir la librería “gtools” (library(gtools)).

library(gtools)

2. Explique brevemente la diferencia entre permutación y combinación.

Las permutaciones corresponden a diferentes agrupaciones de elementos donde el orden sí Importa, por otro lado, las combinaciones tambien agrupan diversos elementos, sin embargo, en esta no importa el orden.

3. Busque en la ayuda de R las funciones combinations y permutations y explique brevemente cómo funcionan.

combinations enumera todas las posibles combinaciones de los elementos de un vector (v) de tamaño n, las cuales son determinadas por el número de elementos que se toman de este a la vez (r). Por otro lado, permutations enumera todas las posibles permutaciones.

combinations(n, r, v=1:n, set = TRUE, repeats.allowed = FALSE)

permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)

Donde set y repeats allowed queda determinado por:

set: Elimina los elementos repetidos del vector. Es TRUE por defecto.

repeats.allowed: Indica si los elementos se pueden repetir (TRUE). Es FALSE por defecto.

4. Calcule:

a) La cantidad de permutaciones posibles con n = 14 y r = 4 con y sin repetición.

Permutaciones con repetición:
nrow(permutations(14, 4, v = 1:14, repeats.allowed = TRUE))
## [1] 38416
Permutaciones sin repetición:
nrow(permutations(14, 4, v = 1:14, repeats.allowed = FALSE))
## [1] 24024

b) Las combinaciones de largo tres con las letras a, b y c con y sin repetición.

Combinaciones con repetición:
vector = c("a", "b", "c")
combinations(3, 3, vector, repeats.allowed = 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"
Combinaciones sin repetición:
vector = c("a", "b", "c")
combinations(3, 3, vector, repeats.allowed = FALSE)
##      [,1] [,2] [,3]
## [1,] "a"  "b"  "c"

c) La cantidad de permutaciones y combinaciones con n = 30 y r = 2 sin repetición.

Permutaciones sin repetición:
nrow(permutations(30, 2, v = 1:30, repeats.allowed = FALSE))
## [1] 870
Combinaciones sin repetición:
nrow(combinations(30, 2, v = 1:30, repeats.allowed = FALSE))
## [1] 435

5. Utilizando el conjunto de datos Titanic:

Se carga el conjunto de datos del dataset del titanic

data("Titanic")

a) Cree una función que calcule la probabilidad de A dado B, vea la Ecuación 1.

Ecuación 1: P(A|B) = (P(B|A)P(A))/P(B)

bayes = function(A, B, BA){
  return (BA*A/B)
}

b) Responda las siguientes preguntas:

1) ¿Cuál es el porcentaje de supervivencia de los pasajeros y de la tripulación? ¿Cuál es mayor?
surv_pass = sum(apply(Titanic, c(1,4),sum)[5:7])
total_passengers = sum(apply(Titanic, 1,sum)[1:3])
porcentaje_pass = (surv_pass/total_passengers)*100

surv_crew = (apply(Titanic, c(1,4),sum)[8])
total_crew = apply(Titanic, 1,sum)[4]
porcentaje_crew = (surv_crew/total_crew)*100
paste("El total de sobrevivientes correspondiente a los pasajeros, corresponde a", porcentaje_pass,"%")
## [1] "El total de sobrevivientes correspondiente a los pasajeros, corresponde a 37.9179331306991 %"
paste("El total de sobrevivientes correspondiente a la tripulación, corresponde a", porcentaje_crew, "%")
## [1] "El total de sobrevivientes correspondiente a la tripulación, corresponde a 23.954802259887 %"

De lo anterior, se da cuenta que el porcentaje de los pasajeros es mayor a la de los tripulantes ##### 2) ¿Cuál es la probabilidad de que una mujer de la tripulación sobreviva?

total_passengers = sum(apply(Titanic, 4,sum))

women_crew = sum(apply(Titanic, c(1,2),sum)[8])
total_crew = sum(apply(Titanic, 1,sum)[4])
prob_mCrew = women_crew/total_crew

total_survivors = sum(apply(Titanic, 4,sum)[2])
prob_surv = total_survivors/total_passengers

women_crew_surv = sum(apply(Titanic, c(1,2,4),sum)[16])
crew_surv = women_crew_surv/total_survivors

paste("La probabilidad de que una mujer de la tripulación sobreviva es de ", bayes(prob_surv, prob_mCrew, crew_surv))
## [1] "La probabilidad de que una mujer de la tripulación sobreviva es de  0.349643442703909"
3) ¿Cuál es la probabilidad de que un(a) menor de edad sobreviva en tercera clase?
total_passengers = sum(apply(Titanic, 4,sum))

total_3clase = sum(apply(Titanic, 1,sum)[3])
children_3clase = sum(apply(Titanic, c(1,3),sum)[3])
prob_children_3 = children_3clase/total_3clase

total_survivors = sum(apply(Titanic, 4,sum)[2])
prob_surv = total_survivors/total_passengers

children_3_surv = sum(apply(Titanic, c(1,3,4),sum)[11])
prob_chil_3_surv = children_3_surv/total_survivors

paste("La probabilidad de que un(a) menor de edad sobreviva en tercera clase es de", bayes(prob_surv,prob_children_3, prob_chil_3_surv))
## [1] "La probabilidad de que un(a) menor de edad sobreviva en tercera clase es de 0.109627959673106"
4) ¿En general se cumple el código “mujeres y niños(as) primero”?
total_women =  sum(apply(Titanic, c(2,3),sum)[4])
surv_women = sum(apply(Titanic, c(2,3,4),sum)[8])
razon_women = surv_women/total_women

surv_children = sum(apply(Titanic, c(3,4),sum)[3])
total_children = sum(apply(Titanic, c(2,3),sum)[1:2])
razon_children = surv_children/total_children

surv_men = sum(apply(Titanic, c(2,3,4),sum)[7])
total_men = sum(apply(Titanic, c(2,3),sum)[3])
razon_men = surv_men/total_men

paste("La razón entre mujeres sobrevivientes y el total de mujeres es de:", razon_women)
## [1] "La razón entre mujeres sobrevivientes y el total de mujeres es de: 0.743529411764706"
paste("La razón entre niños(as) sobrevivientes y el total de niños(as) es de:", razon_children)
## [1] "La razón entre niños(as) sobrevivientes y el total de niños(as) es de: 0.522935779816514"
paste("La razón entre hombres sobrevivientes y el total de hombres es de:", razon_men)
## [1] "La razón entre hombres sobrevivientes y el total de hombres es de: 0.202759448110378"

Al aplicar razones, se da cuenta que el valor tanto de mujeres y de niños es mayor al de los hombres sobrevivientes, por lo tanto, se concluye que se cumple el código de “mujeres y niños(as) primero”.

5) Seleccione una clase de forma aleatoria, puede utilizar la función sample. ¿En la clase seleccionada se cumple el código “mujeres y niños(as) primero”?
clases = apply(Titanic, 1, sum)

set.seed(1)
sample(clases, 1)
## 1st 
## 325
total_women_1 = sum(apply(Titanic, c(1,2,3), sum)[13])
surv_women_1 = sum(apply(Titanic, c(1,2,3,4), sum)[29])
razon_women = surv_women_1/total_women_1

total_men_1 = sum(apply(Titanic, c(1,2,3), sum)[9])
surv_men_1 = sum(apply(Titanic, c(1,2,3,4), sum)[25])
razon_men = surv_men_1/total_men_1

total_children_1 = sum(apply(Titanic, c(1,2,3), sum)[1])+sum(apply(Titanic, c(1,2,3), sum)[5])
surv_children_1 = sum(apply(Titanic, c(1,2,3,4), sum)[17]) +sum(apply(Titanic, c(1,2,3,4), sum)[21])
razon_children = surv_children_1/total_children_1

paste("La razón entre mujeres sobrevivientes y el total de mujeres es de:", razon_women)
## [1] "La razón entre mujeres sobrevivientes y el total de mujeres es de: 0.972222222222222"
paste("La razón entre niños(as) sobrevivientes y el total de niños(as) es de:", razon_children)
## [1] "La razón entre niños(as) sobrevivientes y el total de niños(as) es de: 1"
paste("La razón entre hombres sobrevivientes y el total de hombres es de:", razon_men)
## [1] "La razón entre hombres sobrevivientes y el total de hombres es de: 0.325714285714286"

De lo anterior, se da cuenta que para la 1ra clase, se cumple el código de “mujeres y niños(as) primero, ya que tanto la razón de mujeres de primera clase que sobreviven y las de dicha clase que no, como la razón de lo niños de primera clase, es mayor a la de los hombres.