#' Cálculo de distancias entre compras de train y test sets
#'
#' Esta función se sirve de un MCA clásico (distancias euclídeas sobre variables categóricas transformadas a matriz indicator)
#' para calcular una matriz de distancias entre las observaciones del train y el test set.
#' Devuelve una matriz de distancias resultado de la función dist2 del package flexclust y los resultados del MCA del package FcatoMiner
#' en el cual el train son los individuos principales y el test forma los individuos suplementarios.
#' @param train, test Dataframes con la misma estructura y el mismo orden en las columnas. Todas las variables deben ser factores.
#' @param col_sobrantes Variables que no se deben incluir en el cáclulo.
#' @param col_id_train, col_id_test Columnas en las cuales se encuentra el id/label para los nobres de filas y columnas de la matriz de distancias.
#' @keywords
#' @export
#' @examples
#' res_dist_train_test <- dist_train_test(train=train,test=test,col_sobrantes=c('Referencia'),
#' col_id_train=c('idCompraAuto'),
#' col_id_test=c('idCompraAuto'), ncp=40)
#' dd <- res_dist_train_test$dist_train_test
#' plot(res_dist_train_test$mca, choix= 'ind', label='none', col.ind.sup='green')
#' plot(res_dist_train_test$mca, choix= 'var')
#'
dist_train_test <- function(train=train,test=test,
col_sobrantes=c('Referencia'),
col_id_train=c('idCompraAuto'),col_id_test=c('idCompraAuto'),
ncp=40){
require(flexclust)
require(data.table)
require(FactoMineR)
junt <- setDT(rbind(train,test))
mca_junt <- MCA(junt[,!(colnames(junt) %in% c(col_sobrantes, col_id_train, col_id_test))],ncp=ncp, graph = FALSE,
ind.sup = c((nrow(train)+1):nrow(junt))
)
dd <- dist2(mca_junt$ind.sup$coord,mca_junt$ind$coord)
dim(dd)
colnames(dd) <- train[,c(col_id_train)]
rownames(dd) <- test[,c(col_id_test)]
return(list(dist_train_test = dd,
mca = mca_junt))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.