Escolar Documentos
Profissional Documentos
Cultura Documentos
Este material ainda está sendo finalizado e pode conter erros, entretanto,
acredito que possa ser útil até a versão final estar pronta. Alguma sugestão, crítica ou
workbook.
I – Avaliando a presença da autocorrelação especial
resid(mqo)
Teste para os redísuos de MQO para Spatial Autocorrelation – ver teste I Moran
SARMA)
The statistics are the simple LM test for error dependence (LMerr), the simple LM test for a missing
spatially lagged dependent variable (LMlag), variants of these robust to the presence of the other
(RLMerr, RLMlag - RLMerr tests for error dependence in the possible presence of a missing lagged
dependent variable, RLMlag the other way round), and a portmanteau test (SARMA, in fact LMerr +
RLMlag). Note: from spdep 0.3-32, the value of the weights matrix trace term is returned correctly for
both underlying symmetric and asymmetric neighbour lists, before 0.3-32, the value was wrong for listw
objects based on asymmetric neighbour lists, such as k-nearest neighbours (thanks to Luc Anselin for
finding the bug).
data(oldcol)
oldcrime.lm <- lm(CRIME ~ HOVAL + INC, data = COL.OLD)
summary(oldcrime.lm)
lm.LMtests(oldcrime.lm, nb2listw(COL.nb), test=c("LMerr", "LMlag", "RLMerr", "RLMlag", "SARMA"))
lm.LMtests(oldcrime.lm, nb2listw(COL.nb))
lm.LMtests(residuals(oldcrime.lm), nb2listw(COL.nb))
Maximum likelihood estimation of spatial simultaneous autoregressive lag and mixed models of the form:
where _ is found by optimize() first, and _ and other parameters by generalized least squares subsequently
(one-dimensional search using optim performs badly on some platforms). In the mixed model, the
spatially lagged independent variables are added to X. Note that interpretation of the fitted coefficients
should use impact measures, because of the feedback loops induced by the data generation process for
this model.
data(oldcol)
COL.lag.eig <- lagsarlm(CRIME ~ INC + HOVAL, data=COL.OLD,
nb2listw(COL.nb, style="W"), method="eigen", quiet=FALSE)
summary(COL.lag.eig, correlation=TRUE)
Description Maximum likelihood estimation of spatial simultaneous autoregressive error models of the
form:
where is found by optimize() first, and and other parameters by generalized least squares
subsequently (one-dimensional search using optim performs badly on some platforms).
data(oldcol)
COL.errW.eig <- errorsarlm(CRIME ~ INC + HOVAL, data=COL.OLD,
nb2listw(COL.nb, style="W"), method="eigen", quiet=FALSE)
summary(COL.errW.eig, correlation=TRUE)
Description
Performs the Breusch-Pagan test for heteroskedasticity on the least squares fit of the spatial models taking
the spatial coefficients rho or lambda into account. This function is a copy of the bptest function in
package "lmtest", modified to use objects returned by spatial simultaneous autoregressive models.
example(columbus)
error.col <- errorsarlm(CRIME ~ HOVAL + INC, data=columbus,
nb2listw(col.gal.nb))
bptest.sarlm(error.col)
bptest.sarlm(error.col, studentize=FALSE)
1
1. Importando os dados e pesos para o R
Após abrir os dados clique em Tools > Data Export > ASCII
2
1.3. Criando a tabela de dados
#O arquivo criado pelo GeoDa contem um cabeçalho (abra e confira que a primeira
#E também há uma primeira linha extra que não será necessária que apenas mostra o
Projetos/Spatial/Testando.txt",header=TRUE,skip=1)
summary (Minas)
3
1.4. Criando uma lista de vizinhos com um arquivo GAL
#Para manipular os pesos você irá precisar pedir para o programa carregar o pacote
library(spdep)
Usando read.gal
# Você irá ver que há três parâmetros: o nome do arquivo de entrada; um "region.id" e
um "overrid.id".
#O propósito desses dados é evitar ter que assumir que os dados e o arquivo de pesos
possuam as observações na mesma ordem. Isto não é de importância aqui, uma vez que o
FALSE para forcar o programa a usar o novo GeoDa Gal pesos format:
Projetos/Spatial/Queen.gal",override.id=TRUE)
# O arquivo carregado contém meta atributos que podem ser visualizado pelo comando:
attributes(polgal)
> attributes(polgal)
$class
[1] "nb"
$region.id
[1] "10" "20" "30" "40" "50" "60" "70" "80" "90" "100" "110" "120" "130" "140" "150"
(Omitido...)
[826] "7030" "7040" "7043" "7047" "7050" "7052" "7057" "7060" "7065" "7070" "7075" "7080" "7090" "7100" "7220"
[841] "7103" "7107" "7110" "7115" "7120" "7130" "7140" "7160" "7170" "7180" "7190" "7200" "7210"
$GeoDa
$GeoDa$shpfile
[1] "Ip"
$GeoDa$ind
[1] "CODMUNI"
$gal
4
[1] TRUE
$call
[1] TRUE
$sym
[1] TRUE
# Para visualizarmos as características principais do arquivo, com o número de regiões,
visinhos, etc:
print(polgal)
summary(polgal)
#Note how the link number distribution and summary of the connectedness structure
use the region.id values to identify the observations. If you use Tools > Weights > Properties in
GeoDa, you will observe the same frequency distribution in the link histogram.
no wokspace. Isto é alcançado “anexando” os dados do quadro que contêm a variável. Em nosso
caso, este é o quadro “Minas”. Anexando o quadro de dados, as variáveis podem ser acessadas
por meio de seus nomes como IP_91, ao invés de ser necessário usar o comando mais extenso
attach(Minas)
Summary(Minas)
5
Agora, vamos usar o arquivo k-Nearest.gwt como o lista de visinhos, usando
CODMUNI como o ID para a região e seguindo por um “summary”, com o nomer de polgwt,
Nearest.gwt",region.id=CODMUNI)
summary(polgwt)
5
853
853 least connected regions:
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 163 170 180 190 200 205 5350 210 220 230
(Omitido)
6840 6850 6860 6870 6880 6890 6900 6905 6910 6920 6930 6935 6940 6950 6960 6970 6980 6990 7000 7005 7010
7020 7030 7040 7043 7047 7050 7052 7057 7060 7065 7070 7075 7080 7090 7100 7220 7103 7107 7110 7115 7120
7130 7140 7160 7170 7180 7190 7200 7210 with 5 links
853 most connected regions:
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 163 170 180 190 200 205 5350 210 220 230
(Omitido)
7220 7103 7107 7110 7115 7120 7130 7140 7160 7170 7180 7190 7200 7210 with 5 links
Uma função usual é uma checagem para a simetria da lista de vizinhos. Pesos espaciais
baseados na “contiguity” devem ser simétricos, enquanto pesos derivados da uma realação de k-
vizinhos mais próximos são tipicamente não simétricos. A função “is.symmetric.nb” disponível
no pacote spdep. Esta utiliza o nome dos objetos vizinhos como argumento. Por exemplo, para
pesos baseados em GAL, em que polgal é o nome usado anteriormente na importação dos pesos
para o R:
print(is.symmetric.nb(polgal))
6
[1] TRUE
print(is.symmetric.nb(polgwt))
7
2. Análise da Autocorrelação Espacial no R
spdep, explorando gráficos, testes, etc. Será necessário que o pacote esteja carregado na
memória do programa. Se não estiver use o comando “library(spdep). Também será necessário
o arquivos de pesos e de dados, como descrito anteriormente nas seções 1.3 a 1.5 a
um tipo diferente de objeto é usado, um objeto de pesos espaciais (um objeto da classe listw).
Podemos converter um objeto nb, criados anteriormente, pode ser transformado em um objeto
listw por meio da função nb2listw. Usando a ajuda do programa para essa função –
Uso:
Argumentos:
próximo, se TRUE permite que a lista de pesos seja formada com um vetor de pesos com
distância nula.
Deve-se observar como as “ilhas” serão tratadas pelo programa. O padrão do programa
zero.policy = FALSE, o que para o programa quando ilhas são encontradas. Para permitir as
“ilhas”, defina explicitamente zero.policy = TRUE. Como antes, se estiver satisfeito com as
8
A função adiciona uma lista de pesos com valores dados pelo esquema da codificação
escolhida. B é um código binário básico, W é uma linha padronizada (soma de todos os links
para n), C esta globalmente padronizando (soma de todos os links para n), U é igual a C,
divididos pelo número de vizinhos (soma de todos os links para a unidade ), enquanto S é
codificado pela variância padronizada , como proposto por Tiefelsdorf et al. (1999), p. 167-168
Exemplo:
library(spdep)
Projetos/Spatial/Testando.txt",header=TRUE,skip=1)
Projetos/Spatial/Queen.gal",override.id=TRUE)
Será usado o objeto “Queen.gal”, uma lista de vizinhos para “queen contiguity”. Desde
que não há ilhas em Queen e o padrão para a padronização das linhas (style="W") esta certo,
class (colqueen)
"listw" "nb"
Entretanto, o resumo das medidas para os pesos foram pré-calculados, como os traços (de
matrizes) usados nas estatísticas de teste, mais precisamente nn, SO, S1 e S2.
> summary(colqueen)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18
9
5 25 82 136 182 166 104 69 38 18 11 9 4 2 2
5 least connected regions:
310 945 1640 2700 6670 with 1 link
2 most connected regions:
1340 2770 with 18 links
Weights style: W
Weights constants summary:
n nn S0 S1 S2
W 853 727609 853 321.7223 3593.489
Para visualizar os pesos reais contidos no objeto use colqueen$weights, que gerará uma
colqueen$weights
[[1]]
[1] 0.3333333 0.3333333 0.3333333
[[2]]
[1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
(Omitted)
[[852]]
[1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
[[853]]
[1] 0.3333333 0.3333333 0.3333333
attr(,"mode")
[1] "binary"
attr(,"W")
[1] TRUE
attr(,"comp")
attr(,"comp")$d
[1] 3 6 10 5 11 9 2 5 6 8 4 8 4 2 6 10 4 6 5 6 6 3 4 9 4 6 4 5 7 10 5 5 7 1 4 5
(Omitted)
5 7 5 3 4 4 6 5 6 6 5 3 4 4 5 3 6 8 5 6 7 4 4 6 3
podendo ser usadas duas funções diferentes: “moran.test” em que a inferência é baseada na
permutação. Ambos os testes necessitam do nome da variável e do vetor ou objeto ou lista dos
10
pesos espaciais (listw), sendo que “moran.mc” também necessita do número de permutações
Usage
Arguments
listw - objeto listw criado como exemplificado na seção 2.1. usando nb2listw
zero.policy - default NULL, usa a opção valor global, se TRUE for atribuído, zera o
valor defasado das zonas sem vizinhos, se FALSE atribui NA (Não disponível/aplicável)
rank – o padrão é FALSE para variáveis contínuas, se TRUE, usa a adaptação para o
na.action - uma função (padrão na.fail), também pode ser na.omit ou na.exclude –
nestes casos, a lista de pesos será subsetted para remover NAs nos dados. Pode ser necessário
para definir zero.policy como TRUE porque esse sub-configuração pode criar observações não
vizinhas. Note que apenas a lista de pesos criadas sem usar o argumento glist em nb2listw pode
ser subsetted. Se na.pass é usado, zero é substituída por valores NA no cálculo da defasagem
espacial
spChk – os nomes dados vetoriais devem ser checadas com os objetos espaciais para
Value
11
A list with class htest containing the following components:
Estimate the value of the observed Moran’s I, its expectation and variance under the
method assumption.
method - a character string giving the assumption used for calculating the standard
deviate.
Das opções para os parâmetros, apenas duas são importantes. A opção “randomization”
é a configuração TRUE por padrão, que implica que para obter inferência baseada na
aproximação normal, esta precisa ser explicitada como FALSE. Similarmente, o padrão é o teste
unilateral, então para obter os resultados (mais usual) para um teste bicaudal, a opção alternativa
precisa ser explicitada “two.sided”. Note também que a opção “zero.policy” é definida como
FALSE por padrão, que significa que ilhas resultam no código para valores perdidos (NA).
Definir esta opção como TRUE irá definir a defasagem espacial para as ilhas com o habitual
valor zero.
Antes:
library (spdep)
Projetos/Spatial/Testando.txt",header=TRUE,skip=1)
attach(Minas)
Projetos/Spatial/Queen.gal",override.id=TRUE)
O teste I de Moran:
moran.test(IP_91,colqueen,randomisation=FALSE,
alternative="two.sided")
12
Moran's I test under normality
data: IP_91
weights: colqueen
implementado por meio da função moran.plot. Esta função necessita, como argumentos, nome
de variável em questão, seguido por um objeto de pesos espaciais da classe listw. Parâmetros
opcionais são zero.policy, que permite refinar a rotulagem dos pontos de grande influência, os
eixos X e Y, e os diversos parâmetros gráficos (passado como no par (..)). A função moran.plot
também cria o chamado objeto "influência", por meio da opção influence.measures, passou
para trás do modelo de regressão e é usado para estimar a inclinação (Moran's I). Definindo a
opção quiet = TRUE, esta suprime as medidas de influência (o padrão é quiet = FALSE).
moran.plot(IP_91,colqueen)
13
3. Estimando modelo de autocorrelação especial com heterocedasticidade
ou de maneira compacta,
y=Zγ + ε (2)
H=(X , WX , … , W q X ) (3)
ε =ρWε +ξ (5)
onde ξ 1 ,… , ξ n são assumidos como independentes com média zero e variância não constante
desconhecida σ i2. Kelejian e Pruncha (2010) definiram um estimador por generalized moments
(GM) para ρ que obtêm estimativas tanto consistentes e assintoticamente normais, permitindo
por Kelejian e Pruncha (2010) consiste em duas etapas alterando entre GM e variáveis
instrumentais (IV). Na primeira etapa γ é estimado por S2SLS. Os resíduos do modelo são
primeiramente empregados para obter um estimador inicial ρ (consistente, mas não eficiente)
14
por GM e então um estimador consistente e eficiente (envolvendo a matriz de variância-
passo da segunda etapa, uma nova “sample moments” é obtido substituindo os resíduos
estimados por S2SLS pelos resíduos estimador por GS2SLS obtidos a partir da Equação 6. O
T −1
~ρ=armmin [m ( ρ , γ^ ) Υ^ . m ( ρ , γ^ ) ] (7)
ρ .
library(spdep)
Projetos/Spatial/Testando.txt",header=TRUE,skip=1)
Projetos/Spatial/Queen.gal",override.id=TRUE)
library(sphet)
initial.value=0.2, sarar=TRUE)
summary(res)
Generalized stsls
15
Call:
gstslshet(formula = TX_CRESC_9 ~ LN_IP_91, data = Minas, listw = colqueen,
initial.value = 0.2, sarar = TRUE)
Residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-2.71000 -0.39400 0.00693 0.01280 0.45600 2.54000
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 0.916362 0.075270 12.1743 < 2.2e-16 ***
LN_IP_91 -0.414013 0.035028 -11.8194 < 2.2e-16 ***
lambda -0.681470 0.153694 -4.4339 9.253e-06 ***
rho 0.753738 0.042761 17.6269 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Estimado o modelo com defasagem nos resíduos, desta forma a opção sarar=FALSE.
initial.value=0.2, sarar=FALSE)
summary(res2)
Generalized stsls
Call:
gstslshet(formula = TX_CRESC_9 ~ LN_IP_91, data = Minas, listw = colqueen,
initial.value = 0.2, sarar = FALSE)
Residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-2.20000 -0.32600 -0.01010 0.00392 0.33200 2.12000
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 0.739103 0.044374 16.656 < 2.2e-16 ***
LN_IP_91 -0.395362 0.032688 -12.095 < 2.2e-16 ***
rho 0.505610 0.044172 11.447 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
4. Referências
16
KELEJIAN, H.H; PRUNCHA, I.R. Specification estimation spatial autoregressive
n. 1, p. 53-67, 2010.
17