es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

R: Bosque aleatorio con raster como variable de respuesta y variable explicativa

Quiero crear un mapa de probabilidad de ocurrencia de incendios con el método de bosque aleatorio. Mi variable de respuesta es un ráster con el área quemada anual promedio por celda de la cuadrícula. Mis variables explicativas son varios rásteres (temperatura, elevación, uso de la tierra y densidad de población). ¿Es posible utilizar un ráster como variable de respuesta y cómo se vería una línea de código básica? No pude encontrar ninguna información al respecto.

files <- list.files(path="C:/Users/fsorb/OneDrive/Desktop/test/fire_prob", pattern="grd", all.files=FALSE, full.names=TRUE,recursive=TRUE)
predictors <- stack(files)
fire <- raster("C:/Users/fsorb/OneDrive/Desktop/test/env_data/fire.tif")
fire_occ_prob <- randomForest(fire ~ ., data = predictors, ntree=500)

Este es el código que tengo hasta ahora, pero obtengo el error: Error in as.data.frame.default(data) :
no se puede transformar ‘structure(“RasterStack”, package = “raster”)’ en data.frame.

Intenté guardar el ráster de incendios como dataframe, pero todas las celdas de la cuadrícula solo obtienen valores NA.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible utilizar un raster como variable de respuesta en el método de random forest. La variable de respuesta debe ser un vector, no un raster. En este caso, podrías utilizar los valores promedio anuales de área quemada del raster de incendios como variable de respuesta y los demás datos de raster como variables explicativas.

    Aquí tienes una línea de código básica para crear un modelo de random forest con esta configuración:

    # Cargar bibliotecas
    library(raster)
    library(randomForest)
    
    # Establecer directorio de trabajo y rutas de archivo
    setwd("C:/Users/fsorb/OneDrive/Desktop/test/fire_prob")
    files <- list.files(pattern="grd", full.names=TRUE, recursive=TRUE)
    predictors <- stack(files)
    fire <- raster("C:/Users/fsorb/OneDrive/Desktop/test/env_data/fire.tif")
    
    # Extraer valores promedio anuales de área quemada del raster de incendios
    response <- extract(fire, predictors)
    
    # Crear modelo de random forest
    fire_occ_prob <- randomForest(response ~., data = as.data.frame(predictors), ntree = 500)
    
    # Ver resultados del modelo
    print(fire_occ_prob)
    

    Ten en cuenta que utilizamos la función extract() para extraer los valores promedio anuales de área quemada del raster de incendios. Luego utilizamos as.data.frame() para convertir el conjunto de rasters predictores en un data frame, que es el formato requerido para el modelo de random forest.

    Además, es una buena idea establecer el directorio de trabajo al comienzo del script, para no tener que especificar las rutas de archivo completas cada vez.

Comments are closed.