Carga del Data
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)
Método Critic
library(dplyr)
library(kableExtra)
norm_directa <- function(x){
return((x-min(x)) / (max(x)-min(x)))
}
norm_inverza <- function(x){
return((max(x)-x) / (max(x)-min(x)))
}
datos_ejercicio %>% dplyr::select(X3,X7,X8) %>% dplyr::transmute(X3=norm_directa(X3),X7=norm_directa(X7), X8=norm_inverza(X8)) ->data_factor_1
print(data_factor_1)
## # A tibble: 18 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
## 7 0.283 0.0215 1
## 8 0.867 0.440 0.706
## 9 0.333 0.215 0.941
## 10 0 0.0478 1
## 11 0.2 0.0191 1
## 12 0.5 0.670 0.706
## 13 0.867 0.184 0.824
## 14 0.3 0.110 1
## 15 0.0667 0.0335 1
## 16 0.3 0.445 0.647
## 17 0.533 0.309 0.882
## 18 0.767 1 0
ponderadores_CRITIC <-function(data_normalizada) {
#Cálculo de las desviaciones estándar de cada variable
apply(data_normalizada,MARGIN =2,FUN = sd)-> sd_vector
#Cálculo de la matriz de correlación
cor(data_normalizada)->mat_R_F1
#Cálculo de los ponderadores brutos
1-mat_R_F1->sum_data
colSums(sum_data)->sum_vector
sd_vector*sum_vector->vj
#Cálculo de los ponderadores netos
vj/sum(vj)->wj
#Ponderadores:
ponderadores = round(wj*100,2)
list(desv=sd_vector,ponderadores_brutos=vj,ponderadores_netos=wj,netos_redondeados=ponderadores)
}
###--------------------------------------------------------------------------
# Aplicación de la función
ponderadores_CRITIC(data_factor_1)%>% as.data.frame() %>% kable(caption ="Método CRITIC" ,align = "l",digits = 5) %>% kable_classic_2(html_font = "Times New Roman") %>% kable_styling(font_size = 16, bootstrap_options = c("striped", "hover"))
Método CRITIC
|
|
desv
|
ponderadores_brutos
|
ponderadores_netos
|
netos_redondeados
|
|
X3
|
0.31794
|
0.64192
|
0.25902
|
25.90
|
|
X7
|
0.31082
|
0.69267
|
0.27950
|
27.95
|
|
X8
|
0.31250
|
1.14367
|
0.46148
|
46.15
|
Método Entropía
library(dplyr)
library(kableExtra)
#Normalización de los datos
datos_ejercicio %>% dplyr::select(X3,X7,X8)->data_norm
apply(data_norm,2,prop.table)->data_norm
data_norm=data_norm+2
# Función de los ponderadores
ponderadores_ENTROPIA= function(data_normalizada){
#Fórmula de entropía
entropy<-function(x){
return(x*log(x))
}
apply(data_norm,2,entropy)->data_norm_2
#Número de variables en el factor:
nrow(data_norm)->m
#Constante de entropía:
-1/log(m)->K
#Cálculo de las entropías
K*colSums(data_norm_2)->Ej
#Cálculo de las especificidades:
1-Ej->vj
#Cálculo de los ponderadores:
prop.table(vj)->wj
list(Cons_Entropia=K,Entropias=Ej, Especificidades=vj, ponderadores=wj)
}
ponderadores_ENTROPIA(data_factor_1)%>% as.data.frame() %>% kable(caption ="Método ENTROPIA" ,align = "c",digits = 4) %>% kable_classic_2(html_font = "Times New Roman") %>% kable_styling(font_size = 16, bootstrap_options = c("striped", "hover"))
Método ENTROPIA
|
|
Cons_Entropia
|
Entropias
|
Especificidades
|
ponderadores
|
|
X3
|
-0.346
|
-9.2250
|
10.2250
|
0.3333
|
|
X7
|
-0.346
|
-9.2274
|
10.2274
|
0.3333
|
|
X8
|
-0.346
|
-9.2289
|
10.2289
|
0.3334
|