R: Exact local Moran's Ii tests

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 `lm` returned by `lm` (assuming no global spatial autocorrelation), or an object of class `sarlm` returned by a spatial simultaneous autoregressive model fit (assuming global spatial autocorrelation represented by the model spatial coefficient); weights may be specified in the `lm` fit, but offsets should not be used
`select` | an integer vector of the id. numbers of zones to be tested; if missing, all zones
`nb` | a list of neighbours of class `nb`
`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 `get.spChkOption()`
`resfun` | default: weighted.residuals; the function to be used to extract residuals from the `lm` object, may be `residuals`, `weighted.residuals`, `rstandard`, or `rstudent`
`Omega` | A SAR process matrix may be passed in to test an alternative hypothesis, for example `Omega <- invIrW(listw, rho=0.1); Omega <- tcrossprod(Omega)`, `chol()` is taken internally
`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 `as.data.frame.localmoranex`; row names assigned from localmoranex object
`optional` | ignored argument to `as.data.frame.localmoranex`; row names assigned from localmoranex object
`...` | 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 `qnorm`, when the Normal assumption is substituted. This only occurs when the output p-value would be very close to zero
`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.shp", 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)
    }

[Package spdep version 1.2-2 Index]