Integrantes del grupo
- Kathya Elizabeth Menjivar HM17039
- Arturo José Iraheta Rico IR15005
- Josué Humberto Mendoza Ramírez MR14086
- 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