BB, BW and Jtot join count statistic for k-coloured factors

A function for tallying join counts between same-colour and different colour spatial objects, where neighbour relations are defined by a weights list. Given the global counts in each colour, expected counts and variances are calculated under non-free sampling, and a z-value reported. Since multiple tests are reported, no p-values are given, allowing the user to adjust the significance level applied. Jtot is the count of all different-colour joins.

joincount.multi(fx, listw, zero.policy = FALSE, spChk = NULL, adjust.n=TRUE) "print"(x, ...)
a factor of the same length as the neighbours and weights objects in listw
a listw object created for example by nb2listw
if TRUE assign zero to the lagged value of zones without neighbours, if FALSE assign NA
default TRUE, if FALSE the number of observations is not adjusted for no-neighbour observations, if TRUE, the number of observations is adjusted consistently (up to and including spdep 0.3-28 the adjustment was inconsistent - thanks to Tomoki NAKAYA for a careful bug report)
should the data vector names be checked against the spatial objects for identity integrity, TRUE, or FALSE, default NULL to use get.spChkOption()
object to be printed
arguments to be passed through for printing

A matrix with class jcmulti with row and column names for observed and expected counts, variance, and z-value.


The derivation of the test (Cliff and Ord, 1981, p. 18) assumes that the weights matrix is symmetric. For inherently non-symmetric matrices, such as k-nearest neighbour matrices, listw2U() can be used to make the matrix symmetric. In non-symmetric weights matrix cases, the variance of the test statistic may be negative.


Cliff, A. D., Ord, J. K. 1981 Spatial processes, Pion, p. 20; Upton, G., Fingleton, B. 1985 Spatial data analysis by example: point pattern and quatitative data, Wiley, pp. 158--170.

See Also


  • joincount.multi
  • print.jcmulti
HICRIME <- cut(COL.OLD$CRIME, breaks=c(0,35,80), labels=c("low","high"))
names(HICRIME) <- rownames(COL.OLD)
joincount.multi(HICRIME, nb2listw(COL.nb, style="B"))
## Not run: 
# data(hopkins)
# image(1:32, 1:32, hopkins[5:36,36:5], breaks=c(-0.5, 3.5, 20),
#  col=c("white", "black"))
# box()
# hopkins.rook.nb <- cell2nb(32, 32, type="rook")
# unlist(spweights.constants(nb2listw(hopkins.rook.nb, style="B")))
# hopkins.queen.nb <- cell2nb(32, 32, type="queen")
# hopkins.bishop.nb <- diffnb(hopkins.rook.nb, hopkins.queen.nb, verbose=FALSE)
# hopkins4 <- hopkins[5:36,36:5]
# hopkins4[which(hopkins4 > 3, arr.ind=TRUE)] <- 4
# hopkins4.f <- factor(hopkins4)
# table(hopkins4.f)
# joincount.multi(hopkins4.f, nb2listw(hopkins.rook.nb, style="B"))
# cat("replicates Upton & Fingleton table 3.4 (p. 166)\n")
# joincount.multi(hopkins4.f, nb2listw(hopkins.bishop.nb, style="B"))
# cat("replicates Upton & Fingleton table 3.6 (p. 168)\n")
# joincount.multi(hopkins4.f, nb2listw(hopkins.queen.nb, style="B"))
# cat("replicates Upton & Fingleton table 3.7 (p. 169)\n")
# ## End(Not run)
Documentation reproduced from package spdep, version 0.6-9, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.