Se fundamentan en la asignación de jerarquía en las variables, esto con base en el criterio del investigador, fundamentado lo mejor que se pueda en evidencias lógicas de la teoría o de la experiencia derivada de otras investigaciones similares.
Supongase que hay 5 variables: X1, X2,X3,X4,X5 y se asígna el siguiente ranking:
| Variables | X1 | X2 | X3 | X4 | X5 |
|---|---|---|---|---|---|
| Ranking (Jerarquía) | 4 | 2 | 5 | 1 | 3 |
El peso (bruto) se asigna mediante la expresión: \[w_{j}=n-r_j+1 \] y los pesos normalizados mediante: \[ \bar{w}_j=\frac{w_j}{\sum{w_j}}\]
library(magrittr)
#Vector de Jerarquías
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")
#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 brutos
pesos_ranking_suma$w_brutos## X1 X2 X3 X4 X5
## 2 4 1 5 3
#Pesos normalizados
pesos_ranking_suma$w_normalizados %>% round(digits = 3)## X1 X2 X3 X4 X5
## 0.133 0.267 0.067 0.333 0.200
#Gráfico de los pesos normalizados
barplot(pesos_ranking_suma$w_normalizados,
main = "Ponderadores Ranking de Suma",
ylim = c(0,0.5),col = "red")El peso (bruto) se asigna mediante la expresión: \[w_{j}=1/r_j\] y los pesos normalizados mediante: \[ \bar{w}_j=\frac{w_j}{\sum{w_j}}\]
library(magrittr)
#Vector de Jerarquías
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")
#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 brutos
pesos_ranking_reciproco$w_brutos## X1 X2 X3 X4 X5
## 0.2500000 0.5000000 0.2000000 1.0000000 0.3333333
#Pesos normalizados
pesos_ranking_reciproco$w_normalizados %>% round(digits = 3)## X1 X2 X3 X4 X5
## 0.109 0.219 0.088 0.438 0.146
#Gráfico de los pesos normalizados
barplot(pesos_ranking_reciproco$w_normalizados,
main = "Ponderadores Ranking Recíproco",
ylim = c(0,0.5),col = "green")El peso (bruto) se asigna mediante la expresión: \[w_{j}=(n-r_j+1)^p \] y los pesos normalizados mediante: \[ \bar{w}_j=\frac{w_j}{\sum{w_j}}\]
library(magrittr)
#Vector de Jerarquías
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")
#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)
#Pesos brutos
pesos_ranking_exponencial$w_brutos## X1 X2 X3 X4 X5
## 4 16 1 25 9
#Pesos normalizados
pesos_ranking_exponencial$w_normalizados %>% round(digits = 3)## X1 X2 X3 X4 X5
## 0.073 0.291 0.018 0.455 0.164
#Gráfico de los pesos normalizados (por default p=2)
barplot(pesos_ranking_suma$w_normalizados,
main = "Ponderadores Ranking Exponencial",
ylim = c(0,0.5),col = "coral")#Comparación de valores de "p"
par(mfrow=c(1,3))
for(p in 2:4){
pesos<-ponderadores_subjetivos_rank_exponencial(vector_jerarquias = rj,p = p)
barplot(pesos$w_normalizados,main = paste0("p=",p),ylim = c(0,0.7),col = "coral",cex.main=3,cex.axis = 3)
}En este caso la obtención de los pesos se logrará asignando importancia relativa a pares de variables, para el ejemplo se utilizarán 3 variables price, slope y view.
referencia del paquete “FuzzyAHP”
library(FuzzyAHP)## Loading required package: MASS
valores_matriz_comparacion = c(1,4,7,
NA,1,5,
NA,NA,1)
matriz_comparacion<-matrix(valores_matriz_comparacion,
nrow = 3, ncol = 3, 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]
## [1,] "1" "4" "7"
## [2,] "1/4" "1" "5"
## [3,] "1/7" "1/5" "1"
##
## Slot "values":
## [,1] [,2] [,3]
## [1,] 1.0000000 4.0 7
## [2,] 0.2500000 1.0 5
## [3,] 0.1428571 0.2 1
##
## Slot "variableNames":
## [1] "price" "slope" "view"
# Cálculo de los pesos:
pesos_normalizados = calculateWeights(matriz_comparacion)
show(pesos_normalizados)## An object of class "Weights"
## Slot "weights":
## w_price w_slope w_view
## 0.68708616 0.24374097 0.06917288
barplot(pesos_normalizados@weights,
main = "Ponderadores por comparación de pares",
ylim = c(0,0.7),col = "blue")