Una permutación es una agrupacion de elementos en donde el orden si importa, por lo que, teniendo un conjunto de elementos {a,b,c}, puede existir una agrupación a-b-c y c-b-a entre las permutaciones del conjunto.
Una combinacion, por el contrario, es una agrupación de elementos en donde el orden no importa, sino que solo importa el contenido de esta agrupacion. Utilizando el ejemplo anterior, {a,b,c}, no existira una combinacion a-b-c y c-b-a al mismo tiempo, ya que esta representa una combinacion de 3 elementos donde existe una a, una b y una c.
La funcion combinations en R devuelve las combinaciones posibles de un vector que posea los elementos a utilizar, junto al tamaño de las muestras que se poseeran. Al utilizar la funcion, se podran entregar los siguientes parametros:
combinations(n,r,v=1:n,set=TRUE,repeats.allowed=FALSE)
Donde n corresponde al largo del vector donde se encuentran los datos de entrada, r el tamaño de los vectores de salida, v corresponde al vector, por defecto son valores de 1 hasta n, y repeats.allowed es un valor booleano que permite o no la repeticion de elementos en la muestra.
La función permutations funciona de manera igual en sus entradas, pero la salida de esta funcion difiere en las muestras que se devolveran.
#sin repetición
sin_repeticion <- nrow(permutations(14,4))
sin_repeticion
## [1] 24024
#con repetición
con_repeticion <- nrow(permutations(14,4,repeats=TRUE))
con_repeticion
## [1] 38416
#sin repetición
sin_repeticion <- combinations(3,3,letters[1:3])
sin_repeticion
## [,1] [,2] [,3]
## [1,] "a" "b" "c"
#con repetición
con_repeticion <- combinations(3,3,letters[1:3],repeats=TRUE)
con_repeticion
## [,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"
#### Permutaciones:
P_sin_rep <- nrow(permutations(30,2))
P_sin_rep
## [1] 870
#### Combinaciones:
C_sin_rep <- nrow(combinations(30,2))
C_sin_rep
## [1] 435
AdadoB <- function(A,B,BA){
return(BA*A/B)
}
titan <- apply(Titanic,c(1,4),sum)
titan
## Survived
## Class No Yes
## 1st 122 203
## 2nd 167 118
## 3rd 528 178
## Crew 673 212
totalcrew <- titan[4]+titan[8]
#Porcentaje de pasajeros que sobrevivieron:
passengers <- (titan[5]+titan[6]+titan[7])/(sum(titan)-totalcrew)*100
passengers
## [1] 37.91793
#Porcentaje de tripulacion que sobrevivio:
crew <- (titan[8])/totalcrew*100
crew
## [1] 23.9548
titan_24 <- apply(Titanic,c(1,2,4),sum)
femaleCrew <- titan_24[8] + titan_24[16]
mujer_crew <- titan_24[16]/femaleCrew
mujer_crew
## [1] 0.8695652
AgeClassSurv <- apply(Titanic,c(1,3,4),sum)
thirdClassKids <- AgeClassSurv[3]+AgeClassSurv[11]
surv3ClassKids <- AgeClassSurv[11]/thirdClassKids
surv3ClassKids
## [1] 0.3417722
No se cumple para todas las clases, ya que los niños de 3ra clase murio sobre el 60%.
set.seed(9)
clase <- names(sample(apply(Titanic,c(1),sum)))[1]
#separacion por casos
if(clase == "1st"){
if((AgeClassSurv[9])/(AgeClassSurv[1]+AgeClassSurv[9]) > AgeClassSurv[13]/(AgeClassSurv[5]+AgeClassSurv[13])){
if(titan_24[13]/(titan_24[13]+titan_24[5]) > titan_24[9]/(titan_24[1]+titan_24[9])) {
string <- "Primera clase cumple con el codigo"
} else{string <- "Primera clase no cumple con el codigo"}
} else{string <- "Primera clase no cumple con el codigo"}
}
if(clase == "2nd"){
if((AgeClassSurv[10])/(AgeClassSurv[2]+AgeClassSurv[10]) > AgeClassSurv[14]/(AgeClassSurv[6]+AgeClassSurv[14])){
if(titan_24[14]/(titan_24[14]+titan_24[6]) > titan_24[10]/(titan_24[2]+titan_24[10])) {
string <- "Segunda clase cumple con el codigo"
} else{string <- "Segunda clase no cumple con el codigo"}
} else{string <- "Segunda clase no cumple con el codigo"}
}
if(clase == "3rd"){
if((AgeClassSurv[11])/(AgeClassSurv[3]+AgeClassSurv[11]) > AgeClassSurv[15]/(AgeClassSurv[7]+AgeClassSurv[15])){
if(titan_24[15]/(titan_24[15]+titan_24[7]) > titan_24[11]/(titan_24[3]+titan_24[11])) {
string <- "Tercera clase cumple con el codigo"
} else{string <- "Tercera clase no cumple con el codigo"}
} else{string <- "Tercera clase no cumple con el codigo"}
}
if(clase == "Crew"){
if(titan_24[16]/(titan_24[16]+titan_24[8]) > titan_24[12]/(titan_24[4]+titan_24[12])) {
string <- "La tripulacion cumple con el codigo"
} else {string <- "La tripulacion no cumple con el codigo"}
}
string
## [1] "Tercera clase cumple con el codigo"