1.- Instalamos e incluimos la libreria “gtools” de la siguiente forma:

install.packages("gtools")
library(gtools)

Permutacion y combinacion ¿cuales son sus diferencias?

2.- La permutacion corresponde a la organizacion de elementos dependiendo de su orden, mientras que la combinacion es una organizacion en la cual el orden no altera los resultados. Ejemplos:

Permutación: Una carrera de formula 1, donde el orden de llegada importa

Combinación: Ensalada de fruta, donde no importa el orden de como juntamos las frutas


3.- A continuacion una breve explicacion del funcionamiento de combinations y permutations en R

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

Parametros

n => Largo del vector de entrada.

r => Largo del vector objetivo.

v => Vector de entrada, por defecto de “1:n”.

set => Indicador lógico que muestra si los duplicados deben eliminarse del vector de entrada “v”. El valor predeterminado es “TRUE”.

repeats.allowed => Indicador lógico que muestra si los vectores construidos pueden incluir valores duplicados. El valor predeterminado es “FALSE”.


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

Sin repeticiones

library(gtools)
vec<- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
res <- permutations(n=14,r=4,v=vec,repeats.allowed=FALSE)

Realiza la siguiente cantidad de permutaciones

## [1] 24024

Con repeticiones

library(gtools)
vec<- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
res <- permutations(n=14,r=4,v=vec,repeats.allowed=TRUE)

Realiza la siguiente cantidad de permutaciones

## [1] 38416

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

Sin repeticiones

library(gtools)
vec<- LETTERS[1:3]
res <- combinations(n=3,r=3,v=vec,repeats.allowed=FALSE)

Realiza la siguiente cantidad de combinaciones

## [1] 1
print(res)
##      [,1] [,2] [,3]
## [1,] "A"  "B"  "C"

Con repeticiones

library(gtools)
vec<- LETTERS[1:3]
res <- combinations(n=3,r=3,v=vec,repeats.allowed=TRUE)

Realiza la siguiente cantidad de combinaciones

## [1] 10
print(res)
##       [,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"

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

Permutaciones

library(gtools)
vec<- seq(1:30)
res <- permutations(n=30,r=2,v=vec,repeats.allowed=FALSE)

Realiza la siguiente cantidad de permutaciones

## [1] 870

Combinaciones

library(gtools)
vec<- seq(1:30)
res <- combinations(n=30,r=2,v=vec,repeats.allowed=FALSE)

Realiza la siguiente cantidad de combinaciones

## [1] 435

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

Ecuación 1

Respuesta

tBayes=function(A,B,ByA) {
  if(B != 0){
    resultado = (A*ByA)/B
  }else{
    resultado = 0
  }
  
  return(resultado)
  }

5.b.- Responda las siguientes preguntas:

5.b.1.- ¿Cuál es el porcentaje de supervivencia de los pasajeros y de la tripulación?¿Cuál es mayor?

pSobrevivientes = sum(apply(Titanic, c(1,4),sum)[5:7])
pTotal = sum(apply(Titanic, 1,sum)[1:3])
pPorcentaje = (pSobrevivientes/pTotal)*100

tSobrevivientes = sum(apply(Titanic, c(1,4),sum)[8])
tTotal = sum(apply(Titanic, 1,sum)[4])
tPorcentaje = (tSobrevivientes/tTotal)*100

porcentaje = c(pPorcentaje,tPorcentaje)

print(data.frame("PasajerosSobrevive"=pPorcentaje,"TripulacionSobrevive"=tPorcentaje))
##   PasajerosSobrevive TripulacionSobrevive
## 1           37.91793              23.9548

Respuesta: El porcentaje de Pasajeros que sobrevivieron es mayor

5.b.2.- ¿Cuál es la probabilidad de que una mujer de la tripulación sobreviva?

totalPasajeros = sum(apply(Titanic, 4,sum))
totalsobreviven = sum(apply(Titanic, 4,sum)[2])
probSobrevivir = totalsobreviven/totalPasajeros

tripMujeres = sum(apply(Titanic, c(1,2),sum)[8])
tripTotal = sum(apply(Titanic, 1,sum)[4])
probTripMujer = tripMujeres/tripTotal

tripMujerSobrevive = sum(apply(Titanic, c(1,2,4),sum)[16])
tripSobrevive = tripMujerSobrevive/totalsobreviven

cat("Probabilidad de sobrevivir de una mujer de la tripulación: ", tBayes(probSobrevivir, probTripMujer, tripSobrevive))
## Probabilidad de sobrevivir de una mujer de la tripulación:  0.3496434

5.b.3.- ¿Cuál es la probabilidad de que un(a) menor de edad sobreviva en tercera clase?

totalPasajeros = sum(apply(Titanic, 4,sum))
totalsobreviven = sum(apply(Titanic, 4,sum)[2])
probSobrevivir = totalsobreviven/totalPasajeros

totalClase3 = sum(apply(Titanic, 1,sum)[3])
niñosClase3 = sum(apply(Titanic, c(1,3),sum)[3])
probNiñoClase3 = niñosClase3/totalClase3

niñosClase3Sobreviven = sum(apply(Titanic, c(1,3,4),sum)[11])
probSobrevivirNiñoClase3 = niñosClase3Sobreviven/totalsobreviven

cat("Probabilidad de sobrevivir de un niño de 3ra Clase: ", tBayes(probSobrevivir, probNiñoClase3, probSobrevivirNiñoClase3))
## Probabilidad de sobrevivir de un niño de 3ra Clase:  0.109628

5.b.4.- ¿En general se cumple el código “mujeres y niños(as) primero”?

sNiños = sum(apply(Titanic, c(3,4),sum)[3])
tNiños = sum(apply(Titanic, c(2,3),sum)[1:2])
pNiñosSobreviven = sNiños/tNiños

sMujeres = sum(apply(Titanic, c(2,3,4),sum)[8])
tMujeres =  sum(apply(Titanic, c(2,3),sum)[4])
pMujeresSobreviven = sMujeres/tMujeres

sHombres = sum(apply(Titanic, c(2,3,4),sum)[7])
tHombres = sum(apply(Titanic, c(2,3),sum)[3])
pHombresSobreviven = sHombres/tHombres

porcentaje = c(pNiñosSobreviven,pMujeresSobreviven,pHombresSobreviven)

print(data.frame("NiñosSobrevivientes"=pNiñosSobreviven,"MujeresSobrevivientes"=pMujeresSobreviven,"HombresSobrevivientes"=pHombresSobreviven))
##   NiñosSobrevivientes MujeresSobrevivientes HombresSobrevivientes
## 1           0.5229358             0.7435294             0.2027594

Respuesta: En general se respeta el código “mujeres y niños primero”

5.b.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(17047369)
sample(clases, 1)
## 1st 
## 325

Con mi identificador personal genero una semilla que entrega como resultado primera clase

sNiños = sum(apply(Titanic, c(1,3,4), sum)[9])
tNiños = sum(apply(Titanic, c(1,2,3), sum)[1])+sum(apply(Titanic, c(1,2,3), sum)[5])
pNiñosSobreviven = sNiños/tNiños

sMujeres = sum(apply(Titanic, c(1,2,3,4), sum)[29])
tMujeres = sum(apply(Titanic, c(1,2,3), sum)[13])
pMujeresSobreviven = sMujeres/tMujeres

sHombres = sum(apply(Titanic, c(1,2,3,4), sum)[25])
tHombres = sum(apply(Titanic, c(1,2,3), sum)[9])
pHombresSobreviven = sHombres/tHombres

porcentaje = c(pNiñosSobreviven,pMujeresSobreviven,pHombresSobreviven)

print(data.frame("NiñosSobrevivientes"=pNiñosSobreviven,"MujeresSobrevivientes"=pMujeresSobreviven,"HombresSobrevivientes"=pHombresSobreviven))
##   NiñosSobrevivientes MujeresSobrevivientes HombresSobrevivientes
## 1                   1             0.9722222             0.3257143

Respuesta: En primera clase se respeto el código de mujeres y niños primero