1 Preparar sesión de trabajo.

1.1 Limpiar entorno de trabajo.

Limpiar la consola de variables

rm(list=ls())
cat("\014")

1.2 Definir directorios.

Defininr el directorio donde obtendremos y dejaremos los archivos generados

ruta_proyecto <- dirname(getwd())
ruta_clase_01 <- file.path(ruta_proyecto, "Clase_01_GEE")
ruta_clase_02 <- file.path(ruta_proyecto, "Clase_02_R")
ruta_clase_03 <- file.path(ruta_proyecto, "Clase_03_Modelamiento")
ruta_clase_04 <- file.path(ruta_proyecto, "Clase_04_Maxent")
ruta_clase_05 <- file.path(ruta_proyecto, "Clase_05_Metricas")
ruta_clase_06 <- file.path(ruta_proyecto, "Clase_06_amc")
ruta_datos    <- file.path(ruta_proyecto, "datos")

1.3 Instalar paquetes.

OBJETIVO: Cargar los paquetes necesarios para desarrollar este práctico Si no tienen los paquetes, deben buscarlos en la consola de abajo a la derecha (opción packages) y bajarlos

if(!require(rgdal)) suppressMessages( suppressWarnings( install.packages("rgdal") ))
if(!require(sp)) suppressMessages( suppressWarnings( install.packages("sp") ))
if(!require(raster)) suppressMessages( suppressWarnings( install.packages("raster") ))
if(!require(rJava)) suppressMessages( suppressWarnings( install.packages("rJava") ))
if(!require(dismo)) suppressMessages( suppressWarnings( install.packages("dismo") ))

Encontramos que la versión de la función maxent del paquete dismo tarda demasiado y no reconoce la opción caching, de manera que siempre se vuelve a generar. Probaremos con una nueva versión del autor que hizo para MaxEnt usando la regresión regularizada mixnet del paquete glmnet, lo que se encuentra disponible con un nombre similar, llamado maxnet en CRAN.

if(!require(maxnet)) suppressMessages( suppressWarnings( install.packages("maxnet") ))
## Loading required package: maxnet

2 Manipulación de datos.

2.1 CARGAR Y REVISAR LOS PUNTOS DE MUESTRA

OJO!!!

Este modelo es para """Abierto""" (reemplazar este campo en Edit -> Find, Replace: "Abierto" por "Cobertura a Modelar")

OBJETIVO:

  • Cargar los puntos que representen el tipo de cobertura de suelo a clasificar Estos puntos originalmente están tabulados en una tabla en formato .csv con tres columnas: Tipo de cobertura, Longitud y Latitud.
  • Las coordenadas geográfica de Longitud(x) y Latitud(y) deben estar proyectadas en formato esférico WGS84 (EPSG:4326).

Cargar los datos desde archivo csv.

Abierto <- read.csv(file.path(ruta_clase_04,"Práctico_Maxent/Puntos/Puntos_Abierto.csv"),
                    header = TRUE, sep = ',')

Revisar la tabla que acabamos de cargar

head(Abierto,10)
##       Name       LON       LAT
## 1  Abierto -71.47224 -33.16257
## 2  Abierto -71.48326 -33.16397
## 3  Abierto -71.48728 -33.16842
## 4  Abierto -71.49877 -33.17026
## 5  Abierto -71.50290 -33.16970
## 6  Abierto -71.51561 -33.15453
## 7  Abierto -71.52032 -33.15292
## 8  Abierto -71.51601 -33.13458
## 9  Abierto -71.51755 -33.12604
## 10 Abierto -71.50676 -33.12219

Sin embargo, en R los puntos deben estar sólo como coordenas x,y en dos columnas.

Puntos_Abierto <- Abierto[,-1]
head(Puntos_Abierto,10)
##          LON       LAT
## 1  -71.47224 -33.16257
## 2  -71.48326 -33.16397
## 3  -71.48728 -33.16842
## 4  -71.49877 -33.17026
## 5  -71.50290 -33.16970
## 6  -71.51561 -33.15453
## 7  -71.52032 -33.15292
## 8  -71.51601 -33.13458
## 9  -71.51755 -33.12604
## 10 -71.50676 -33.12219

OBJETIVO:

  • Revisar nuestros puntos en un mapa (esto no es necesario, pero es útil)
Mapa_Region_Valparaiso <- readOGR(dsn=file.path(ruta_clase_04,"Práctico_Maxent/Shape_Valparaiso"),
                                  layer= "Región_de_Valparaíso", verbose=FALSE) #cargar el mapa que tenemos en la carpeta
Area_de_Estudio <- readOGR(dsn=file.path(ruta_clase_04,"Práctico_Maxent/Área_de_Estudio"),
                           layer= "Area_Estudio", verbose=FALSE) #para cargar el área de estudio
plot(Mapa_Region_Valparaiso, axes=TRUE, col="light blue") #para visualizar el mapa
lines(Area_de_Estudio, col="red", lwd=3) #para visualizar el área de estudio
points(Puntos_Abierto, col='red', pch=1, cex=0.8, lwd=1) #pch: forma del símbolo; cex: tamaño símbolo; lwd: ancho de línea

ADICIONAL:

  • Podemos hacer un mapa centrado en la zona donde están los puntos
plot(Mapa_Region_Valparaiso, xlim=c(-72,-71),ylim=c(-33.4,-33), axes=TRUE, col="yellow")
lines(Area_de_Estudio, col="red", lwd=1) #Esto es para cargar el polígono del área de estudio
points(Puntos_Abierto, col='blue', pch=4, cex=1, lwd=0.5) #pch: forma del símbolo; cex: tamaño símbolo; lwd: ancho de línea
box() #Esto es para ponerle un borde de caja al mapa, es sólo para visualización

2.2 CARGAR Y REVISAR LAS CAPAS RASTER

OBJETIVO:

  • Cargar los archivos raster que utilizaremos para generar la clasificación
Buscar_Rasters <- list.files(path=file.path(ruta_clase_04,"Práctico_Maxent/Imágenes"),
                             pattern='B\\d.tif|ndvi.tif$', all.files = TRUE, full.names = TRUE)
print(Buscar_Rasters) #para ver los rasters que se identificaron en la carpeta
## [1] "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/B2.tif"   "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/B3.tif"  
## [3] "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/B4.tif"   "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/B5.tif"  
## [5] "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/B6.tif"   "/home/matbox/Documents/TrabajosExtra/nelson.mattie/Taller_GEE_R/Clase_04_Maxent/Práctico_Maxent/Imágenes/ndvi.tif"
Capas_Raster <- stack(Buscar_Rasters) #apilar los rasters en un sólo raster multibanda
list(Capas_Raster) #para ver las características de los rasters apilados
## [[1]]
## class      : RasterStack 
## dimensions : 941, 1121, 1054861, 6  (nrow, ncol, ncell, nlayers)
## resolution : 0.0002694946, 0.0002694946  (x, y)
## extent     : -71.59339, -71.29129, -33.35022, -33.09663  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
## names      :        B2,        B3,        B4,        B5,        B6,       ndvi 
## min values :         ?,         ?,         ?,         ?,         ?, -0.3210981 
## max values :         ?,         ?,         ?,         ?,         ?,  0.8064534
plot(Capas_Raster) #para visualzar las distintas bandas que se encuentran dentro del raster apilado

También podemos hacer un mapa específico para cada una de las bandas, por ejemplo

plot(Capas_Raster, 3)
plot(Mapa_Region_Valparaiso, add=TRUE) #Con este comando añadimos el mapa vectorial sobre el raster
points(Puntos_Abierto) #Con este comando añadimos los puntos sobre el mapa

2.3 GENERAR EL MODELO Y TESTEARLO

OBJETIVO:

  • Generar un set de datos para entrenar el modelo y otro para testearlo Para ello vamos a dividir nuestros puntos de Abierto en 80% para entrenamiento y 20% para el testeo
#lazyLoad("sesion04_nelson_mattie_cache/latex/bloque_0010_a1e362bc30fab03c52688de7e7f397a9")
Grupo <- kfold(Puntos_Abierto,k=5) #esto separa los puntos en 5 grupos, con números que van de 1 al 5
Datos_Entrenamiento <- Puntos_Abierto[Grupo != 1,] #Selecciona aquellos datos que no pertenecen al grupo 1
Datos_Testeo <- Puntos_Abierto[Grupo == 1,] #Selecciona aquellos datos que sí pertenecen al grupo 1
head(Datos_Entrenamiento,10)
##          LON       LAT
## 1  -71.47224 -33.16257
## 2  -71.48326 -33.16397
## 3  -71.48728 -33.16842
## 6  -71.51561 -33.15453
## 7  -71.52032 -33.15292
## 8  -71.51601 -33.13458
## 9  -71.51755 -33.12604
## 10 -71.50676 -33.12219
## 11 -71.49881 -33.12106
## 13 -71.53380 -33.13260
head(Datos_Testeo,10)
##          LON       LAT
## 4  -71.49877 -33.17026
## 5  -71.50290 -33.16970
## 12 -71.49337 -33.13023
## 15 -71.55527 -33.16281
## 19 -71.53661 -33.18299
## 27 -71.43839 -33.26018
## 36 -71.40623 -33.32967
## 40 -71.32681 -33.24259
## 48 -71.34340 -33.14967
## 50 -71.36456 -33.12565
table(Grupo)
## Grupo
##  1  2  3  4  5 
## 10 10 10 10 10
str(Grupo)
##  int [1:50] 3 4 4 1 1 5 5 3 3 4 ...
str(Puntos_Abierto)
## 'data.frame':    50 obs. of  2 variables:
##  $ LON: num  -71.5 -71.5 -71.5 -71.5 -71.5 ...
##  $ LAT: num  -33.2 -33.2 -33.2 -33.2 -33.2 ...

OBJETIVO:

  • Generar un modelo mediante el algorítmo MaxEnt disponible en el paquete Dismo en R.

Modelo generado en base a 2000 puntos de "background".

Modelo <- dismo::maxent(Capas_Raster, Datos_Entrenamiento, nbg=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Modelo"), silent=FALSE)
## This is MaxEnt version 3.4.1
### show(Modelo) #Abre los resultados del modelo en un navegador web, en formato .html
plot(Modelo) #Genera un gráfico con la contribución relativa de cada una de las variables predictoras

Producir una clasificación en base al modelo generado.

#lazyLoad("sesion04_nelson_mattie_cache/latex/predict_modelo_e045c9c3f5806a12dbb12de1d7c4757d")
Clasificacion <- dismo::predict(Modelo,Capas_Raster, silent=FALSE)
## This is MaxEnt version 3.4.1

Para visualizar el modelo generado. OJO que Maxent genera un modelo probabilístico, no binario.

plot(Clasificacion)

Guardar la capa de clasificación en un directorio

if(!file.exists(file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion")))
{ dir.create(file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion")) }
writeRaster(Clasificacion,
            file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/Abierto_MaxEnt.tif"),
            overwrite=TRUE)

OBJETIVO:

  • Evaluar la calidad "estadísitica" del modelo generado

Generar 1000 puntos de background para evaluar el modelo.

#lazyLoad("sesion04_nelson_mattie_cache/latex/bloque_0012_20eb3e0b338d203d567c7058d7c5a480")
Pts_Background_Testeo <- randomPoints(Capas_Raster, 1000)

Para evaluar el modelo

Evaluacion <- evaluate(Modelo, p=Datos_Testeo, a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1

Podemos gráficar el "Receiver Opreation Curve" y visualizar el AUC

plot(Evaluacion, 'ROC')

Este comado nos sirve para visualizar la estructura y contenido del resultado

### str(Evaluacion)

Algunos ejemplos de información que se puede obtener de la tabla de resultados para generar mapas binarios Evaluación en base al estadísitico kappa

plot(Evaluacion@t,Evaluacion@kappa, type="l") #Esto nos serviría para evaluar el valor del "threshold" para optimizar kappa

MaxKappa <- Evaluacion@t[which.max(Evaluacion@kappa)] #Con este comando podemos obtener el valor de threshold que maximiza kappa
plot(Clasificacion > MaxKappa, main = "Binary Kappa") #Generación de un modelo binario en función de Kappa"

print(MaxKappa)
## [1] 0.7393394

Evaluación en base al estadísitico True Skill Statistics (TSS)

TSS <- Evaluacion@TPR+(Evaluacion@TNR-1) #Con este comando generamos el TSS
plot(Evaluacion@t,TSS, type='l') #Esto nos serviría para evaluar el valor del "threshold" para optimizar el TSS

MaxTSS <- Evaluacion@t[which.max(TSS)] #Con este comando podemos obtener el valor de threshold que maximiza el TSS
plot(Clasificacion > MaxTSS, main = "Binary TSS") #Generación de un modelo binario en función de TSS"

print(MaxTSS)
## [1] 0.2456064

Usaremos cada valor de corte para generar una nueva imagen que contenga valores enteros por cada categoría que puedan ser necesarios más adelante. Primero usamos el valor de corte MaxKappa.

reclassfunMKappa <- function(x) {
ifelse(x <= MaxKappa, 0,
ifelse(x > MaxKappa, 1, NA)) }
Clasificacion_reclass_maxkappa <- calc(Clasificacion, fun=reclassfunMKappa)
plot(Clasificacion_reclass_maxkappa)

unique(Clasificacion_reclass_maxkappa)
## [1] 0 1
writeRaster(Clasificacion_reclass_maxkappa,
            file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/Abierto_reclass_maxkappa.tif"),
            overwrite=TRUE)

El gráfico anterior es idéntico al mostrado usando el valor de corte inicial con la salvedad de que esta imagen solamente contiene valores enteros 0 y 1. En ese sentido el rango mostrado en la leyenda del gráfico no varía entre esta versión y la anterior, pero esta imagen contiene valores binarios mientras que la otra contiene valores reales. Luego usamos el valor de corte MaxTSS para generar una imagen binaria.

reclassfunMtss <- function(x) {
ifelse(x <= MaxTSS, 0,
ifelse(x > MaxTSS, 1, NA)) }
Clasificacion_reclass_maxtss <- calc(Clasificacion, fun=reclassfunMtss)
plot(Clasificacion_reclass_maxtss)

unique(Clasificacion_reclass_maxtss)
## [1] 0 1
writeRaster(Clasificacion_reclass_maxtss,
            file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/Abierto_reclass_maxtss.tif"),
            overwrite=TRUE)

Esta imagen muestra el mismo resultado que lo comentado en la imagen justamente anterior respecto de sus valores binarios versus los valores reales iniciales.

IMPORTANTE!

  1. Lo ideal es correr varias réplicas de los modelos, y utilizar el promedio de los modelos de clasificación, así como el promedio de los estadísitcos de evaluación como resultado final.
  2. MaxEnt genera modelos de clasificación "uniclase", por lo que para generar una clasificiación multiclase es necesario correr un modelo individual para cada cobertura de suelo, y luego integrar los resultados en un modelo de clasificiación final. Para ello existen diversas alternativas, como generar mapas binarios y luego integrarlos (pero esto generará pixeles no clasificados y otros con múltiples clases), o generar mapas probabílisticos y en función de los valores relativos definir la cobertura de suelo. En este práctico utilizaremos la segunda opción, mediante una regla de mayoría relativa.

2.4 Repetir los pasos para las coberturas restantes.

Tenemos las otras coberturas también tienen un total de 50 puntos cada una. Vamos a repetir los paso de clasificación para poder reunir todas las clases finales en una sola imagen clasificada. Vamos a cargar cada archivo y retiraremos la variable name de cada cobertura puesto que solamente nos indica a qué cobertura pertenece y es común a toda coordenada.

Puntos_Abierto        <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Abierto.csv"   ) , header=T , sep=",")
Puntos_Agricola       <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Agrícola.csv"  ) , header=T , sep=",")
Puntos_Agua           <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Agua.csv"      ) , header=T , sep=",")
Puntos_Construido     <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Construido.csv") , header=T , sep=",")
Puntos_Nativo         <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Nativo.csv"    ) , header=T , sep=",")
Puntos_Plantacion     <- read.csv(file.path(ruta_clase_04 , "Práctico_Maxent/Puntos/Puntos_Plantación.csv") , header=T , sep=",")

Retiramos variable name de cada cobertura.

Puntos_Abierto   $Name <- NULL
Puntos_Agricola  $Name <- NULL
Puntos_Agua      $Name <- NULL
Puntos_Construido$Name <- NULL
Puntos_Nativo    $Name <- NULL
Puntos_Plantacion$Name <- NULL

Verificamos el número de puntos por cada cobertura.

dim(Puntos_Abierto   )
## [1] 50  2
dim(Puntos_Agricola  )
## [1] 50  2
dim(Puntos_Agua      )
## [1] 50  2
dim(Puntos_Construido)
## [1] 50  2
dim(Puntos_Nativo    )
## [1] 50  2
dim(Puntos_Plantacion)
## [1] 50  2

Creamos grupos sintéticos usando la función kfold.

Grupos_Abierto    <- kfold(Puntos_Abierto   , k=5)
Grupos_Agricola   <- kfold(Puntos_Agricola  , k=5)
Grupos_Agua       <- kfold(Puntos_Agua      , k=5)
Grupos_Construido <- kfold(Puntos_Construido, k=5)
Grupos_Nativo     <- kfold(Puntos_Nativo    , k=5)
Grupos_Plantacion <- kfold(Puntos_Plantacion, k=5)

Separar cada grupo en muestra de entrenamiento y testeo.

Puntos_entrenamiento_Abierto    <- Puntos_Abierto   [ Grupos_Abierto   !=1,]
Puntos_entrenamiento_Agricola   <- Puntos_Agricola  [ Grupos_Agricola  !=1,]
Puntos_entrenamiento_Agua       <- Puntos_Agua      [ Grupos_Agua      !=1,]
Puntos_entrenamiento_Construido <- Puntos_Construido[ Grupos_Construido!=1,]
Puntos_entrenamiento_Nativo     <- Puntos_Nativo    [ Grupos_Nativo    !=1,]
Puntos_entrenamiento_Plantacion <- Puntos_Plantacion[ Grupos_Plantacion!=1,]
Puntos_Testeo_Abierto    <- Puntos_Abierto   [ Grupos_Abierto   ==1,]
Puntos_Testeo_Agricola   <- Puntos_Agricola  [ Grupos_Agricola  ==1,]
Puntos_Testeo_Agua       <- Puntos_Agua      [ Grupos_Agua      ==1,]
Puntos_Testeo_Construido <- Puntos_Construido[ Grupos_Construido==1,]
Puntos_Testeo_Nativo     <- Puntos_Nativo    [ Grupos_Nativo    ==1,]
Puntos_Testeo_Plantacion <- Puntos_Plantacion[ Grupos_Plantacion==1,]

Ejecutamos MaxEnt en cada una de las coberturas en las respectivas muestras de entrenamiento.

maxent_entrenamiento_Abierto    <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Abierto    , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Abierto"   ), silent=FALSE)
## This is MaxEnt version 3.4.1
maxent_entrenamiento_Agricola   <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Agricola   , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Agricola"  ), silent=FALSE)
## This is MaxEnt version 3.4.1
maxent_entrenamiento_Agua       <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Agua       , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Agua"      ), silent=FALSE)
## This is MaxEnt version 3.4.1
maxent_entrenamiento_Construido <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Construido , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Construido"), silent=FALSE)
## This is MaxEnt version 3.4.1
maxent_entrenamiento_Nativo     <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Nativo     , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Nativo"    ), silent=FALSE)
## This is MaxEnt version 3.4.1
maxent_entrenamiento_Plantacion <- dismo::maxent(Capas_Raster, Puntos_entrenamiento_Plantacion , ngb=2000, cache=TRUE, threads=4, memory_assigned=3600, skipifexists=TRUE, verbose=FALSE, path=file.path(ruta_datos,"maxent/train_Plantacion"), silent=FALSE)
## This is MaxEnt version 3.4.1

Podemos graficar la contribución de variables por cada cobertura.

par(mfrow=c(2,3))
plot(maxent_entrenamiento_Abierto    , main="Variable contribution\nAbierto"    )
plot(maxent_entrenamiento_Agricola   , main="Variable contribution\nAgricola"   )
plot(maxent_entrenamiento_Agua       , main="Variable contribution\nAgua"       )
plot(maxent_entrenamiento_Construido , main="Variable contribution\nConstruido" )
plot(maxent_entrenamiento_Nativo     , main="Variable contribution\nNativo"     )
plot(maxent_entrenamiento_Plantacion , main="Variable contribution\nPlantacion" )

Obtenemos raster con las predicciones para cada cobertura.

maxent_prediccion_Abierto    <- predict(maxent_entrenamiento_Abierto    , Capas_Raster)
## This is MaxEnt version 3.4.1
maxent_prediccion_Agricola   <- predict(maxent_entrenamiento_Agricola   , Capas_Raster)
## This is MaxEnt version 3.4.1
maxent_prediccion_Agua       <- predict(maxent_entrenamiento_Agua       , Capas_Raster)
## This is MaxEnt version 3.4.1
maxent_prediccion_Construido <- predict(maxent_entrenamiento_Construido , Capas_Raster)
## This is MaxEnt version 3.4.1
maxent_prediccion_Nativo     <- predict(maxent_entrenamiento_Nativo     , Capas_Raster)
## This is MaxEnt version 3.4.1
maxent_prediccion_Plantacion <- predict(maxent_entrenamiento_Plantacion , Capas_Raster)
## This is MaxEnt version 3.4.1

Evaluamos cada modelo usando los mismos puntos de background generados previamente.

maxent_evaluacion_Abierto    <- evaluate(maxent_entrenamiento_Abierto   , p=Puntos_Testeo_Abierto   , a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1
maxent_evaluacion_Agricola   <- evaluate(maxent_entrenamiento_Agricola  , p=Puntos_Testeo_Agricola  , a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1
maxent_evaluacion_Agua       <- evaluate(maxent_entrenamiento_Agua      , p=Puntos_Testeo_Agua      , a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1
maxent_evaluacion_Construido <- evaluate(maxent_entrenamiento_Construido, p=Puntos_Testeo_Construido, a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1
maxent_evaluacion_Nativo     <- evaluate(maxent_entrenamiento_Nativo    , p=Puntos_Testeo_Nativo    , a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1
maxent_evaluacion_Plantacion <- evaluate(maxent_entrenamiento_Plantacion, p=Puntos_Testeo_Plantacion, a=Pts_Background_Testeo, x=Capas_Raster)
## This is MaxEnt version 3.4.1 
## This is MaxEnt version 3.4.1

Podemos graficar las curvas ROC por cada cobertura.

par(mfrow=c(2,3))
plot(maxent_evaluacion_Abierto    , 'ROC')
plot(maxent_evaluacion_Agricola   , 'ROC')
plot(maxent_evaluacion_Agua       , 'ROC')
plot(maxent_evaluacion_Construido , 'ROC')
plot(maxent_evaluacion_Nativo     , 'ROC')
plot(maxent_evaluacion_Plantacion , 'ROC')

Almacenamos las clasificaciones en archivo en disco.

library(raster)
#lazyLoad("sesion04_nelson_mattie_cache/latex/predict_maxent_coberturas_31cf829a7e64710964901f587f7cc0d4")
writeRaster(maxent_prediccion_Abierto    , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Abierto.tif"   ) , overwrite=TRUE)
writeRaster(maxent_prediccion_Agricola   , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Agricola.tif"  ) , overwrite=TRUE)
writeRaster(maxent_prediccion_Agua       , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Agua.tif"      ) , overwrite=TRUE)
writeRaster(maxent_prediccion_Construido , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Construido.tif") , overwrite=TRUE)
writeRaster(maxent_prediccion_Nativo     , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Nativo.tif"    ) , overwrite=TRUE)
writeRaster(maxent_prediccion_Plantacion , file.path(ruta_clase_04,"Práctico_Maxent/Resultados_Clasificacion/maxent_prediccion_Plantacion.tif") , overwrite=TRUE)