En el presente documento se propone la realización de unas activdades propuestas, desde comprender las diferencias entre permutación y combinión y su correcto funcionamiento hasta analizar datos del conjunto de datos Titanic para calcular probabilidades segun los datos obtenidos.
Las permutaciones y combinaciones son tecnicas de conteo, que nos permiten saber la cantidad de resultados posibles que pueden existir en un espacio muestral o evento
Antes de continuar, debemos saber que el factorial de un numero postivio corresponde a la multiplicación del número con todos los numeros anteriores a el, hasta el número 1. En el caso del factorial de 0, el resultado es 1.
Comenzando con las permutaciones, tenemos un calculo util que nos ayuda a encontrar la cantidad de secuencias ordenadas que puede tener un set de elementos, por ejemplo, si tomamos al conjunto {a, b, c} nos encontramos con un total de 6 combinaciones posibles, las cuales son: abc, acb, bac, bca, cab y cba. Para calcular el numero de permutaciones posibles de un subconjunto de elementos se utilizará la siguiente formula (si se quiere calcular la permutacion del total de elementos del conjunto, solo se usara n!) \[ P(n) = P_r^n = \frac{n!}{(n-r)!} \] Para lo anterior tenemos que tener en cuenta que los elementos a ordenar, solo se consideran una vez, por lo que el orden si importa.
A diferencia de las permutaciones, en las combinaciones el orden de los elementos no tiene importancia. Por lo que con el calculo de una combinatoria, tendremos el resultado del numero de combinaciones, subconjuntos de r elementos que se pueden seleccionar de un conjunto de n elementos. \[ C_r^n = (_r^n) = \frac{n!}{r!(n-r)!} \] Recapitulando, tenemos que estos cálculos nos sirven para contar diferentes maneras de conbinar elementos, en caso de las permutaciones el orden de los elementos si importa, mientras que en el caso de las combinaciones no se considera el orden.
Para comprender el funcionamiento de las tecnicas de conteo anteriormente mencionadas utilizaremos el comando “help” para tener la documentación de las funciones que realizan los calculos.
help(combinations)
Viendo la ventana con la información solicitada nos encontramos con las funciones correspondientes a combinaciones y permutaciones, que según los parametros ingresados se generará un vector.
combinations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE)
De los parametros incluidos nos enfocaremos en 3, partiendo por n siendo el conjunto de elementos, r son las posiciones totales en donde se ordenarán los n elementos, v corresponde al vector de origen (en caso de que se coloque uno, que será de donde se seleccionen elementos pre-definidos) y con repeats.allowed se indicará si los elementos a contar se repiten o no.
Las funciones creadas se encargarán de generar una matriz con las combinaciones o permutaciones de elementos mediante los parámetros n, r y v en caso de que se utilice un vector como entrada.
# Funciones presentes en el documento "item4.r"
# CR = Con Repeticion
# SR = Sin Repeticion
library(gtools)
combinacionCR = function(n,r){
return(combinations(n, r, v = 1:n, set = TRUE, repeats.allowed = TRUE))
}
combinacionSR = function(n,r){
return(combinations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE))
}
permutacionCR = function(n,r){
return(permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = TRUE))
}
permutacionSR = function(n,r){
return(permutations(n, r, v = 1:n, set = TRUE, repeats.allowed = FALSE))
}
vector = c("A", "B", "C")
combinacionVectorCR = function(n, r, v){
return(combinations(n, r, v, set = TRUE, repeats.allowed = TRUE))
}
combinacionVectorSR = function(n, r, v){
return(combinations(n, r, v, set = TRUE, repeats.allowed = FALSE))
}
perm1 = permutacionCR(14,4)
perm2 = permutacionSR(14,4)
nrow(perm1)
## [1] 38416
nrow(perm2)
## [1] 24024
Luego de obtener las matrices con las permutaciones, usando la funcion nrow() encontramos que perm1 y perm2 tienen un total de 38417 y 24024 filas/permutaciones respectivamente.
comb1 = combinacionVectorCR(3,3, vector)
comb2 = combinacionVectorSR(3,3, vector)
nrow(comb1)
## [1] 10
nrow(comb2)
## [1] 1
Aquí se realiza el mismo procedimiento que el anterior, solo que se le da uso a las funciones que reciben un vector como parametro de entrada para realizar las combinaciones respectivas, dando un total de 10 combinaciones para la combinacion con repeticion y solamente 1 para sin reposición.
permSR = permutacionSR(30,2)
combSR = combinacionSR(30,2)
nrow(permSR)
nrow(combSR)
Para la siguiente sección se utilizará el conjunto de datos Titanic para efectuar unos cálculos de probabilidad con la información del conjunto, que corresponde a datos del destino de los pasajeros y tripulación que fueron parte del accidente en el año 1912.
Antes de esto, utilizando la formula (1) presentada se creará una función para efectuar su calculo.
\[ P(A|B) = \frac{P(B|A)P(A)}{P(B)} \]
La función resultante en R sería una división, entre la probabilidad intersección de A con B y la probablididad de B
# Funcion P(A|B) (Probabilidad de A dado B) según la formula (1) presentada.
probCondicional = function(P_BA, P_A, P_B){
return((P_BA*P_A)/P_B)
}
# Datos del conjunto de datos Titanic
datos = apply(Titanic, c(1,4), sum)
total = sum(datos) # Cantidad de personas totales presentes en el Titanic
probP = (sum(datos[5:7])/total) * 100 # Prob. de sobr. pasajeros
probT = (sum(datos[8])/total) * 100 # Prob de sobr. tripulantes
Con estos datos solamente se realizaran las divisiones y multiplicaciones correspondientes para obtener el porcentaje solicitado.
Con esto obtenemos un porcentaje de supervivencia del 22.67151% para los pasajeros y del 9.631985% para la tripulación. Es visible que los pasajeros tenían una mayor probabilidad de sobrevivir al accidente, esto debido a que habían más pasajeros que tripulación en el Titanic, o que a la hora de evacuar a la gente estos tenían mayor prioridad sobre la tripulación.
datosM = apply(Titanic, c(1,2,4), sum)
totMuj = (apply(Titanic, c(2), sum))[2] # Mujeres totales del Titanic
sobrMuj = sum(datosM[13:16])
probSobrMuj = sobrMuj/totMuj # Probabilidad de sobrevivencia de las mujeres del Titanic
totMujCrew = datosM[16]+datosM[8] # Mujeres que pertenecian a la tripulacion
sobrMujCrew = sum(datosM[16]) # Mujeres tripulantes sobrevivientes
probSobrMujCrew = sobrMujCrew/sobrMuj # Probabilidad de sobrevivir siendo mujer tripulante en el Titanic
probSobrMujCrew
## [1] 0.05813953
Realizando lo anterior se obtiene un 0.05813953.
datos3Clase = apply(Titanic, c(1,3), sum) # Datos necesarios de la 3ra clase
total3Clase = sum(datos3Clase[1:3]+datos3Clase[5:7]) # Total personas 3ra clase
ninos3Clase = sum(datos3Clase[3]) # Cantidad niños presentes en 3ra clase
probSobrNinos3Class = ninos3Clase / total3Clase # Probabilidad de sobrevivencia niños 3ra clase
probSobrNinos3Class
## [1] 0.0600304
Con esto tenemos una probabilidad de 0.0600304 de sobrevivencia para los niños de 3ra clase, que además, pertenecían a la única clase donde hubieron niños sin ser rescatados, probablemente por el simple hecho de ser de la clase de pasajeros más economica.
datos2 = apply(Titanic, c(2,3,4), sum)
totalAdultos = sum((apply(Titanic, c(3),sum))[2])
totalNinos = sum(datos2[1]+datos2[2]+datos2[5]+datos2[6])
ninosVivos = (sum(datos2[5]+datos2[6]))/totalNinos * 100
ninosMuertos = (sum(datos2[1])+datos2[2])/totalNinos * 100
totalMujAdultas = sum(datos2[4]+datos2[8])
mujeresVivas = sum(datos2[8])/totalMujAdultas * 100
mujeresMuertas = sum(datos2[4])/totalMujAdultas * 100
totalHomAdultos = sum(datos2[3]+datos2[7])
hombresVivos = sum(datos2[7])/totalHomAdultos * 100
hombresMuertos = sum(datos2[3])/totalHomAdultos * 100
totalMujAdultas # Total de mujeres adultas en el Titanic
## [1] 425
totalHomAdultos # Total de hombres adultos en el Titanic
## [1] 1667
totalNinos # Total de niños en el Titanic
## [1] 109
mujeresVivas
## [1] 74.35294
mujeresMuertas
## [1] 25.64706
hombresVivos
## [1] 20.27594
hombresMuertos
## [1] 79.72406
ninosVivos
## [1] 52.29358
ninosMuertos
## [1] 47.70642
Podemos notar que de un total de 425 mujeres, un 74.35294% de ellas sobrevivió, lo que se contrapone con el 20.27594% de sobrevivientes hombres. De esto se puede concluir que de la población de mujeres, fueron priorizadas ya que sobrevivieron más de la mitad de ellas. En el caso de los niños nos topamos con unos porcentajes cercanos tanto para los sobrevivientes como fallecidos, de un 52.29358% y 47.70642%. De esto, se debe tener en cuenta que en la única clase en que fallecieron niños fue en la tercera, probablemente por discriminación al viajar en una clase más económica que el resto. A pesar de que en el caso de las mujeres se salvaron casi el 75% de ellas, se podría decir que el código no fue cumplido del todo principalmente por los niños, ya que su porcentaje de fallecidos esta cerca al 50%, siendo estos parte de la tercera clase. De este ultimo detalle se puede extrapolar para pensar que fue debido a una discriminación probablemente económica.
clases = apply(Titanic, c(1), sum)
claseAleatoria = clases[sample(c(1,2,3,4),1)]
claseAleatoria
## 2nd
## 285
La clase obtenida al ejecutar una vez el código con la función sample incluida fue la segunda. Lo primero es obtener el total de pasajeros, con el total de hombres y mujeres adultas y los niños totales por separado.
sdaClase = apply(Titanic, c(1,2,3,4), sum)
totalNinosSC = sum(sdaClase[18]+sdaClase[22]) # Niños totales en segunda clase
totalHomSC = sum(sdaClase[10]+sdaClase[26]) # Total hombres en segunda clase
totalMujSC = sum(sdaClase[14]+sdaClase[30]) # Total mujeres en segunda clase
ninVivSC = (sum(sdaClase[18]+sdaClase[22]))/totalNinosSC * 100 # Porcentaje de la probabilidad de sobrevivencia niños en segunda clase
mujVivTSC = (sum(sdaClase[30]))/totalMujSC * 100 # Porcentaje de cuantas mujeres sobrevivieron de las totales en segunda clase
homVivTSC = (sum(sdaClase[26]))/totalHomSC * 100 # Porcentaje de cuantas hombres sobrevivieron de las totales en segunda clase
Con los datos anteriores se tiene lo necesario para realizar un análisis para comprobar si el código “mujeres y niños primero” se respetó.
ninVivSC
## [1] 100
mujVivTSC
## [1] 86.02151
homVivTSC
## [1] 8.333333
Partiendo con el porcentaje de sobrevivencia de los niños, nos encontramos con que el 100% de ellos sobrevivieron, por lo que fueron priorizados correctamente. Al comparar el porcentaje de mujeres y hombres sobrevivientes, tenemos un 86% frente a un 8.3%, por lo que podemos notar que las mujeres fueron priorizadas a la hora de evacuar a la gente. Con estos dos datos podemos asumir que el codigo de “mujeres y niños primero” fue respetado, aun que no del todo ya que aún así, hubieron mujeres fallecidas.