localmoran.exact {spdep} | R Documentation |
Exact local Moran's Ii tests
Description
localmoran.exact
provides exact local Moran's Ii tests under the null hypothesis, while localmoran.exact.alt
provides exact local Moran's Ii tests under the alternative hypothesis. In this case, the model may be a fitted model derived from a model fitted by spatialreg::errorsarlm
, with the covariance matrix can be passed through the Omega=
argument.
Usage
localmoran.exact(model, select, nb, glist = NULL, style = "W",
zero.policy = NULL, alternative = "two.sided", spChk = NULL,
resfun = weighted.residuals, save.Vi = FALSE, useTP=FALSE, truncErr=1e-6,
zeroTreat=0.1)
localmoran.exact.alt(model, select, nb, glist = NULL, style = "W",
zero.policy = NULL, alternative = "two.sided", spChk = NULL,
resfun = weighted.residuals, Omega = NULL, save.Vi = FALSE,
save.M = FALSE, useTP=FALSE, truncErr=1e-6, zeroTreat=0.1)
## S3 method for class 'localmoranex'
print(x, ...)
## S3 method for class 'localmoranex'
as.data.frame(x, row.names=NULL, optional=FALSE, ...)
Arguments
model |
an object of class |
select |
an integer vector of the id. numbers of zones to be tested; if missing, all zones |
nb |
a list of neighbours of class |
glist |
a list of general weights corresponding to neighbours |
style |
can take values W, B, C, and S |
zero.policy |
default NULL, use global option value; if TRUE assign zero to the lagged value of zones without neighbours, if FALSE assign NA |
alternative |
a character string specifying the alternative hypothesis, must be one of greater (default), less or two.sided. |
spChk |
should the data vector names be checked against the spatial objects for identity integrity, TRUE, or FALSE, default NULL to use |
resfun |
default: weighted.residuals; the function to be used to extract residuals from the |
Omega |
A SAR process matrix may be passed in to test an alternative hypothesis, for example |
save.Vi |
if TRUE, return the star-shaped weights lists for each zone tested |
save.M |
if TRUE, save a list of left and right M products |
useTP |
default FALSE, if TRUE, use truncation point in integration rather than upper=Inf, see Tiefelsdorf (2000), eq. 6.7, p.69 |
truncErr |
when useTP=TRUE, pass truncation error to truncation point function |
zeroTreat |
when useTP=TRUE, pass zero adjustment to truncation point function |
x |
object to be printed |
row.names |
ignored argument to |
optional |
ignored argument to |
... |
arguments to be passed through |
Value
A list with class localmoranex
containing "select" lists, each with
class moranex
with the following components:
statistic |
the value of the exact standard deviate of global Moran's I. |
p.value |
the p-value of the test. |
estimate |
the value of the observed local Moran's Ii. |
method |
a character string giving the method used. |
alternative |
a character string describing the alternative hypothesis. |
gamma |
eigenvalues (two extreme values for null, vector for alternative) |
oType |
usually set to "E", but set to "N" if the integration leads to an out of domain value for |
data.name |
a character string giving the name(s) of the data. |
df |
degrees of freedom |
i |
zone tested |
Vi |
zone tested |
When the alternative is being tested, a list of left and right M products in attribute M.
Author(s)
Markus Reder and Roger Bivand
References
Bivand RS, Müller W, Reder M (2009) Power calculations for global and local Moran’s I. Comput Stat Data Anal 53:2859–2872; Bivand RS, Wong DWS 2018 Comparing implementations of global and local indicators of spatial association. TEST, 27(3), 716–748 doi:10.1007/s11749-018-0599-x
See Also
lm.morantest.exact
, localmoran.sad
Examples
eire <- st_read(system.file("shapes/eire.gpkg", package="spData")[1])
row.names(eire) <- as.character(eire$names)
st_crs(eire) <- "+proj=utm +zone=30 +ellps=airy +units=km"
eire.nb <- poly2nb(eire)
e.lm <- lm(OWNCONS ~ ROADACC, data=eire)
localmoran.sad(e.lm, nb=eire.nb)
localmoran.exact(e.lm, nb=eire.nb)
localmoran.exact(e.lm, nb=eire.nb, useTP=TRUE)
run <- FALSE
if (requireNamespace("spatialreg", quietly=TRUE)) run <- TRUE
if (run) {
e.errorsar <- spatialreg::errorsarlm(OWNCONS ~ ROADACC, data=eire,
listw=nb2listw(eire.nb))
lm.target <- lm(e.errorsar$tary ~ e.errorsar$tarX - 1)
localmoran.exact.alt(lm.target, nb=eire.nb)
}
if (run) {
Omega <- spatialreg::invIrW(nb2listw(eire.nb), rho=e.errorsar$lambda)
Omega1 <- tcrossprod(Omega)
localmoran.exact.alt(lm.target, nb=eire.nb, Omega=Omega1)
}
if (run) {
localmoran.exact.alt(lm.target, nb=eire.nb, Omega=Omega1, useTP=TRUE)
}