Trabajo Presentado por:
|
Nombres
|
Carnet
|
Grupo_Teorico
|
|
Rodrigo Alejandro Roque Soto
|
RS18005
|
2
|
|
Mario Antonio Herrera Rivera
|
HR17038
|
2
|
Importación de Datos y Solución Rotada
library(dplyr)
library(readr)
library(kableExtra)
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)
datos_ejercicio %>% dplyr::select(X3,X7,X8)->data_normal
# Solución Rotada
library(psych)
modelo_4<-principal(r = datos_ejercicio,nfactors = 4,covar = FALSE,rotate = "varimax")
modelo_4$loadings
##
## Loadings:
## RC1 RC2 RC4 RC3
## X1 -0.218 -0.102 -0.900 -0.143
## X2 -0.118 -0.937 -0.163 0.179
## X3 0.761 0.447
## X4 0.216 0.113 0.960
## X5 0.382 0.366 0.715
## X6 0.951 0.118
## X7 0.877 0.152 0.287 0.269
## X8 0.971 0.121
##
## RC1 RC2 RC4 RC3
## SS loadings 2.549 1.954 1.667 1.071
## Proportion Var 0.319 0.244 0.208 0.134
## Cumulative Var 0.319 0.563 0.771 0.905
Función Método CRITIC
Normalización de Datos
# Normalizando los datos
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
Método CRITIC
funcion_critic <- function(data_ejercicio) {
# Desviación Típica
desviacion <- apply(data_ejercicio,MARGIN = 2,FUN = sd)
# Matriz de Correlación
coeficiente_correlacion<-cor(data_ejercicio)
# Ponderadores Brutos
1-coeficiente_correlacion->sum_data
colSums(sum_data)->sum_vector
desviacion * sum_vector->vj
# Ponderadores netos
wj <- vj/sum(vj)
# Ponderadores
ponderadores<-round(wj*100,2)
# Resultados en lista
list(Desviacion_Estandar=desviacion,Ponderadores_Brutos=vj,Ponderadores_Netos=wj,Ponderadores=ponderadores)
}
# Probando la Función
salida_critic<-funcion_critic(data_factor_1)
salida_critic %>% as.data.frame() %>% kable(caption = "Prueba Función Critic",align = "c",digits = 4) %>% kable_minimal(html_font = "helvetica") %>% kable_styling(bootstrap_options = c("striped","hover"))
Prueba Función Critic
|
|
Desviacion_Estandar
|
Ponderadores_Brutos
|
Ponderadores_Netos
|
Ponderadores
|
|
X3
|
0.3179
|
0.6419
|
0.2590
|
25.90
|
|
X7
|
0.3108
|
0.6927
|
0.2795
|
27.95
|
|
X8
|
0.3125
|
1.1437
|
0.4615
|
46.15
|
Función Método Entropía
Normalización de Datos
# Normalizando los datos función entropía
data_norm<-datos_ejercicio %>% dplyr::select(X3,X7,X8)
data_norm<-apply(data_norm,2,prop.table)
data_norm<-na.omit(data_norm)
head(data_norm,n = 10)
## 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
## [7,] 0.03793627 0.011166731 0.01136364
## [8,] 0.09104704 0.078552176 0.06818182
## [9,] 0.04248862 0.042356565 0.02272727
## [10,] 0.01213961 0.015402387 0.01136364
Método Entropía
funcion_entropy<-function(data_ejercicio){
#Fórmula de entropía
entropy<-function(x){
return(x*log(x))}
# Usando formula de entropía
data_norm2<-apply(data_ejercicio,2,entropy)
# Número de observaciones
m<-nrow(data_norm2)
# Constante de Entropía
K<--1/log(m)
# Cálculos de las Entropías
Ej<-K*colSums(data_norm2)
#Cálculo de las Especificidades
vj<-1-Ej
# Cálculo de los Ponderadores
wj<- vj/sum(vj)
ponderadores<-round(wj*100,2)
# Resultados en Lista
list(Constante=K,Entropias=Ej,Especificidades=vj,Ponderadores=ponderadores)
}
# Probando la Función
salida_entropia<-funcion_entropy(data_norm)
salida_entropia %>% as.data.frame() %>% kable(caption = "Prueba de la Función entropia",align = "c",digits = 4) %>% kable_minimal(html_font = "helvetica") %>% kable_styling(bootstrap_options = c("striped","hover"))
Prueba de la Función entropia
|
|
Constante
|
Entropias
|
Especificidades
|
Ponderadores
|
|
X3
|
-0.346
|
0.9528
|
0.0472
|
14.05
|
|
X7
|
-0.346
|
0.8741
|
0.1259
|
37.52
|
|
X8
|
-0.346
|
0.8375
|
0.1625
|
48.42
|