[R-sig-Geo] Eigenvalues in Eigenvectors - spatial correlation and spatial instrumental variables

Roger Bivand Roger.Bivand at nhh.no
Wed Jan 18 20:17:47 CET 2017


On Wed, 18 Jan 2017, jt wrote:

> Hi Everybody,
>
> Recent convert and newcomer. I am interested in exploring the use of
> eigenvalues as synthetic instrumental variables in the manner of Le
> Gallo and Paez (2013).

This appears to be doi:10.1068/a45443, by the way.

> To do this I need to access the actual eigenvalues in eigenvectors.  I 
> am aware of the 2009 r-sig-geo communication regarding potential to use 
> ME() within spdep and the offer of Professor Bivand to add eigenvalues 
> as an attribute of the output object when requested.

The link to the thread may be:

https://stat.ethz.ch/pipermail/r-sig-geo/2009-June/005939.html

although I don't see any offer there, what was mentioned was the matrix 
of eigenvectors "eV".

> My question is whether this or any other mechanism is available to 
> specify eigenvalues within spdep as I do not think this is currently an 
> option and I cannot identify the code to implement the adjustment 
> offered in 2009?

If the article linked by DOI above is the right one, I think you want 
eigenvectors from the doubly centred spatial weights matrix. If you use 
dense matrices, you can get them from:

library(spdep)
data(columbus)
W <- nb2mat(col.gal.nb, style="B")
n <- nrow(W)
one <- rep(1, n)
I_11n <- diag(n) - (one %*% t(one))/n
M <- I_11n %*% W %*% I_11n
e <- eigen(M)
str(e)

Use of eigenvectors is only possible for moderate-to-large n (say US 
Counties), and as noted in the list thread, a brute force search as 
suggested in Le Gallo & Páez is also subject to the same time problems. 
The ME case is really for the GLM setting, while the SpatialFiltering 
function is closer to your aim of using OLS (or 2SLS).

The article doesn't reference Tiefelsdorf M, Griffith DA. (2007) 
Semiparametric Filtering of Spatial Autocorrelation: The Eigenvector 
Approach. Environment and Planning A, 39 (5) 1193 - 1221, on which 
SpatialFiltering() is based - reducing Moran's I rather than monitoring 
fit to choose which eigenvectors to include.

My guess would be that implementations in pure R (like ME and 
SpatialFiltering) will see poor performance as n grows, and that for 
larger n (larger than 500), you'd need to use C++ via Rcpp and say 
RcppEigen or RcppArmadillo.

Hope this clarifies,

Roger

>
> Many Thanks
>
> JimT
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-- 
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; e-mail: Roger.Bivand at nhh.no
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412


More information about the R-sig-Geo mailing list