Práctica Unidad 2

Rebeca Isabel Galvez Gonzalez

2022-10-20

Portada



UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONOMICAS

ESCUELA DE ECONOMIA

Materia: Métodos para el Análisis Económico

Docente: Carlos Ademir Pérez Alas


“Práctica Unidad 2”

Alumna:

Apellido Nombre DUE
Gálvez González Rebeca Isabel GG19027

Ciclo: II-2022

Fecha: Miércoles 25 de Octubre de 2022

Ciudad Universitaria, San Salvador, El Salvador

CLAVE A

Ejercicio 1

A través del análisis de componentes principales, identifique para un modelo de 3 factores: (25%)

# Cargamos los datos
library(dplyr)
load("C:/Users/Usuario/Desktop/ACTIVIDAD DEL 2 PARCIAL MAE/data_parcial_2_A_rev.RData")
datos_parcial_2 %>% 
  as.data.frame()->datos_parcial_2

Normalización de los datos

library(dplyr)
library(tidyr)
library(magrittr)
norm_directa<-function(x){(x-min(x))/(max(x)-min(x))}
norm_inversa<-function(x){(max(x)-x)/(max(x)-min(x))}

#Seleccionando las variables con correlación positiva para la Salud Financiera
datos_parcial_2 %>% 
  select(X1,X2,X3,X5,X7,X8) %>% 
  apply(MARGIN = 2,FUN = norm_directa) %>% as.data.frame()->variables_corr_positiva

#Seleccionando las variables con correlación negativa para la Salud Financiera
datos_parcial_2 %>% 
  select(X4,X6) %>% 
  apply(MARGIN = 2,FUN = norm_inversa) %>% as.data.frame()->variables_corr_negativa

#Juntando y reordenando las variables
variables_corr_positiva %>% 
  bind_cols(variables_corr_negativa) %>% 
  select(X1,X2,X3,X4,X5,X6,X7,X8)->datos_normalizados
head(datos_normalizados)
##           X1          X2        X3        X4        X5        X6         X7
## 1 0.19354839 0.000000000 0.0400000 0.8000000 0.0000000 1.0000000 0.00000000
## 2 0.22580645 0.017167382 0.5500000 0.5000000 0.4285714 0.7844130 0.09890110
## 3 0.22580645 0.077253219 0.4000000 0.5000000 0.5714286 0.8599606 0.15384615
## 4 0.16129032 0.004291845 0.3142857 0.5714286 0.1632653 0.9261954 0.36263736
## 5 0.12903226 0.021459227 0.7000000 0.2500000 0.8571429 0.5034965 0.06593407
## 6 0.09677419 0.047210300 0.1600000 0.7000000 0.3428571 0.5571726 0.25274725
##          X8
## 1 0.1582266
## 2 0.5167488
## 3 0.4679803
## 4 0.4133709
## 5 0.7339901
## 6 0.2551724
#Matriz de correlación
library(PerformanceAnalytics)
chart.Correlation(as.matrix(datos_normalizados),histogram = TRUE,pch=12)

library(FactoMineR)
library(factoextra)
library(kableExtra)
# Componentes Principales 
Rx<-cor(datos_normalizados)
PC<-princomp(x = datos_normalizados,cor = TRUE,fix_sign = FALSE)
variables_pca<-get_pca_var(PC)
factoextra::get_eig(PC) %>% kable(caption="Resumen de PCA",
        align = "c",
        digits = 2) %>% 
  kable_material(html_font = "sans-serif") %>% 
  kable_styling(bootstrap_options = c("hover"))
Resumen de PCA
eigenvalue variance.percent cumulative.variance.percent
Dim.1 3.90 48.72 48.72
Dim.2 1.96 24.55 73.27
Dim.3 0.84 10.52 83.78
Dim.4 0.50 6.24 90.03
Dim.5 0.45 5.68 95.70
Dim.6 0.28 3.45 99.16
Dim.7 0.07 0.82 99.98
Dim.8 0.00 0.02 100.00

Modelo de 3 Factores Rotados

library(corrplot)
library(factoextra)
library(psych)
#Modelo de 2 Factores (Rotada)
numero_de_factores<-3
modelo_factores<-principal(r = Rx,
                             nfactors = numero_de_factores,
                             covar = FALSE,
                             rotate = "varimax")
modelo_factores
## Principal Components Analysis
## Call: principal(r = Rx, nfactors = numero_de_factores, rotate = "varimax", 
##     covar = FALSE)
## Standardized loadings (pattern matrix) based upon correlation matrix
##      RC1   RC2   RC3   h2     u2 com
## X1 -0.16  0.80 -0.03 0.67 0.3316 1.1
## X2  0.08  0.84 -0.03 0.71 0.2879 1.0
## X3  0.93 -0.09  0.28 0.95 0.0493 1.2
## X4 -0.95  0.05 -0.26 0.98 0.0208 1.2
## X5  0.43 -0.06  0.80 0.83 0.1742 1.5
## X6 -0.25  0.03 -0.91 0.89 0.1142 1.2
## X7 -0.07  0.83 -0.04 0.69 0.3107 1.0
## X8  0.96 -0.06  0.27 0.99 0.0087 1.2
## 
##                        RC1  RC2  RC3
## SS loadings           2.97 2.05 1.68
## Proportion Var        0.37 0.26 0.21
## Cumulative Var        0.37 0.63 0.84
## Proportion Explained  0.44 0.31 0.25
## Cumulative Proportion 0.44 0.75 1.00
## 
## Mean item complexity =  1.2
## Test of the hypothesis that 3 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.06 
## 
## Fit based upon off diagonal values = 0.98
correlaciones_modelo<-variables_pca$coord
rotacion<-varimax(correlaciones_modelo[,1:numero_de_factores])
correlaciones_modelo_rotada<-rotacion$loadings

a) Los Ponderadores Normalizados para cada Factor

library(kableExtra)
cargas<-rotacion$loadings[1:8,1:numero_de_factores]
ponderadores<-prop.table(apply(cargas^2,MARGIN = 2,sum))
t(ponderadores) %>% kable(caption="Ponderadores de los Factores Extraídos",
        align = "c",
        digits = 3) %>% 
  kable_material(html_font = "sans-serif") %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Ponderadores de los Factores Extraídos
Dim.1 Dim.2 Dim.3
0.444 0.305 0.251

b) Las Variables Incluidas en Cada Factor

corrplot(correlaciones_modelo_rotada[,1:numero_de_factores],
         is.corr = FALSE,
         method = "square",
         addCoef.col="grey",
         number.cex = 0.75)

Factor 1: Agrupa las Variables X3, X4, X8

Factor 2: Agrupa X1, X2, X7

Factor 3: Agrupa X5, X6

Ejercicio 2

Metodo Critic

Para el Factor 1 Factor 1: Agrupa las Variables X3, X4, X8

library(dplyr)
library(kableExtra)
#data_normalizada
datos_normalizados[,c(3,4,8)] -> data_factor_1
head(data_factor_1)
##          X3        X4        X8
## 1 0.0400000 0.8000000 0.1582266
## 2 0.5500000 0.5000000 0.5167488
## 3 0.4000000 0.5000000 0.4679803
## 4 0.3142857 0.5714286 0.4133709
## 5 0.7000000 0.2500000 0.7339901
## 6 0.1600000 0.7000000 0.2551724
#Cálculo de las desviaciones estándar de cada variable

data_factor_1 %>% 
  summarise(S3=sd(X3),S4=sd(X4),S8=sd(X8))-> sd_vector
print(sd_vector)
##          S3        S4        S8
## 1 0.2462793 0.2011126 0.2087417
#Cálculo de la matriz de correlación de la agrupacion 

cor(data_factor_1)->mat_R_F1
print(mat_R_F1)
##            X3         X4         X8
## X3  1.0000000 -0.9387159  0.9590445
## X4 -0.9387159  1.0000000 -0.9958479
## X8  0.9590445 -0.9958479  1.0000000
#Cálculo de los ponderadores brutos
1-mat_R_F1->sum_data
colSums(sum_data)->sum_vector
sd_vector*sum_vector->vj
print(vj)
##         S3        S4        S8
## 1 0.487552 0.7912904 0.4251658
#Cálculo de los ponderadores netos

vj/sum(vj)->wj
names(wj)<- c("w_X3", "w_X4", "w_X8")
print(wj)
##        w_X3      w_X4      w_X8
## 1 0.2861207 0.4643701 0.2495092
#Ponderadores:
round(wj*100,2) %>%  
kable(caption = "Ponderadores normalizados de las variables correspondientes a la Agrupacion del factor 1",
        align = "c",
        digits = 2) %>%
  kable_material(html_font = "sans-serif",
                 lightable_options = c("hover", "striped")) %>%
  row_spec(0,
           bold = T,
           color = "white",
           background = "#7703EB")
Ponderadores normalizados de las variables correspondientes a la Agrupacion del factor 1
w_X3 w_X4 w_X8
28.61 46.44 24.95

Ejercicio 3

Metodo de Entropia

Factor 2: Agrupa X1, X2, X7

# Normalizamos los datso 
datos_parcial_2 %>% dplyr::select(X1,X2,X7)->data_factor_2
apply(data_factor_2,2,prop.table)->data_factor_2
head(data_factor_2)
##               X1           X2          X7
## [1,] 0.007812500 0.0007073386 0.001398601
## [2,] 0.008680556 0.0021220159 0.007692308
## [3,] 0.008680556 0.0070733864 0.011188811
## [4,] 0.006944444 0.0010610080 0.024475524
## [5,] 0.006076389 0.0024756852 0.005594406
## [6,] 0.005208333 0.0045977011 0.017482517
#Fórmula de entropía
entropy<-function(x){
  return(x*log(x))
}
apply(data_factor_2,2,entropy)->data_norm_2
head(data_norm_2)
##               X1           X2           X7
## [1,] -0.03790649 -0.005131035 -0.009192004
## [2,] -0.04120373 -0.013061833 -0.037442573
## [3,] -0.04120373 -0.035023278 -0.050269550
## [4,] -0.03451259 -0.007266351 -0.090806195
## [5,] -0.03100991 -0.014857176 -0.029012521
## [6,] -0.02738279 -0.024745742 -0.070743949
#Número de variables en el factor:
ncol(data_factor_2)->m
#Constante de entropía:
-1/log(m)->K
print(K)
## [1] -0.9102392
#Cálculo de las entropías
K*colSums(data_norm_2)->Ej
print(Ej)
##       X1       X2       X7 
## 4.180549 3.202899 3.701923
#Cálculo de las especificidades:
1-Ej->vj_2
print(vj_2)
##        X1        X2        X7 
## -3.180549 -2.202899 -2.701923
#Cálculo de los ponderadores:
prop.table(vj_2)->wj_2 
print(wj_2)
##        X1        X2        X7 
## 0.3933708 0.2724549 0.3341743
t(wj_2) %>% as.data.frame()->wj_2
 


round(wj_2*100,2) %>% 
    kable(caption = "Ponderadores de las Variables de la Agrupacion del Factor 2",
        align = "c",
        digits = 5) %>%
  kable_material(html_font = "sans-serif",
                 lightable_options = c("hover", "striped")) %>%
  row_spec(0,
           bold = T,
           color = "white",
           background = "#7703EB")
Ponderadores de las Variables de la Agrupacion del Factor 2
X1 X2 X7
39.34 27.25 33.42

Ejercicio 4

Metodos de Ranking

Factor 3: Agrupa X5, X6

rj_f3 <- c(1,2)

names(rj_f3)<-c("X5", "X6")
print(rj_f3)
## X5 X6 
##  1  2

Jerarquia de Suma

#Función para generar los pesos
ponderadores_subjetivos_rank_suma<-function(vector_jerarquias){
  n<-length(vector_jerarquias)
  vector_pesos<-n-vector_jerarquias+1
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_suma<-ponderadores_subjetivos_rank_suma(rj_f3)

#Pesos brutos
pesos_ranking_suma$w_brutos
## X5 X6 
##  2  1
#Pesos normalizados
pesos_ranking_suma$w_normalizados %>% round(digits = 3)
##    X5    X6 
## 0.667 0.333

Jerarquia reciproca

library(magrittr)

#Función para generar los pesos
ponderadores_subjetivos_rank_reciproco<-function(vector_jerarquias){
  vector_pesos<-1/vector_jerarquias
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_reciproco<-ponderadores_subjetivos_rank_reciproco(rj_f3)

#Pesos brutos
pesos_ranking_reciproco$w_brutos
##  X5  X6 
## 1.0 0.5
#Pesos normalizados
pesos_ranking_reciproco$w_normalizados %>% round(digits = 3)
##    X5    X6 
## 0.667 0.333

Jerarquia Exponencial

#Función para generar los pesos
ponderadores_subjetivos_rank_exponencial<-function(vector_jerarquias,p=2){
  n<-length(vector_jerarquias)
  vector_pesos<-(n-vector_jerarquias+1)^p
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_exponencial<-ponderadores_subjetivos_rank_exponencial(rj_f3)

#Pesos brutos
pesos_ranking_exponencial$w_brutos
## X5 X6 
##  4  1
#Pesos normalizados
pesos_ranking_exponencial$w_normalizados %>% round(digits = 3)
##  X5  X6 
## 0.8 0.2

Ponderadores por los tres metodos de ranking

pesos_ranking_suma$w_normalizados %>% 
  rbind(pesos_ranking_reciproco$w_normalizados) %>% 
  rbind(pesos_ranking_exponencial$w_normalizados) -> pesos_ranking
rownames(pesos_ranking)<- c("pesos_ranking_suma", "pesos_ranking_reciproco", "pesos_ranking_exponencial")
t(pesos_ranking) %>% as.data.frame()-> pesos_ranking
print(pesos_ranking)
##    pesos_ranking_suma pesos_ranking_reciproco pesos_ranking_exponencial
## X5          0.6666667               0.6666667                       0.8
## X6          0.3333333               0.3333333                       0.2

Ponderando cada metodo con la misma importancia relativa

# Promediamos los Ponderadores obtenidos por cada metdo de ranking 
pesos_ranking_suma$w_normalizados +pesos_ranking_reciproco$w_normalizados + pesos_ranking_exponencial$w_normalizados -> Ponderadores 
print(Ponderadores)
##        X5        X6 
## 2.1333333 0.8666667
# Ponderadores
prop.table(Ponderadores)* 100
##       X5       X6 
## 71.11111 28.88889

CLAVE B

Sección I (25%)

Carga de datos

load("C:/Users/Usuario/Desktop/ACTIVIDAD DEL 2 PARCIAL MAE/data_parcial_2_B_rev.RData")

Normalizacion de los Datos

library(dplyr)
library(tidyr)
library(kableExtra)
# Eliminando valores nulos
data_parcial_2 %>% replace_na(
  list(
    ALFABET = 0,
    INC_POB = 0,
    ESPVIDAF = 0,
    MORTINF = 0,
    FERTILID = 0,
    TASA_NAT = 0,
    LOG_PIB = 0,
    URBANA = 0,
    TASA_MOR = 0
  )
) -> data_parcial_2

# Seleccionando los datos
data_parcial_2 %>% select(
  "ALFABET",
  "INC_POB",
  "ESPVIDAF",
  "FERTILID",
  "TASA_NAT",
  "LOG_PIB",
  "URBANA",
  "TASA_MOR",
  "MORTINF"
) -> matriz_X
library(dplyr)
library(tidyr)
norm_directa <- function(x) {
  (x - min(x)) / (max(x) - min(x))
}
norm_inversa <- function(x) {
  (max(x) - x) / (max(x) - min(x))
}

matriz_X %>% select(
  "ALFABET",
  "INC_POB",
  "ESPVIDAF",
  "FERTILID",
  "TASA_NAT",
  "LOG_PIB",
  "URBANA",
  "TASA_MOR"
) %>%
  apply(MARGIN = 2, FUN = norm_directa) %>% as.data.frame() -> variables_corr_positiva
#Seleccionando las variables con correlación negativa para la Salud Financiera
matriz_X %>%
  select("MORTINF") %>%
  apply(MARGIN = 2, FUN = norm_inversa) %>% as.data.frame() -> variables_corr_negativa
#Juntando y reordenando las variables
variables_corr_positiva %>%
  bind_cols(variables_corr_negativa) %>%
  select(
    "ALFABET",
    "INC_POB",
    "ESPVIDAF",
    "FERTILID",
    "TASA_NAT",
    "LOG_PIB",
    "URBANA",
    "TASA_MOR",
    "MORTINF"
  ) -> datos_normalizados

head(datos_normalizados)
##   ALFABET   INC_POB   ESPVIDAF  FERTILID   TASA_NAT    LOG_PIB URBANA  TASA_MOR
## 1    0.98 0.3068592 0.82051282 0.3418803 0.30232558 0.60885423   0.54 0.2916667
## 2    0.29 0.5595668 0.02564103 0.8424908 1.00000000 0.09867408   0.18 0.9166667
## 3    0.99 0.1191336 0.92307692 0.1794872 0.02325581 0.94458420   0.85 0.4583333
## 4    0.62 0.6317690 0.69230769 0.8144078 0.65116279 0.76022519   0.77 0.2500000
## 5    0.95 0.2888087 0.82051282 0.3418803 0.23255814 0.63309802   0.86 0.3750000
## 6    0.98 0.3068592 0.82051282 0.3894994 0.30232558 0.70597624   0.68 0.2500000
##     MORTINF
## 1 0.8109756
## 2 0.0000000
## 3 0.9847561
## 4 0.7073171
## 5 0.8682927
## 6 0.8597561

ANALISIS FACTORIAL

1.1) Usando Análisis Factorial determine cuántos factores deberían retenerse.

library(FactoMineR)
library(factoextra)
library(kableExtra)
#Matriz de Correlacion
Rx <- cor(datos_normalizados)
#Componentes principales
PC <- princomp(x = datos_normalizados, cor = TRUE, fix_sign = FALSE)
variables_pca <- get_pca_var(PC)
factoextra::get_eig(PC) %>% kable(caption = "Resumen de PCA",
                                  align = "c",
                                  digits = 3) %>%
  kable_material(html_font = "sans-serif") %>%
  kable_styling(bootstrap_options = c("hover"))
Resumen de PCA
eigenvalue variance.percent cumulative.variance.percent
Dim.1 6.447 71.633 71.633
Dim.2 1.242 13.805 85.438
Dim.3 0.556 6.181 91.619
Dim.4 0.392 4.359 95.978
Dim.5 0.181 2.014 97.993
Dim.6 0.078 0.862 98.855
Dim.7 0.057 0.636 99.491
Dim.8 0.029 0.322 99.813
Dim.9 0.017 0.187 100.000
fviz_eig(
  PC,
  choice = "eigenvalue",
  barcolor = "red",
  barfill = "red",
  addlabels = TRUE,
) + labs(title = "Gráfico de Sedimentación", subtitle = "Usando princomp, con Autovalores") +
  xlab(label = "Componentes") +
  ylab(label = "Autovalores") + geom_hline(yintercept = 1)

1.2) ¿Qué variables quedan representadas en cada factor?

library(dplyr)
library(corrplot)
numero_de_factores<-2
correlaciones_modelo <- variables_pca$coord
rotacion <- varimax(correlaciones_modelo[, 1:numero_de_factores])
correlaciones_modelo_rotada <- rotacion$loadings

corrplot(
  correlaciones_modelo_rotada[, 1:numero_de_factores],
  is.corr = FALSE,
  method = "square",
  addCoef.col = "grey",
  number.cex = 0.75
)

1.3) Determine qué pesos deben asignarse a cada factor y a las variables dentro de cada uno de ellos.

library(kableExtra)
numero_de_factores<-2
# Ponderador para cada factor
cargas <- rotacion$loadings[1:9, 1:numero_de_factores]
ponderadores <- prop.table(apply(cargas ^ 2, MARGIN = 2, sum))
t(ponderadores) %>% kable(caption = "Ponderadores de los Factores Extraídos",
                          align = "c",
                          digits = 2) %>%
  kable_material(html_font = "sans-serif") %>%
  kable_styling(bootstrap_options = c("striped", "hover"))
Ponderadores de los Factores Extraídos
Dim.1 Dim.2
0.57 0.43
# Peso de las variables
contribuciones <- apply(cargas ^ 2, MARGIN = 2, prop.table)
contribuciones %>% kable(caption = "Contribución de las variables en los Factores",
                         align = "c",
                         digits = 2) %>%
  kable_material(html_font = "sans-serif") %>%
  kable_styling(bootstrap_options = c("striped", "hover"))
Contribución de las variables en los Factores
Dim.1 Dim.2
ALFABET 0.11 0.08
INC_POB 0.22 0.00
ESPVIDAF 0.09 0.17
FERTILID 0.17 0.05
TASA_NAT 0.19 0.05
LOG_PIB 0.09 0.10
URBANA 0.04 0.15
TASA_MOR 0.00 0.25
MORTINF 0.10 0.15

Sección II (75%)

Ejercicio 1 [40%]

Calcule los pesos normalizados, de las variables, usando los métodos de ranking directo, por suma, por reciproco y por ranking exponencial (use p=4)

Jerarquia de Suma

library(magrittr)
#Vector de Jerarquías
rj<-c(3,4,2,1)
names(rj)<-c("X1","X2","X3","X4")

#Función para generar los pesos
ponderadores_subjetivos_rank_suma<-function(vector_jerarquias){
  n<-length(vector_jerarquias)
  vector_pesos<-n-vector_jerarquias+1
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_suma<-ponderadores_subjetivos_rank_suma(rj)

#Pesos normalizados
pesos_ranking_suma$w_normalizados %>% round(digits = 3)
##  X1  X2  X3  X4 
## 0.2 0.1 0.3 0.4
#Gráfico de los pesos normalizados
barplot(pesos_ranking_suma$w_normalizados,
        main = "Ponderadores Ranking de Suma",
        ylim = c(0,0.5),col = "red")

Jerarquia Reciproca

library(magrittr)
#Vector de Jerarquías
rj<-c(3,4,2,1)
names(rj)<-c("X1","X2","X3","X4")

#Función para generar los pesos
ponderadores_subjetivos_rank_reciproco<-function(vector_jerarquias){
  vector_pesos<-1/vector_jerarquias
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_reciproco<-ponderadores_subjetivos_rank_reciproco(rj)

#Pesos normalizados
pesos_ranking_reciproco$w_normalizados %>% round(digits = 3)
##   X1   X2   X3   X4 
## 0.16 0.12 0.24 0.48
#Gráfico de los pesos normalizados
barplot(pesos_ranking_reciproco$w_normalizados,
        main = "Ponderadores Ranking Recíproco",
        ylim = c(0,0.6),col = "green")

Jerarquia Exponencial

library(magrittr)
#Vector de Jerarquías
rj<-c(3,4,2,1)
names(rj)<-c("X1","X2","X3","X4")


#Función para generar los pesos
ponderadores_subjetivos_rank_exponencial<-function(vector_jerarquias,p=4){
  n<-length(vector_jerarquias)
  vector_pesos<-(n-vector_jerarquias+1)^p
  list(w_brutos=vector_pesos,w_normalizados=vector_pesos/sum(vector_pesos))
}
#Aplicando la función:
pesos_ranking_exponencial<-ponderadores_subjetivos_rank_exponencial(rj)

#Pesos normalizados
pesos_ranking_exponencial$w_normalizados %>% round(digits = 3)
##    X1    X2    X3    X4 
## 0.045 0.003 0.229 0.723
#Gráfico de los pesos normalizados (por default p=2)
barplot(pesos_ranking_exponencial$w_normalizados,
        main = "Ponderadores Ranking Exponencial",
        ylim = c(0,0.9),col = "coral")

Ejercicio 2[35%]

Usando la técnica de comparación por pares, calcule los pesos normalizados para las variables:

library(FuzzyAHP)
#Experto 1
valores_matriz_comparacion = c(1, 7, 4, 5,
                               NA, 1, 6, 3,
                               NA, NA, 1, 2,
                               NA, NA, NA, 1)
matriz_comparacion <- matrix(
  valores_matriz_comparacion,
  nrow = 4,
  ncol = 4,
  byrow = TRUE
)
matriz_comparacion <- pairwiseComparisonMatrix(matriz_comparacion)
matriz_comparacion@variableNames <- c("price", "slope", "view")
show(matriz_comparacion)
## An object of class "PairwiseComparisonMatrix"
## Slot "valuesChar":
##      [,1]  [,2]  [,3]  [,4]
## [1,] "1"   "7"   "4"   "5" 
## [2,] "1/7" "1"   "6"   "3" 
## [3,] "1/4" "1/6" "1"   "2" 
## [4,] "1/5" "1/3" "1/2" "1" 
## 
## Slot "values":
##           [,1]      [,2] [,3] [,4]
## [1,] 1.0000000 7.0000000  4.0    5
## [2,] 0.1428571 1.0000000  6.0    3
## [3,] 0.2500000 0.1666667  1.0    2
## [4,] 0.2000000 0.3333333  0.5    1
## 
## Slot "variableNames":
## [1] "price" "slope" "view"
# Cálculo de los pesos:
pesos_normalizados1 = calculateWeights(matriz_comparacion)
show(pesos_normalizados1)
## An object of class "Weights"
## Slot "weights":
##    w_price    w_slope     w_view       w_NA 
## 0.60659194 0.22331004 0.09474784 0.07535018
library(FuzzyAHP)
#Experto 2
valores_matriz_comparacion = c(1, 7, 6, 3,
                               NA, 1, 5, 2,
                               NA, NA, 1, 4,
                               NA, NA, NA, 1)
matriz_comparacion <- matrix(
  valores_matriz_comparacion,
  nrow = 4,
  ncol = 4,
  byrow = TRUE
)
matriz_comparacion <- pairwiseComparisonMatrix(matriz_comparacion)
matriz_comparacion@variableNames <- c("price", "slope", "view")
show(matriz_comparacion)
## An object of class "PairwiseComparisonMatrix"
## Slot "valuesChar":
##      [,1]  [,2]  [,3]  [,4]
## [1,] "1"   "7"   "6"   "3" 
## [2,] "1/7" "1"   "5"   "2" 
## [3,] "1/6" "1/5" "1"   "4" 
## [4,] "1/3" "1/2" "1/4" "1" 
## 
## Slot "values":
##           [,1] [,2] [,3] [,4]
## [1,] 1.0000000  7.0 6.00    3
## [2,] 0.1428571  1.0 5.00    2
## [3,] 0.1666667  0.2 1.00    4
## [4,] 0.3333333  0.5 0.25    1
## 
## Slot "variableNames":
## [1] "price" "slope" "view"
# Cálculo de los pesos:
pesos_normalizados2 = calculateWeights(matriz_comparacion)
show(pesos_normalizados2)
## An object of class "Weights"
## Slot "weights":
##    w_price    w_slope     w_view       w_NA 
## 0.60919010 0.19878595 0.10987399 0.08214997
library(FuzzyAHP)
valores_matriz_comparacion = c(1, 7, 5, 4,
                               NA, 1, 3, 2,
                               NA, NA, 1, 6,
                               NA, NA, NA, 1)
matriz_comparacion <- matrix(
  valores_matriz_comparacion,
  nrow = 4,
  ncol = 4,
  byrow = TRUE
)
matriz_comparacion <- pairwiseComparisonMatrix(matriz_comparacion)
matriz_comparacion@variableNames <- c("price", "slope", "view")
show(matriz_comparacion)
## An object of class "PairwiseComparisonMatrix"
## Slot "valuesChar":
##      [,1]  [,2]  [,3]  [,4]
## [1,] "1"   "7"   "5"   "4" 
## [2,] "1/7" "1"   "3"   "2" 
## [3,] "1/5" "1/3" "1"   "6" 
## [4,] "1/4" "1/2" "1/6" "1" 
## 
## Slot "values":
##           [,1]      [,2]      [,3] [,4]
## [1,] 1.0000000 7.0000000 5.0000000    4
## [2,] 0.1428571 1.0000000 3.0000000    2
## [3,] 0.2000000 0.3333333 1.0000000    6
## [4,] 0.2500000 0.5000000 0.1666667    1
## 
## Slot "variableNames":
## [1] "price" "slope" "view"
# Cálculo de los pesos:
pesos_normalizados3 = calculateWeights(matriz_comparacion)
show(pesos_normalizados3)
## An object of class "Weights"
## Slot "weights":
##    w_price    w_slope     w_view       w_NA 
## 0.61676222 0.17252382 0.14259384 0.06812013

2.1) Considerando que todos los expertos tienen la misma ponderacion en su opinion

library(kableExtra)
ponderacion_expertos <-1/3

pesos_totales<-(pesos_normalizados1@weights+pesos_normalizados2@weights+
              pesos_normalizados3@weights)

promedio_total<-ponderacion_expertos*pesos_totales
show(promedio_total)
##    w_price    w_slope     w_view       w_NA 
## 0.61084809 0.19820660 0.11573855 0.07520676
sum(promedio_total)
## [1] 1
normalizacion_1<-promedio_total/sum(promedio_total)
show(normalizacion_1)
##    w_price    w_slope     w_view       w_NA 
## 0.61084809 0.19820660 0.11573855 0.07520676

2.2) Si el experto 1 se pondera con 0.25, el experto 2 con 0.35 y el experto 3 con 0.4

ponderaciones<-(pesos_normalizados1@weights*0.25)+(pesos_normalizados2@weights*0.35)+(pesos_normalizados3@weights*0.4)

show(ponderaciones)
##    w_price    w_slope     w_view       w_NA 
## 0.61156941 0.19441212 0.11918039 0.07483808
sum(ponderaciones)
## [1] 1
normalizacion_2<-ponderaciones/sum(ponderaciones)
show(normalizacion_2)
##    w_price    w_slope     w_view       w_NA 
## 0.61156941 0.19441212 0.11918039 0.07483808