nonormmoran | R Documentation |
The function nonnormmoran
is used to detect spatial autocorrelation in
the residuals u
from the least squares model Y=\beta \times X+u
.
It calculates Moran's I statistic of the residuals based on the gaussian asymptotic distribution and give a p-value associated to the test of spatial autocorrelation (gaussian version).
nonormmoran(y, x, W)
y |
vector of size n of dependent variable |
x |
matrix |
W |
spatial weight matrix |
W is supposed standartized :
I=(n/s)\frac{u'Wu}{u'u}
I \sim N(E(I),var(I))
let M=(I-X(X'X)^{-1}X')
E(I)=(n/s)\frac{tr(MW)}{n-k}
d=\frac{n-p}{n+p+2}
V(I)=(n/s)^2[tr(MWMW')+tr(MW)^2+(tr(MW))^2]/d-E(I)^2
Z_I=\frac{I-E(I)}{v(I)^{1/2}}
When W is row-normalised, s=n
else s
is the number of nonzero links
a list with nobs
is the number of observations,
nvar
, the number of explanatory variables, morani
is the Moran's I statistic estimate,
imean
is E(I), ivar
is var(I), istat
is the normalized Moran's I statistic
(corresponding to Z_I
), and prob
the associated p-value.
This function is closed to the function lm.morantest
included in the spdep package.
nonnormmoran is less confortable to use because it didn't take into account S4 classes.
Translated into R from Jim Lessage's Spatial Econometrics Toolbox, http://www.spatial-econometrics.com/
Thibault Laurent, Anne Ruiz-Gazen, Christine Thomas-Agnan (2012), GeoXp: An R Package for Exploratory Spatial Data Analysis. Journal of Statistical Software, 47(2), 1-23.
moranplotmap
,neighbourmap
,makeneighborsw
,normw
###
# data baltimore
if (require(spData, quietly = TRUE)) {
data(baltimore, package = "spData")
}
# a spatial weight matrix constructed in the matrix format
W <- makeneighborsw(cbind(baltimore$X, baltimore$Y), method = "neighbor", 4)
# when W is not row-normalised ...
nonormmoran(baltimore$PRICE, cbind(rep(1, nrow(baltimore)),
baltimore[, 14:15]), W)
# when W is row_normalised ...
nonormmoran(baltimore$PRICE, cbind(rep(1, nrow(baltimore)),
baltimore[, 14:15]), normw(W))
# If we compare to the function lm.morantest
baltimore.lm <- lm(PRICE ~ LOTSZ + SQFT, data = baltimore)
spdep::lm.morantest(baltimore.lm, spdep::mat2listw(W, style = "W"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.