1. Jerarquia de Suma

library(magrittr)
#Vector de jerarquia
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")

#Funcion para generar los pesos
ponderadores_subjetivos_rank_suma<-function(vector_jerarquias){
  n<-length(vector_jerarquias)
  vector_peso<-n-vector_jerarquias+1
  list(w_brutos=vector_peso,w_normalizados=vector_peso/sum(vector_peso))
}
#Aplicando la funcion 
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
#Grafico de los pesos normalizados
barplot(pesos_ranking_suma$w_normalizados,
        main = "Ponderadores Ranking de Suma",
        ylim = c(0,0.5),col = "blue")

2. Jerarquia Reciproca

library(magrittr)
#Vector de Jerarquias 
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")
#Funcion ara 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 funcionn 
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 Reciproco",
        ylim = c(0,0.5),col = "yellow")

3. Jerarquia Exponencial

library(magrittr)
#Vector de Jerarquias
rj<-c(4,2,5,1,3)
names(rj)<-c("X1","X2","X3","X4","X5")

#Funcion 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 funcion:
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
#Grafico 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")

#Comparacion 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)
}