## Regressão Espacialmente Ponderada ### OU ## Geographically Weighted Regression - GWR ## instalar pacote "spgwr" require(spgwr) # carregamento do pacote (ou 'library') require(spdep) # library(shapefiles) # para export e import shape ### 1. Fazendo as análises com o banco de dados 'Columbus' data(columbus) # "Columbus" disponível # no pacote 'spgwr' # Columbus OH spatial analysis data set # olhando a estrutura do banco class(columbus) # é um data.frame; mas com as coord dos centroides fornecidas # 1.1 Fazendo uma regressão OLS col.lm <- lm(CRIME~INC+HOVAL, data=columbus) summary(col.lm) # 1.2 Determinação da banda # otimização de uma função kernel dada - 'gwr.sel' # funções kernel: Gaussiana, Bisquare, Tricube (ver pdf do programa) # determin a banda usando uma função gaussiana (default) # preciso informar as 'coords' col.bw <- gwr.sel(CRIME~INC+HOVAL, data=columbus, coords=cbind(columbus$X, columbus$Y)) # após otimização - banda = 2.275032 # 1.3 obtençãoo do modelo GWR - uso comando 'gwr' # inform 'coords' pq não é um obj espacial # inform 'hatmatrix=T" - incluir valores do erros amostrais col.gauss <- gwr(CRIME~INC+HOVAL, data=columbus,coords=cbind(columbus$X, columbus$Y), bandwidth=col.bw, hatmatrix=TRUE) col.gauss # notar a variação do interc e dos betas de income e housing names(col.gauss) # para mostrar os 'slots' de 'col.gauss' # SDF - resultados com os valores dos betas segundo localidade col.gauss$SDF # para mostrar o slot 'SDF' names(col.gauss$SDF) # para mostrar os campos de 'SDF' class(col.gauss$SDF) col.gauss$SDF$INC # para mostra os valores dos betas p/ 'income' summary(col.gauss$SDF$INC) # resumo estat dos valores dos betas para INC col.gauss$SDF$INC_se summary(col.gauss$SDF$INC_se) # p/ mostrar os val do erro padr dos betas de "income" ## 1.4 Mapeando os valores dos betas e de seus er padr spplot(col.gauss$SDF, "INC", col.regions=grey.colors(20)) spplot(col.gauss$SDF, "INC_se", col.regions=grey.colors(20)) ## 1.5 Exportando valores dos betas e de seus erros padrões write.table(col.gauss$SDF$INC,"betas_income") write.table(col.gauss$SDF$INC_se,"income_se")