Você está na página 1de 19

Atenção:

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

comentário, por favor entre em contato.

Estimação e Análise de Regressão Espacial no R1

Samuel Alex Coelho Campos

Mestrando em Economia Aplicada

Departamento de Economia Rural

Universidade Federal de Viçosa

Viçosa, 20 de agosto de 2010


1
Maiores detalhes podem ser encontrados em Anselin, L. (2005). Spatial Regression Analysis in R - A

Workbook. Disponível em geodacenter.asu.edu/system/files/rex1.pdf.Esse texto se baseou neste

workbook.
I – Avaliando a presença da autocorrelação especial

Inicialmente deve-se avaliar se existe ou não autocorrelação espacial, para isto

estime a regressão por MQO por meio do comando lm

mqo <- lm(TX_CRESC_9~LN_IP_91, data=Minas)

extraia os resíduos como por meio do seguinte comando

resid(mqo)
Teste para os redísuos de MQO para Spatial Autocorrelation – ver teste I Moran

• Lagrange Multiplier tests using lm.LMtests


• parameters: a regression object, listw object and the type of test
• specifying the LM tests by name (LMerr, RLMerr, LMlag, RLMlag,

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))

6.2.3 ML Estimation of Spatial Lag Model

• using lagsarlm with a formula and listw object

• using summary to list the detailed results

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)

6.2.4 ML Estimation of Spatial Error Model

• using errorsarlm with a formula and listw object

• using summary to list the detailed results

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)

6.2.5 Testing the Spatial Common Factor Hypothesis

• using lagsarlm with type="mixed"

• using LR.sarlm for the Likelihood Ratio test

Breusch-Pagan test for spatial models

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)

object An object of class "sarlm" from errorsarlm() or lagsarlm().


studentize logical. If set to TRUE Koenker’s studentized version of the test statistic will be used.

1
1. Importando os dados e pesos para o R

1.1. Exportando os dados com o GeoDa

Pelo GeoDa abra os dados em File > Load shape

Após abrir os dados clique em Tools > Data Export > ASCII

Localize o arquivo shape no qual vc irá trabalhar posteriormente no R

Selecione todas as variáveis e clique no "disquete" e em "exporte"

1.2. Criando os pesos espaciais com o GeoDa

#Clique em Tools / Weights/ Create ...

Identifique a variável de identificação em “Weights File ID Variable”

Então escolha entre “Contiguity Weight” ou Distance Weight”

Create (Salve com o nome desejado)

2
1.3. Criando a tabela de dados

#Usaremos o comando "read.table" para dados ASCII que é o comando "read.csv"

#O arquivo criado pelo GeoDa contem um cabeçalho (abra e confira que a primeira

linha possui um número que é o número de observações e o segundo número é o número de

observações, então devemos usar "header=TRUE"

#E também há uma primeira linha extra que não será necessária que apenas mostra o

número de observações e variáveis, desta forma deve ser usado "skip=1"

#O comando usado então deve ser

Minas <- read.csv ("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Testando.txt",header=TRUE,skip=1)

#Para obter as estatísticas descritivas das variáveis:

summary (Minas)

CODMUNI IP_91 IP_00 LN_IP_91 LN_IP_00 TX_CRESC_9


Min. : 10 Min. : 0.000 Min. : 0.000 Min. :-0.5234 Min. :-0.5234 Min. :-2.8497
1st Qu.:1950 1st Qu.: 2.021 1st Qu.: 2.828 1st Qu.: 0.7035 1st Qu.: 1.0397 1st Qu.: 0.0000
Median :3730 Median : 3.081 Median : 4.336 Median : 1.1254 Median : 1.4670 Median : 0.2203
Mean :3698 Mean : 5.615 Mean : 6.582 Mean : 1.2944 Mean : 1.5257 Mean : 0.2313
3rd Qu.:5490 3rd Qu.: 5.499 3rd Qu.: 7.367 3rd Qu.: 1.7046 3rd Qu.: 1.9970 3rd Qu.: 0.5796
Max. :7220 Max. :75.299 Max. :77.512 Max. : 4.3215 Max. : 4.3504 Max. : 3.0050

IP_01 IP_07 LN_IP_01 LN_IP_07 TX_CRESC_0 TX_CRESC_T


Min. : 0.000 Min. : 0.000 Min. :-0.718 Min. :-0.7563 Min. :-3.6554 Min. :-2.52275
1st Qu.: 2.604 1st Qu.: 3.249 1st Qu.: 0.957 1st Qu.: 1.1784 1st Qu.:-0.0737 1st Qu.: 0.01861
Median : 4.227 Median : 5.936 Median : 1.442 Median : 1.7810 Median : 0.2083 Median : 0.46892
Mean : 6.966 Mean : 9.945 Mean : 1.538 Mean : 1.8218 Mean : 0.2838 Mean : 0.52744
3rd Qu.: 7.736 3rd Qu.:11.610 3rd Qu.: 2.046 3rd Qu.: 2.4519 3rd Qu.: 0.5615 3rd Qu.: 1.06312
Max. :72.207 Max. :88.791 Max. : 4.280 Max. : 4.4863 Max. : 3.3717 Max. : 4.25011

Observação: Se aconteceu algum erro na importação ou vc quer apagar o

banco de dados da memória use o comando:

rm(nome do banco de dados, no caso Testando)

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

spdep, assumindo que você já o tenha instalado - use o comando library

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

arquivo de dados e de pesos são criados pelo GeoDa.

#Para os nossos propósitos basta configurar "override.id=TRUE, contrapondo ao padrão

FALSE para forcar o programa a usar o novo GeoDa Gal pesos format:

polgal <- read.gal("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Queen.gal",override.id=TRUE)

#Isto cria um objeto de vizinhos com nome polgal.

# 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)

Neighbour list object:


Number of regions: 853
Number of nonzero links: 4898
Percentage nonzero weights: 0.6731637
Average number of links: 5.742087
#Características dos pesos

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.

1.5. Criando uma lista de vizinhos com um arquivo GWT

A função red.gwt2nb lê como argumentos o nome do arquivo para o arquivo GWT e o

nome da variável de identificação, no caso “CODMUNI”. A última precisa estar “disponível”

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

“Minas$CODMUNI”. Anexando os quadros de dados “Minas”:

attach(Minas)

Para conferir se o banco de dados foi anexado:

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,

usando o comando read.gwt2nb, o arquivo de Vizinhos k-Nearest.gwt:

polgwt <- read.gwt2nb("C:/Users/Samuel/Documents/Artigos & Projetos/Spatial/k-

Nearest.gwt",region.id=CODMUNI)

summary(polgwt)

Neighbour list object:


Number of regions: 853
Number of nonzero links: 4265
Percentage nonzero weights: 0.5861665
Average number of links: 5
Non-symmetric neighbours list
Link number distribution:

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

1.6. Checagem de simetria para a lista de vizinhos

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

e para os pesos baseados no arquivo GWT, em que polgwt é o nome dado na

importação dos pesos GWT como anteriormente feito.

print(is.symmetric.nb(polgwt))

7
2. Análise da Autocorrelação Espacial no R

Nessa seção é ilustrado como analisar a autocorelação espacial no R, usando o pacote

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

operacionalização para a importação.

2.1. Convertendo a lista de vizinhos para pesos especiais

Para os testes de autocorrelação espacial e diagnóstico espacial na análise de regressão,

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 –

help(nb2listw) – os parâmetro listados abaixo e as configurações padrão:

Uso:

nb2listw(neighbours, glist=NULL, style="W", zero.policy=FALSE)

Argumentos:

neighbours: objeto da classe “nb”;

glist: lista geral dos pesos correspondentes aos vizinhos;

style: ’style’ pode assumer os valores W, B, C, U, e S;

zero.policy: Se FALSE, a configuração encerra com um erro para qualquer vizinho

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

configurações padrão, não há necessidade de especificar qualquer um dos parâmetros, bastando

apenas nb2listw (objeto vizinho).

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

(somas de todos os links para n) (BIVAND, 2010).

Exemplo:

library(spdep)

Minas <- read.csv ("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Testando.txt",header=TRUE,skip=1)

polgal <- read.gal("C:/Users/Samuel/Documents/Artigos &

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,

nós podemos apenas especificar o nome da lista de vizinhos:

colqueen <- nb2listw(polgal)

Para checar se a lista de vizinhos foi convertida para a classe “listw”:

class (colqueen)

"listw" "nb"

E “summary” gera as mesmas informações de ligação, como para o objeto “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)

Characteristics of weights list object:


Neighbour list object:
Number of regions: 853
Number of nonzero links: 4898
Percentage nonzero weights: 0.6731637
Average number of links: 5.742087
Link number distribution:

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

lista dos pesos espaciais para cada observação.

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

2.2. Teste I de Moran

O teste I de Moran para autocorrelação espacial é implementado no pacote spdep,

podendo ser usadas duas funções diferentes: “moran.test” em que a inferência é baseada na

pressupocição de normalidade ou aleatoriedade; “moran.mc”, para um teste baseado em

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

como terceiro parâmetro.

Usage

moran.test(x, listw, randomisation=TRUE, zero.policy=NULL, alternative="greater",

rank = FALSE, na.action=na.fail, spChk=NULL, adjust.n=TRUE)

Arguments

x - vetor numérico do mesmo tamanho que a lista de vizinhos em listw

listw - objeto listw criado como exemplificado na seção 2.1. usando nb2listw

randomization – variância do I calculado com base na pressuposição de aleatoriedade,

se FALSE para normalidade

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)

alternative – cadeia de caracteres que especifica a hipótese alternativa, deve ser

greater (padrão), less ou two.sided.

rank – o padrão é FALSE para variáveis contínuas, se TRUE, usa a adaptação para o

teste I de Moran proposta por Cliff and Ord (1981) p. 46.

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

identificar a integridade, TRUE ou FALSE, defaul NULL para usar get.spChkOption ()

adjust.n – padrão TRUE, se é selecionado FALSE, o número de observações não é

ajustado para as observações sem vizinhos, se TRUE, o número de observações é ajustado

Value

11
A list with class htest containing the following components:

statistic - the value of the standard deviate of Moran’s I.

p.value - the p-value of the test.

Estimate the value of the observed Moran’s I, its expectation and variance under the

method assumption.

alternative - a character string describing the alternative hypothesis.

method - a character string giving the assumption used for calculating the standard

deviate.

data.name - a character string giving the name(s) of the data.

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.

Para exemplificar, usando a variável IP_91 e os pesos da lista colqueen com

aproximação normal bicaudal:

Antes:

library (spdep)

Minas <- read.csv ("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Testando.txt",header=TRUE,skip=1)

attach(Minas)

polgal <- read.gal("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Queen.gal",override.id=TRUE)

colqueen <- nb2listw(polgal)

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

Moran I statistic standard deviate = 17.8442, p-value < 2.2e-16


alternative hypothesis: two.sided
sample estimates:
Moran I statistic Expectation Variance
0.3727554942 -0.0011737089 0.0004391199

2.3. Moran Scatter Plot

O gráfico de dispersão de Moran está disponível no package spdep. O gráfico é

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

com erro espacial.

Considere o seguinte modelo especial

y= Xβ+ λWy +ε (1)

ou de maneira compacta,

y=Zγ + ε (2)

com Z=[ X , Wy ] e γ =[ βT , λ ]T . A presença da variável dependente defasada espacialmente Wy

introduz uma forma de endogeneidade. Sobre as especificações típicas, Wy será correlacionada

com os distúrbios ε , o que motiva a abordagem de variáveis instrumentais. Em problemas

empíricos, a matrix de instrumentos pode ser definida da seguinte maneira:

H=(X , WX , … , W q X ) (3)

onde, tipicamente, q ≤ 2. A matriz de instrumentos implementada no package sphet é

H=(X , WX , W 2 X). O estimador de mínimos quadrados de dois estágios espacial (S2SLS)

para o parâmetro γ pode ser definido como:

γ^ .S 2 SLS =[ ^Z .T Z ]−1 Z^ .T y (4)

onde ^ ^ =PWy e P=H (H T H )−1 H T .


^ ] , Wy
Z=PZ=[ X , Wy

Entretanto, considere que o processo de perturbação é conhecido como sendo

autorregressivo de primeira ordem, sendo expresso por:

ε =ρ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

defasagem espacial na variável dependente e nos distúrbios. O processo de estimação sugerido

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-

covariância da distribuição limitada da amostra normalizada moments). Na segunda etapa, a

transformação de Cochrane-Orcutt do modelo espacial é estimada por S2SLS. Isto corresponde

à estimação por mínimos quadrados generalizados de dois estágios especial (GS2SLS).

Especificamente, o estimador GS2SLS para o parâmetro γ é definido como:

γ^ .S 2 SLS =[ ^Z .T¿ Z ¿ ]−1 Z^ .T¿ y ¿ (6)

^¿=P Z ¿ e P=H (H T H )−1 H T . No segundo e último


em que y ¿ = y− ρ^ Wy , Z ¿=Z− ρ^ Wy , Z

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

estimador GM eficiente para ρ com base no resíduo GS2SLS é obtido de:

T −1
~ρ=armmin [m ( ρ , γ^ ) Υ^ . m ( ρ , γ^ ) ] (7)
ρ .

Exemplificando a estimação no R. Inicialmente será estimado o modelo com defasagem

na variável dependente e nos resíduos, desta forma a opção sarar=TRUE.

Refazendo os passos das seções 1 e 2 necessários novamente:

library(spdep)

Minas <- read.csv ("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Testando.txt",header=TRUE,skip=1)

polgal <- read.gal("C:/Users/Samuel/Documents/Artigos &

Projetos/Spatial/Queen.gal",override.id=TRUE)

colqueen <- nb2listw(polgal)

Carregando o pacote sphet para permitir a correção de heterocedasticidade

(considerando que este já esteja instalado no computador):

library(sphet)

res<-gstslshet(TX_CRESC_9~LN_IP_91, data=Minas, listw=colqueen,

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

Wald test that rho and lambda are both zero:


Statistics: 0.28811 p-val: 0.59143

Estimado o modelo com defasagem nos resíduos, desta forma a opção sarar=FALSE.

res2<-gstslshet(TX_CRESC_9~LN_IP_91, data=Minas, listw=colqueen,

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

ANSELIN, L. (2005). Spatial Regression Analysis in R - A Workbook. Disponível em

<geodacenter.asu.edu/system/files/rex1.pdf>. Acesso em 30 ago 2010.

16
KELEJIAN, H.H; PRUNCHA, I.R. Specification estimation spatial autoregressive

models autoregressive heteroskedastic disturbances. Journal of Econometrics, v. 157,

n. 1, p. 53-67, 2010.

PIRAS, G. Package “sphet”. Disponível em < http://cran.r-

project.org/web/packages/sphet/sphet.pdf> Acesso em 25 set 2010.

PIRAS, G. sphet: spatial models with heteroskedastic innovations in R. Journal of

Statistical Software, v. 36, n. 1, p. 1-21, 2010.

17

Você também pode gostar