Learn R Programming

spdep (version 0.5-74)

trW: Spatial weights matrix powers traces

Description

The function is used to prepare a vector of traces of powers of a spatial weights matrix

Usage

trW(W=NULL, m = 30, p = 16, type = "mult", listw=NULL, momentsSymmetry=TRUE)
mom_calc(lw, m)
mom_calc_int2(is, m, nb, weights, Card)

Arguments

W
A spatial weights matrix in CsparseMatrix form
m
The number of powers; must be an even number for type=moments (default changed from 100 to 30 (2010-11-17))
p
The number of samples used in Monte Carlo simulation of the traces if type is MC (default changed from 50 to 16 (2010-11-17))
type
Either mult (default) for powering a sparse matrix (with moderate or larger N, the matrix becomes dense, and may lead to swapping), or MC for Monte Carlo simulation of the traces (the first two simulated traces are replac
listw, lw
a listw object, which should either be fully symmetric, or be constructed as similar to symmetric from intrinsically symmetric neighbours using similar.listw, used with type=m
momentsSymmetry
default TRUE; assert Smirnov/Anselin symmetry assumption
is
(used internally only in mom_calc_int2 for type=moments on a cluster)
nb
(used internally only in mom_calc_int2 for type=moments on a cluster)
weights
(used internally only in mom_calc_int2 for type=moments on a cluster)
Card
(used internally only in mom_calc_int2 for type=moments on a cluster)

Value

  • A numeric vector of m traces, with timings and type attributes; the type=MC also returns the standard deviation of the p-vector V divided by the square root of p as a measure of spread for the trace estimates.

References

LeSage J and RK Pace (2009) Introduction to Spatial Econometrics. CRC Press, Boca Raton, pp. 96--105; Smirnov O and L Anselin (2009) An O(N) parallel method of computing the Log-Jacobian of the variable transformation for models with spatial interaction on a lattice. Computational Statistics and Data Analysis 53 (2009) 2983--2984.

See Also

as_dgRMatrix_listw, nb2listw

Examples

Run this code
example(columbus)
listw <- nb2listw(col.gal.nb)
W <- as(as_dgRMatrix_listw(listw), "CsparseMatrix")
system.time(trMat <- trW(W, type="mult"))
str(trMat)
set.seed(1100)
system.time(trMC <- trW(W, type="MC"))
str(trMC)
plot(trMat, trMC)
abline(a=0, b=1)
for(i in 3:length(trMC)) {
 segments(trMat[i], trMC[i]-2*attr(trMC, "sd")[i], trMat[i],
  trMC[i]+2*attr(trMC, "sd")[i])
}
listwS <- similar.listw(listw)
W <- as(as(as_dgRMatrix_listw(listwS), "CsparseMatrix"), "symmetricMatrix")
system.time(trmom <- trW(W, m=24, type="moments"))
str(trmom)
all.equal(trMat[1:24], trmom, check.attributes=FALSE)
system.time(trMat <- trW(W, m=24, type="mult"))
str(trMat)
all.equal(trMat, trmom, check.attributes=FALSE)
set.seed(1)
system.time(trMC <- trW(W, m=24, type="MC"))
str(trMC)
data(boston)
listw <- nb2listw(boston.soi)
listwS <- similar.listw(listw)
system.time(trmom <- trW(listw=listwS, m=24, type="moments"))
str(trmom)
library(parallel)
nc <- detectCores(logical=FALSE)
coresOpt <- get.coresOption()
invisible(set.coresOption(nc))
if(!get.mcOption()) {
  cl <- makeCluster(get.coresOption())
  set.ClusterOption(cl)
}
system.time(trmomp <- trW(listw=listwS, m=24, type="moments"))
if(!get.mcOption()) {
  set.ClusterOption(NULL)
  stopCluster(cl)
}
all.equal(trmom, trmomp, check.attributes=FALSE)
invisible(set.coresOption(coresOpt))

Run the code above in your browser using DataLab