Integrantes:
AB16003. Alexander Daniel Alvarez Berardi.
JA13009. Rosa Katya Jovel Barahona.
PO16004. Silvia Raquel Paz Ortiz.
PG15036. Rene Ernesto Pereira Garcia.
CL12025. Jose Manuel Canales Lopez.
CARGA DE DATOS
library(readr)
datos_ejercicio_propio <- read_table2("http://halweb.uc3m.es/esp/Personal/personas/agrane/libro/ficheros_datos/capitulo_7/datos_prob_7_3.txt",col_names = FALSE)
Solucion rotada
library(psych)
modelo_4<-principal(r = datos_ejercicio_propio,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
Quedan dentro del factor 1: X3, X7 y X8
Función método CRITIC
Primer paso. Seleccionar datos y normalizarlos.
library(dplyr)
#Formula de normalización
norm_directa <- function(x){(x-min(x)) / (max(x)-min(x))}
norm_inversa <- function(x){(max(x)-x) / (max(x)-min(x))}
#Normalización
data_factor <- datos_ejercicio_propio %>% select(X3, X7, X8) %>%
transmute(X3=norm_directa(X3), X7= norm_directa(X7), X8= norm_inversa(X8))
Función de ponderadores CRITIC
library(dplyr)
formula_critic<- function(data_factor){
#Desviacion estandar
desviacion_estandar <- apply(data_factor,2, sd)
#Matriz correlacion
matriz_r <-cor(data_factor)
print(matriz_r)
#Ponderador bruto
suma_data<-1-matriz_r
sum_vector<-colSums(suma_data)
ponderadores_brutos<- desviacion_estandar*sum_vector
#Ponderador neto
ponderadores_netos<-round((ponderadores_brutos/sum(ponderadores_brutos))*100,2)
return(list("Vector desviaciones"=round(desviacion_estandar,4),
"Ponderadores brutos"=ponderadores_brutos,
"Ponderadores netos"=ponderadores_netos))
}
Probando
library(readr)
library(dplyr)
library(kableExtra)
CRITIC <- formula_critic(data_factor)
## X3 X7 X8
## X3 1.0000000 0.7060802 -0.7251117
## X7 0.7060802 1.0000000 -0.9346464
## X8 -0.7251117 -0.9346464 1.0000000
CRITIC %>% as.data.frame() %>%
kable(caption ="Resultados para el método Crític" ,align = "c",digits = 4) %>%
kable_classic_2(html_font = "Sans-serif") %>% kable_styling(font_size = 16, bootstrap_options = c("striped", "hover"))
Resultados para el método Crític
|
|
Vector.desviaciones
|
Ponderadores.brutos
|
Ponderadores.netos
|
|
X3
|
0.3179
|
0.6419
|
25.90
|
|
X7
|
0.3108
|
0.6927
|
27.95
|
|
X8
|
0.3125
|
1.1437
|
46.15
|
Función método de entropía
Primer paso. Seleccionar datos y normalizarlos.
library(dplyr)
datos_ejercicio_propio %>% select(X3,X7,X8)->data_norm
apply(data_norm,2,prop.table)->data_norm
data_norm <- (data_norm) +2
print(data_norm)
## X3 X7 X8
## [1,] 2.101669 2.131305 2.136364
## [2,] 2.062215 2.034270 2.056818
## [3,] 2.056146 2.007701 2.011364
## [4,] 2.103187 2.127455 2.181818
## [5,] 2.015175 2.008471 2.011364
## [6,] 2.059181 2.035811 2.022727
## [7,] 2.037936 2.011167 2.011364
## [8,] 2.091047 2.078552 2.068182
## [9,] 2.042489 2.042357 2.022727
## [10,] 2.012140 2.015402 2.011364
## [11,] 2.030349 2.010782 2.011364
## [12,] 2.057663 2.115518 2.068182
## [13,] 2.091047 2.037351 2.045455
## [14,] 2.039454 2.025414 2.011364
## [15,] 2.018209 2.013092 2.011364
## [16,] 2.039454 2.079322 2.079545
## [17,] 2.060698 2.057374 2.034091
## [18,] 2.081942 2.168656 2.204545
Función de ponderadores ENTROPIA
library(dplyr)
entropia<-function(x){
return(x*log(x))
}
#Formula ENTROPIA
formula_entropia <-function(data_norm){
normalizacion_entropia<- apply(X = data_norm, MARGIN = 2, FUN = entropia)
print(normalizacion_entropia)
#Numero de variables
m<-nrow(normalizacion_entropia)
#Constante de entropia
k<- -1/log(m)
#Calculo de entropias
ej<- k*colSums(normalizacion_entropia)
#Calculo de especificidades
vj<- 1-ej
#Calculo de ponderadores
wj<-round((prop.table(vj))*100,2)
return(list("Constante de entropía"= k,
"Entropías"=ej,
"Especificidades"=vj,
"Ponderadores"=wj))
}
Probando
library(readr)
library(dplyr)
library(kableExtra)
ENTROPIA <- formula_entropia(data_norm)
## X3 X7 X8
## [1,] 1.560977 1.612833 1.621725
## [2,] 1.492592 1.444611 1.483295
## [3,] 1.482138 1.399348 1.405567
## [4,] 1.563622 1.606072 1.702164
## [5,] 1.412044 1.400655 1.405567
## [6,] 1.487363 1.447246 1.424904
## [7,] 1.450884 1.405232 1.405567
## [8,] 1.542492 1.520818 1.502885
## [9,] 1.458682 1.458456 1.424904
## [10,] 1.406885 1.412432 1.405567
## [11,] 1.437909 1.404578 1.405567
## [12,] 1.484750 1.585157 1.502885
## [13,] 1.542492 1.449881 1.463768
## [14,] 1.453482 1.429485 1.405567
## [15,] 1.417208 1.408504 1.405567
## [16,] 1.453482 1.522151 1.522538
## [17,] 1.489977 1.484252 1.444304
## [18,] 1.526691 1.678773 1.742740
ENTROPIA %>% as.data.frame() %>%
kable(caption ="Resultados para el método de entropía" ,align = "c",digits = 4) %>%
kable_classic_2(html_font = "Sans-serif") %>% kable_styling(font_size = 16, bootstrap_options = c("striped", "hover"))
Resultados para el método de entropía
|
|
Constante.de.entropía
|
Entropías
|
Especificidades
|
Ponderadores
|
|
X3
|
-0.346
|
-9.2250
|
10.2250
|
33.33
|
|
X7
|
-0.346
|
-9.2274
|
10.2274
|
33.33
|
|
X8
|
-0.346
|
-9.2289
|
10.2289
|
33.34
|