### Matrizes de vizinhan?a e Moran Global library(sf) library(spdep) # para ler nossos shapes - informar o diretório # Antes vamos setar este diretório! getwd() # conferindo! # comando abaixo faz o mesmo processo # setwd("...") ### carregando a workspace - caso seja necessário! #load("viz_moran.Rdata") #ls() ### 1 - Lendo shape dos munic do ESP esp <- st_read("./bancos_aula3/munic_esp_correto.shp") # comentários sobre as saídas # classe do objeto class(esp) # classe sf e é um data.frame q contém uma 'list-column' com geometrias attr(esp,'sf_column') # coluna com geometria # com o comando 'print', abaixo, apresentamosas três primeira feições. # com os seus atributos e uma versão abrevida de sua geometria print(esp,n=3) # prim 3 linhas - col 29 - geometry!!! # identificando as três classes usadas para representar as SF: print(esp[3:5],n=3) # prim 3 linhas - colunas 3 a 5 - geometria! # sf: cada uma das linhas do data.frame # 'sfc': a 'list-column' com as geometrias de cd feiçãoo (registros) # e 'sfg': a geometria da feição de um SF individual ### shape somente com geometria esp.geom <- st_geometry(esp) plot(esp.geom) esp.geom[[1]] # coordenadas do polígono #1 ### 2 - Matriz de Vizinhança por contiguidade # matriz de vizinhança # comandos do pacote 'spdep' matriz.cont <- poly2nb(as(esp, "Spatial"),queen=TRUE) # matriz de viz cont tipo queen print(matriz.cont) str(matriz.cont) # um setor censitário sem vizinhos ## matriz de pesos matriz.cont.pes <- nb2listw(matriz.cont) # erro ## usando zero.police - permite feiçõo sem vizinhos! matriz.cont.pes <- nb2listw(matriz.cont, zero.policy = TRUE) # obtendo matriz de peso para matriz viz tipo queen ### 3 - lendo banco de dados de taxas de incid de aids (por 100.000) entre 2007 e 2018 nos munic de SP e juntando com o mapa ## importei usando o 'File -> Import Dataset -> From Excel' ## ordenando o mapa e o banco esp.order <- esp[order(esp$cod_6),] tx.aids.order <- Tx_aids[order(Tx_aids$COD_6),] ## juntando no banco de dados tx.aids.esp <- cbind(esp.order,tx.aids.order) class(tx.aids.esp) # "sf" "data.frame" ### OBS.: Não precisaria usar o 'order' pq os dois bancos estavam na mesma ordem! Mas nem sempre isso acontece! ### 3 -Índice de Moran Global ## mapa das taxas str(tx.aids.esp) plot(tx.aids.esp["tx_aids_07_18"],nbreaks = 5,breaks='equal') ## moran - considerando matriz de viz por contiguidade ?moran.test # zero.policy - Help! # default NULL, use global option value; # if TRUE assign zero to the lagged value of zones without neighbours, # if FALSE assign NA ## moran da taxa bruta moran.test(tx.aids.esp$tx_aids_07_18, matriz.cont.pes, zero.policy=T) # usar 'zero.policy+T' para o caso de feições sem vizinhos! # Moran global = 0.16; p = 0.0000 # teste de significância considerando opção bicaudal - valor de p dobra! moran.test(tx.aids.esp$tx_aids_07_18, matriz.cont.pes, zero.policy=T, alternative="two.sided") ##################################################################### ### salvando a workspace com os objeto #save.image("viz_moran.Rdata") ################################################################