mat2listw function

Convert a square spatial weights matrix to a weights list object

Convert a square spatial weights matrix to a weights list object

The function converts a square spatial weights matrix, optionally a sparse matrix to a weights list object, optionally adding region IDs from the row names of the matrix, as a sequence of numbers 1:nrow(x), or as given as an argument. The style can be imposed by rebuilting the weights list object internally.

mat2listw(x, row.names = NULL, style=NULL, zero.policy = NULL)

Arguments

  • x: A square non-negative matrix with no NAs representing spatial weights; may be a matrix of class sparseMatrix
  • row.names: row names to use for region IDs
  • style: default NULL, missing, set to "M" and warning given; if not "M", passed to nb2listw to re-build the object
  • zero.policy: default NULL, use global option value; if FALSE stop with error for any empty neighbour sets, if TRUE permit the weights list to be formed with zero-length weights vectors

Returns

A listw object with the following members: - style: "M", meaning matrix style, underlying style unknown, or assigned style argument in rebuilt object

  • neighbours: the derived neighbours list

  • weights: the weights for the neighbours derived from the matrix

Author(s)

Roger Bivand Roger.Bivand@nhh.no

See Also

nb2listw, nb2mat

Examples

columbus <- st_read(system.file("shapes/columbus.gpkg", package="spData")[1], quiet=TRUE) col005 <- dnearneigh(st_coordinates(st_centroid(st_geometry(columbus), of_largest_polygon=TRUE)), 0, 0.5, as.character(columbus$NEIGNO)) summary(col005) col005.w.mat <- nb2mat(col005, style="W", zero.policy=TRUE) try(col005.w.b <- mat2listw(col005.w.mat, style="W")) col005.w.b <- mat2listw(col005.w.mat, style="W", zero.policy=TRUE) summary(col005.w.b$neighbours) diffnb(col005, col005.w.b$neighbours) col005.w.mat.3T <- kronecker(diag(3), col005.w.mat) col005.w.b.3T <- mat2listw(col005.w.mat.3T, style="W", zero.policy=TRUE) summary(col005.w.b.3T$neighbours) run <- FALSE if (require("spatialreg", quiet=TRUE)) run <- TRUE if (run) { W <- as(nb2listw(col005, style="W", zero.policy=TRUE), "CsparseMatrix") try(col005.spM <- mat2listw(W)) col005.spM <- mat2listw(W, style="W", zero.policy=TRUE) summary(col005.spM$neighbours) } if (run) { diffnb(col005, col005.spM$neighbours) } if (run && require("Matrix", quiet=TRUE)) { IW <- kronecker(Diagonal(3), W) col005.spM.3T <- mat2listw(as(IW, "CsparseMatrix"), style="W", zero.policy=TRUE) summary(col005.spM.3T$neighbours) }
  • Maintainer: Roger Bivand
  • License: GPL (>= 2)
  • Last published: 2025-01-20

Downloads (last 30 days):