R

Análise de Autocorrelação e Regressão Espacial no R

Escrito por Erick Faria · 3 min. >
Autocorrelação e regressão espacial

A modelagem de Autocorrelação e Regressão Espacial é uma abordagem para analisar dados geográficos, permitindo entender como as variáveis se relacionam no espaço e como essas relações afetam fenômenos observados. Neste post, vamos explorar técnicas avançadas de modelagem espacial no R utilizando o pacote spdep, focando em autocorrelação espacial e regressão espacial.

Por que Usar o spdep para Modelagem de Autocorrelação e Regressão Espacial?

O pacote spdep oferece ferramentas para análise espacial, incluindo a criação de vizinhanças, cálculos de pesos espaciais, análise de autocorrelação espacial (como o Índice de Moran) e regressão espacial. Essas ferramentas são essenciais para explorar a dependência espacial em dados geográficos e realizar análises precisas e significativas.

Preparando o Ambiente

Instalando e Carregando os Pacotes

Primeiro, vamos instalar e carregar os pacotes necessários:

# Autocorrelação e Regressão Espacial
# Instalando os pacotes spdep e sf
install.packages("spdep")
install.packages("sf")

# Carregando os pacotes
library(spdep)
library(sf)

Carregando e Preparando os Dados Espaciais

Vamos usar um conjunto de dados espaciais de exemplo. Suponha que temos um shapefile com informações geográficas e uma variável de interesse:

# Autocorrelação e Regressão Espacial
# Carregando um shapefile de exemplo
dados_espaciais <- st_read("caminho_para_o_seu_shapefile.shp")

# Visualizando os primeiros registros
head(dados_espaciais)

Criando Estruturas de Vizinhança e Pesos Espaciais

Criando uma Estrutura de Vizinhança

A estrutura de vizinhança define quais regiões são consideradas vizinhas, o que é crucial para análise espacial:

# Autocorrelação e Regressão Espacial
# Criando uma estrutura de vizinhança baseada na contiguidade
vizinhos <- poly2nb(dados_espaciais)

# Visualizando a estrutura de vizinhança
plot(vizinhos, st_geometry(dados_espaciais))

Calculando Pesos Espaciais

Pesos espaciais refletem a influência entre regiões vizinhas. Vamos calcular os pesos espaciais usando uma matriz de contiguidade:

# Autocorrelação e Regressão Espacial
# Calculando a matriz de pesos espaciais
pesos <- nb2listw(vizinhos)

# Visualizando os pesos espaciais
summary(pesos)

Análise de Autocorrelação Espacial

Calculando o Índice de Moran

O Índice de Moran é uma medida clássica de autocorrelação espacial que indica se há um padrão espacial (clusterização) na variável de interesse:

# Autocorrelação e Regressão Espacial
# Calculando o Índice de Moran
moran_test <- moran.test(dados_espaciais$variavel_de_interesse, pesos)

# Visualizando os resultados
print(moran_test)

Mapeando a Autocorrelação Local (LISA)

Além do Índice de Moran global, podemos calcular a autocorrelação local (LISA) para identificar clusters locais:

# Autocorrelação e Regressão Espacial
# Calculando a autocorrelação local (LISA)
lisa <- localmoran(dados_espaciais$variavel_de_interesse, pesos)

# Adicionando os valores de LISA ao shapefile
dados_espaciais$lisa <- lisa[,1]

# Mapeando os clusters locais
plot(st_geometry(dados_espaciais), col = ifelse(dados_espaciais$lisa > 0, "red", "blue"))

Regressão Espacial

Ajustando um Modelo de Regressão Espacial

Modelos de regressão espacial levam em consideração a autocorrelação espacial, ajustando melhor os dados que apresentam esse tipo de dependência:

# Autocorrelação e Regressão Espacial
# Ajustando um modelo de regressão espacial SAR (Spatial Autoregressive)
modelo_sar <- spautolm(variavel_de_interesse ~ variavel_explicativa1 + variavel_explicativa2, data = dados_espaciais, listw = pesos)

# Resumo do modelo SAR
summary(modelo_sar)

Comparando Modelos: SAR vs. OLS

Podemos comparar a regressão espacial com uma regressão OLS tradicional para ver o impacto da autocorrelação espacial:

# Autocorrelação e Regressão Espacial
# Ajustando um modelo de regressão OLS
modelo_ols <- lm(variavel_de_interesse ~ variavel_explicativa1 + variavel_explicativa2, data = dados_espaciais)

# Comparando os modelos
summary(modelo_ols)
summary(modelo_sar)

Avaliando a Qualidade do Modelo Espacial

Verificando os Resíduos

Assim como em modelos tradicionais, é importante verificar os resíduos para garantir que o modelo está bem ajustado:

# Verificando os resíduos do modelo SAR
plot(residuals(modelo_sar), main = "Resíduos do Modelo SAR")

Mapeando os Resíduos

Podemos mapear os resíduos para identificar padrões espaciais não capturados pelo modelo:

# Adicionando os resíduos ao shapefile
dados_espaciais$residuos <- residuals(modelo_sar)

# Mapeando os resíduos
plot(st_geometry(dados_espaciais), col = ifelse(dados_espaciais$residuos > 0, "red", "blue"))

Exportando os Resultados

Salvando o Modelo e os Dados

Por fim, podemos salvar o modelo ajustado e os dados com os resultados da análise espacial:

# Salvando o modelo
saveRDS(modelo_sar, file = "modelo_sar.rds")

# Salvando os dados com os resultados
st_write(dados_espaciais, "dados_resultados.shp")

Para mais informações sobre como utilizar o R para modelagem espacial, confira outros conteúdos no meu blog:

Considerações Finais

A modelagem espacial avançada no R com o spdep permite que você explore a dependência espacial em seus dados e melhore a precisão das suas análises. Essas técnicas são essenciais em estudos geoespaciais e podem ser aplicadas em diversas áreas, desde ecologia até economia urbana.

Escrito por Erick Faria
Engenheiro de Dados com Ph.D. em Geografia e experiência em análise espacial e geoprocessamento. Expertise em processamento de grandes volumes de dados geoespaciais, imagens de satélite e dados de mercado, utilizando ferramentas como Spark, Databricks e Google Earth Engine. Experiência em projetos de mercado de carbono, modelos preditivos para investimentos agrícolas e liderança de projetos de dados em saúde pública. Habilidades em Python, R, SQL e diversas ferramentas de engenharia de dados. Profile