R: World 1-degree grid contiguity matrix

wrld_1deg {Matrix} | R Documentation

## World 1-degree grid contiguity matrix

### Description

This matrix represents the distance-based contiguities of 15260 one-degree grid cells of land areas. The representation is as a row standardised spatial weights matrix transformed to a symmetric matrix (see Ord (1975), p. 125).

### Usage

    data(wrld_1deg)

### Format

A 15260 ^2 symmetric sparse matrix of class `dsCMatrix` with 55973 non-zero entries.

### Details

The data were created into R using the coordinates of a ‘SpatialPixels’ object containing approximately one-degree grid cells for land areas only (world excluding Antarctica), using package spdep's `dnearneigh` with a cutoff distance of `sqrt(2)`, and row-standardised and transformed to symmetry using `nb2listw` and `similar.listw`. This spatial weights object was converted to a `dsTMatrix` using `as_dsTMatrix_listw` and then coerced (column-compressed).

### Source

The shoreline data was read into R using `Rgshhs` from the GSHHS coarse shoreline database distributed with the maptools package, omitting Antarctica. A matching approximately one-degree grid was generated using `Sobj_SpatialGrid`, and the grids on land were found using the appropriate `over` method for the ‘SpatialPolygons’ and ‘SpatialGrid’ objects, yielding a ‘SpatialPixels’ one containing only the grid cells with centres on land.

### References

Ord, J. K. (1975) Estimation methods for models of spatial interaction; Journal of the American Statistical Association 70, 120–126.

### Examples

    data(wrld_1deg)
    (n <- ncol(wrld_1deg))
    IM <- .symDiagonal(n)
    doExtras <- interactive() || nzchar(Sys.getenv("R_MATRIX_CHECK_EXTRA")) ||
        identical("true", unname(Sys.getenv("R_PKG_CHECKING_doExtras")))
    nn <- if(doExtras) 20 else 3
    set.seed(1)
    rho <- runif(nn, 0, 1)
    system.time(MJ <- sapply(rho,
                       function(x) determinant(IM - x * wrld_1deg,
                                               logarithm = TRUE)$modulus))
    nWC <- -wrld_1deg
    C1 <- Cholesky(nWC, Imult = 2)
    ## Note that det(<CHMfactor>) = det(L) = sqrt(det(A))
    ## ====> log det(A) = log( det(L)^2 ) = 2 * log det(L) :
    system.time(MJ1 <- n * log(rho) +
       sapply(rho, function(x) c(2* determinant(update(C1, nWC, 1/x))$modulus))
    )
    stopifnot(all.equal(MJ, MJ1))
    C2 <- Cholesky(nWC, super = TRUE, Imult = 2)
    system.time(MJ2 <- n * log(rho) +
       sapply(rho, function(x) c(2* determinant(update(C2, nWC, 1/x))$modulus))
    )
    system.time(MJ3 <- n * log(rho) + Matrix:::ldetL2up(C1, nWC, 1/rho))
    system.time(MJ4 <- n * log(rho) + Matrix:::ldetL2up(C2, nWC, 1/rho))
    stopifnot(all.equal(MJ, MJ2),
              all.equal(MJ, MJ3),
              all.equal(MJ, MJ4))

[Package Matrix version 1.3-4 Index]