Vamos a ver como utilizar con R un conjunto de funciones que nos permiten hacer evaluación multicriterio con datos espaciales desde R. Las funciones son:
library(alonsaRp)
Creamos la matriz de alternativas que contiene 4 alternativas para 3 criterios (pendiente, distancia a un espacio natural y distancia a una carretera en kilómetros:
variables <-data.frame(cbind(c(18, 10, 14, 8), c(4, 8, 2, 3), c(22, 28, 18, 30))) names(variables) <- c("Pendiente", "Espacio", "Carretera")
date cuenta de que la orden {\tt cbind} "pega" columnas para formar una matriz.
La función EMC_var2crit permite convertir variables en criterios pasándole un vector con los valores de la variable, y otro con los valores del criterio, correspondientes a un gráfico que relaciona ambos como los siguientes.
par(mfrow=c(1,3)) plot(c(0,20,90),c(100,0,0), type="l", xlab="Pendiente (grados)",ylab="Criterio de pendiente", cex.axis=1.4,cex.lab=1.4) plot(c(0,10,50),c(0,100,100), type="l", xlab="Distancia a espacio natural", ylab="Criterio de distancia a espacio", cex.axis=1.4,cex.lab=1.4) plot(c(0,32,50),c(100,0,0), type="l", xlab="Distancia a carretera (km)",ylab="Criterio de distancia a carretera", cex.axis=1.4,cex.lab=1.4)
En cada caso puedes ver cuales son los puntos de inflexión. Vamos a crear un data.frame para los criterios copiándolo del de las variables
criterios <- variables criterios[,1] <-EMC_var2crit(variables[,1], var=c(0,20,100), cri=c(100,0,0)) criterios[,2] <-EMC_var2crit(variables[,2], var=c(0,10,100), cri=c(0,100,0)) criterios[,3] <-EMC_var2crit(variables[,3], var=c(0,32,100), cri=c(100,0,0)) variables criterios
Vamos a obtener los pesos por el método de clasificación:
pesos1 <- EMC_pesos_criterios(names(criterios)) pesos1
tasación simple a partir de un vector que mide al importancia de los diferentes criterios:
pesos2 <- EMC_pesos_criterios(names(criterios), importancia=c(100,50,40)) pesos2
y jerarquía analítica a partir de la matriz de comparación por pares:
mcp <- rbind(c(1,3,7), c(1/3,1,5), c(1/7,1/5,1)) mcp pesos3 <- EMC_pesos_criterios(names(criterios), matriz=mcp) pesos3
Con estos resultados ya podemos obtener la adecuación para cada alternativa con combinación lineal. Vamos a utilizar los pesos obtenidos con el procedimiento de jerarquía analítica. Como la función correspondiente devuelve varias cosas, es necesario especificar cual de ellas contiene los pesos:
EMC_combinacion(criterios, w=pesos3$w)
A continuación obtenemos la adecuación mediante técnicas basadas en la distancia al punto ideal:
EMC_topsis(criterios, w=pesos3$w)
Para hacer algo similar con capas raster deberás cargar las capas de las variables con la función raster
de la librería raster
desde ficheros GeoTiff o Img. Una vez que las tengas, deberás pasarlas a un objeto SpatialGridDataFrame
llamado capas
.
El slot
data
del objeto capas
será un data.frame
similar a variables
, aunque con muchas más filas, con el que puedes calcular la adecuación.
Para añadir los resultados de adecuación a capas
basta con que escribas, por ejemplo:
capas$adecuacion <- EMC_combinacion(criterios, w=pesos3$w)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.