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
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"))
| 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"))
| 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")
| 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")
| 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"))
| 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"))
| 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"))
| 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