if (require(spdep)) {
data(segdata)
segdata.df <- data.frame(segdata)
segdata.nb <- nb2mat(poly2nb(segdata, queen = FALSE), style = "B")
segdata.nb <- segdata.nb / sum(segdata.nb)
dd <- numeric(); dm <- numeric()
par(mfrow = c(2, 4), mar = c(0, 1, 0, 1))
for (i in 1:8) {
idx <- 2 * i
dd <- append(dd, seg(segdata.df[,(idx-1):idx]))
dm <- append(dm, seg(segdata.df[,(idx-1):idx], segdata.nb))
full <- segdata.df[,(idx-1)] == 100
half <- segdata.df[,(idx-1)] == 50
plot(segdata)
plot(segdata[full,], col = "Black", add = TRUE)
if (any(half))
plot(segdata[half,], col = "Grey", add = TRUE)
text(5, 11.5, labels = paste("D = ", round(dd[i], 2),
", D(adj) = ", round(dm[i], 2), sep = ""))
}
data(nzcity)
dd2 <- numeric(); dm2 <- numeric()
for (i in 1:16) {
city.df <- data.frame(nzcity[[i]])
city.df <- cbind(city.df[,4], apply(city.df[,c(2:3, 5:7)], 1, sum))
city.nb <- nb2mat(poly2nb(nzcity[[i]], queen = FALSE), style = "B",
zero.policy = TRUE)
city.nb <- city.nb / sum(city.nb)
dd2 <- append(dd2, seg(city.df))
dm2 <- append(dm2, seg(city.df, city.nb))
}
nzcity.lm <- lm(dm2 ~ dd2)
summary(nzcity.lm)
plot(dd2, dm2, xlab = "D", ylab = "D(adj)",
main = paste("Residential Segregation of
",
"Pacific Peoples in 16 New Zealand Cities", sep = ""))
abline(a = nzcity.lm$coefficients[1],
b = nzcity.lm$coefficients[2], col = "Red", lty = "dotted")
which.pos <- c(3, 2, 2, 3, 3, 3, 2, 3, 3, 4, 3, 2, 3, 3, 3, 1)
text(dd2, dm2, pos = which.pos, labels = names(nzcity), cex = 0.8)
}
Run the code above in your browser using DataLab