Integrantes del grupo

  1. Kathya Elizabeth Menjivar HM17039
  2. Arturo José Iraheta Rico IR15005
  3. Josué Humberto Mendoza Ramírez MR14086
  4. Mariela Cecilia Palacios Constanza PC17006

Carga de datos

library(readr)
datos_ejercicio <- read_table2("http://halweb.uc3m.es/esp/Personal/personas/agrane/libro/ficheros_datos/capitulo_7/datos_prob_7_3.txt", col_names = FALSE)

Normalización de los datos para método CRITIC

# Función  para normalizar los datos 
normalizacion_directa <- function(x){
    return((x-min(x)) / (max(x)-min(x)))}
  normalizacion_inversa <- function(x){
    return((max(x)-x) / (max(x)-min(x)))}

Datos normalizados

 library(dplyr)
data_factor <- datos_ejercicio %>% dplyr::select(X3,X7,X8) %>% 
dplyr::transmute(X3=normalizacion_directa(X3), X7=normalizacion_directa(X7), X8=normalizacion_inversa(X8))

head(data_factor, n=6)
## # A tibble: 6 x 3
##       X3      X7    X8
##    <dbl>   <dbl> <dbl>
## 1 0.983  0.768   0.353
## 2 0.55   0.165   0.765
## 3 0.483  0       1    
## 4 1      0.744   0.118
## 5 0.0333 0.00478 1    
## 6 0.517  0.175   0.941

Creación de función para método CRITIC

critic <- function(datos_ejercicio){
# Cálculo de la desviación estándar 
  desviacion_datos <- apply(data_factor,2,sd)
  
# cálculo de la matriz de correlación   
  correlacion_datos <- cor(data_factor)
  
# Cálculo de ponderadores brutos   
  suma_data <- 1-correlacion_datos 
  suma_vec <- colSums(suma_data)
  ponderador_bruto <- desviacion_datos*suma_vec
  
 
# Cálculo de ponderadores netos   
  ponderador_neto <- ponderador_bruto/sum(ponderador_bruto)

# Creación de lista de resultados 
  list(desviacion=desviacion_datos, correlacion=correlacion_datos, w_brutos=ponderador_bruto, w_netos=ponderador_neto)
}

Aplicación de la función Critic

metodcritic <- critic(datos_ejercicio)
metodcritic
## $desviacion
##        X3        X7        X8 
## 0.3179355 0.3108151 0.3124976 
## 
## $correlacion
##            X3         X7         X8
## X3  1.0000000  0.7060802 -0.7251117
## X7  0.7060802  1.0000000 -0.9346464
## X8 -0.7251117 -0.9346464  1.0000000
## 
## $w_brutos
##        X3        X7        X8 
## 0.6419218 0.6926720 1.1436656 
## 
## $w_netos
##        X3        X7        X8 
## 0.2590212 0.2794994 0.4614794

Normalización de los datos para método de entropía

library(dplyr)
library(tidyr)
# Normalizando los datos   
data_normalizada <- datos_ejercicio %>% dplyr::select(X3,X7,X8)
data_normalizada2 <- apply(data_normalizada,2,prop.table)

# Omitiendo los  valores nulos 
data_normalizada2 <- na.omit(data_normalizada2)
head(data_normalizada2, n=6)
##              X3          X7         X8
## [1,] 0.10166920 0.131305352 0.13636364
## [2,] 0.06221548 0.034270312 0.05681818
## [3,] 0.05614568 0.007701194 0.01136364
## [4,] 0.10318665 0.127454755 0.18181818
## [5,] 0.01517451 0.008471313 0.01136364
## [6,] 0.05918058 0.035810551 0.02272727

Creación de función para Método de Entropía

entropia <- function(datos_ejercicio) { 

# Fórmula de Entropía   
  entropy <- function(x){
    return(x*log(x))}

  normalizacion_entropia <- apply(data_normalizada2,2,entropy)
# Número de variables en el factor     
  m <- nrow(data_normalizada2)
  
# Constante de entropía   
  K <- -1/log(m)
# Cálculo de las entropías  
  Ej <- K*colSums(normalizacion_entropia)
# Cálculo de las especificidades  
  Vj <- 1-Ej 
# Cálculo de los ponderadores   
  Wj <- prop.table(Vj)

# Creación de lista de resultados  
  list(Kentropia=K, entropias=Ej, especificidades=Vj, ponderadores=Wj)
  
}

Aplicación de la función entropia

metodentropia <- entropia(datos_ejercicio)
metodentropia 
## $Kentropia
## [1] -0.3459763
## 
## $entropias
##        X3        X7        X8 
## 0.9528297 0.8740529 0.8374802 
## 
## $especificidades
##         X3         X7         X8 
## 0.04717033 0.12594714 0.16251976 
## 
## $ponderadores
##        X3        X7        X8 
## 0.1405396 0.3752478 0.4842126