knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(here)
library(eucs)
library(gaussDiff)
library(raster)
library(rgeos)
library(vegan)
Calculate the geographic distance between the centroid of the Greater Grampians IBRA subregion and the centroids of the other South-eastern subregions.
rgn_names <- sort(unique(southeast$ibra_subregion))
ibra_subs <- aggregate(map_ibra_southeast, by = "IBRA_SUB_N")
centroids <- gCentroid(
ibra_subs, byid = TRUE, id = ibra_subs@data$IBRA_SUB_N
)
dists <- spDistsN1(centroids, centroids["Greater Grampians"], TRUE)
dists <- dists[rownames(centroids@coords) %in% rgn_names]
names(dists) <- rgn_names
Calculate the Kullback-Leibler distance between the Grampians and the other regions based on the environment defined by relief, topographic wetness, moisture index and sand.
vars <- c(
"mean_moisture_index_of_low_qtr", "topographic_wetness_index_3sec",
"relief_1000m_radius", "total_nitrogen"
)
kldists <- vapply(
rgn_names,
function(x) {
r <- covariates_southeast$ibra_subregion == x
f <- function(x, y) {
x <- na.omit(as.matrix(x))
for (i in y) {
x[, i] <- log(x[, i])
}
x
}
s <- f(covariates_southeast[r, vars], c(1, 3))
g <- f(covariates_grampians[vars], c(1, 3))
normdiff(colMeans(g), cov(g), colMeans(s), cov(s), method = "KL")
},
numeric(1)
)
cat(
round(cor(dists, kldists), 1),
file = here(
"notebooks/environmental_distance_metrics_files/figure-html/kldistcor.tex"
)
)
kldists_univariate <- lapply(
rgn_names,
function(x) {
r <- covariates_southeast$ibra_subregion == x
f <- function(x, y) {
x <- na.omit(as.matrix(x))
for (i in y) {
x[, i] <- log(x[, i])
}
x
}
s <- f(covariates_southeast[r, vars], c(1, 3))
g <- f(covariates_grampians[vars], c(1, 3))
ans <- sapply(
1:4,
function(i) {
normdiff(
mean(g[, i]), matrix(var(g[, i])), mean(s[, i]), matrix(var(s[, i])),
method = "KL"
)
}
)
ans <- rbind(ans)
rownames(ans) <- x
colnames(ans) <- vars
ans
}
)
kldists_univariate <- do.call(rbind, kldists_univariate)
colnames(kldists_univariate) <- c("mlq", "twi", "r1k", "tn")
kldists_univariate <- reshape(
data.frame(region = rownames(kldists_univariate), kldists_univariate),
idvar = "region",
varying = colnames(kldists_univariate),
v.names = "kldist_var",
timevar = "var",
times = colnames(kldists_univariate),
direction = "long",
new.row.names = 1:length(kldists_univariate)
)
Calculate the Jaccard dissimilarity between the Grampians and the Southeast IBRA subregions.
subreg_prev <- do.call(
rbind,
lapply(
split(wide_southeast[-1:-6], wide_southeast$ibra_subregion), colMeans
)
)
grampians_prev <- colMeans(wide_grampians[-1:-5])
grampians_only <- setdiff(names(grampians_prev), colnames(subreg_prev))
southeast_only <- setdiff(colnames(subreg_prev), names(grampians_prev))
grampians_extra <- rep(0, length(southeast_only))
southeast_extra <- matrix(0, nrow = NROW(subreg_prev), length(grampians_only))
names(grampians_extra) <- southeast_only
colnames(southeast_extra) <- grampians_only
rownames(southeast_extra) <- rownames(subreg_prev)
subreg_prev <- cbind(subreg_prev, southeast_extra)
grampians_prev <- c(grampians_prev, grampians_extra)
subreg_prev <- subreg_prev[, sort(colnames(subreg_prev))]
grampians_prev <- grampians_prev[sort(names(grampians_prev))]
subreg_prev <- rbind(grampians_prev, subreg_prev)
community_dist <- as.matrix(
vegdist(subreg_prev, method = "jaccard")
)[rgn_names, "grampians_prev"]
Plot of geographic and Jaccard distances of IBRA subregions from the Grampians.
par(mfrow = c(1, 2), oma = c(5, 0, 1, 1), mar = c(0, 5, 0, 0))
plot(
dists, community_dist, las = 1, xlab = "",
ylab = "Jaccard dissimilarity", pch = 19, xlim = c(0, 1000),
ylim = c(.8, 1.01)
)
text(
dists, community_dist, rgn_names,cex = .75,
pos =
ifelse(
rgn_names %in% c(
"Strzelecki Ranges", "East Gippsland Lowlands", "Monaro",
"Highlands-Northern Fall", "Snowy Mountains",
"Lower Slopes", "Bateman"
),
2,
ifelse(
rgn_names == "Jervis",
3,
ifelse(rgn_names %in% c("Victorian Alps", "Ettrema"), 1, 4)
)
)
)
plot(
dists, kldists, las = 1, xlab = "Distance from Grampians (km)",
ylab = "Kullback Leibler Divergence", pch = 19, xlim = c(0, 1000),
ylim = c(5, 35)
)
text(
dists, kldists, rgn_names,
pos =
ifelse(
rgn_names %in% c(
"Strzelecki Ranges", "Highlands-Southern Fall",
"Bondo", "Monaro", "Jervis", "East Gippsland Lowlands"
),
2, 4
),
cex = .75
)
mtext("Distance from Grampians (km)", 1, 3, outer = TRUE)

IycgLS0tCiMnIHRpdGxlOiAiTWV0cmljcyBvZiBlbnZpcm9ubWVudGFsIGFuZCBjb21tdW5pdHkgZGlzc2ltaWxhcml0eSBiZXR3ZWVuIHJlZ2lvbnMiCiMnIGF1dGhvcjogIldpbGxpYW0gSy4gTW9ycmlzIgojJyBkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCiMnIG91dHB1dDoKIycgICBybWFya2Rvd246Omh0bWxfbm90ZWJvb2s6CiMnICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKIycgLS0tCgojKyBzZXR1cCwgbWVzc2FnZT1GQUxTRQprbml0cjo6b3B0c19jaHVuayRzZXQoY2FjaGUgPSBUUlVFLCBkZXYgPSBjKCJwbmciLCAicGRmIikpCmxpYnJhcnkoaGVyZSkKbGlicmFyeShldWNzKQpsaWJyYXJ5KGdhdXNzRGlmZikKbGlicmFyeShyYXN0ZXIpCmxpYnJhcnkocmdlb3MpCmxpYnJhcnkodmVnYW4pCgojJyBDYWxjdWxhdGUgdGhlIGdlb2dyYXBoaWMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY2VudHJvaWQgb2YgdGhlIEdyZWF0ZXIKIycgR3JhbXBpYW5zIElCUkEgc3VicmVnaW9uIGFuZCB0aGUgY2VudHJvaWRzIG9mIHRoZSBvdGhlciBTb3V0aC1lYXN0ZXJuCiMnIHN1YnJlZ2lvbnMuCiMrIGdlb2dyYXBoaWMtZGlzdCwgbWVzc2FnZT1GQUxTRSwgd2FyaW5nPUZBTFNFCnJnbl9uYW1lcyA8LSBzb3J0KHVuaXF1ZShzb3V0aGVhc3QkaWJyYV9zdWJyZWdpb24pKQppYnJhX3N1YnMgPC0gYWdncmVnYXRlKG1hcF9pYnJhX3NvdXRoZWFzdCwgYnkgPSAiSUJSQV9TVUJfTiIpCmNlbnRyb2lkcyA8LSBnQ2VudHJvaWQoCiAgaWJyYV9zdWJzLCBieWlkID0gVFJVRSwgaWQgPSBpYnJhX3N1YnNAZGF0YSRJQlJBX1NVQl9OCikKZGlzdHMgICAgIDwtIHNwRGlzdHNOMShjZW50cm9pZHMsIGNlbnRyb2lkc1siR3JlYXRlciBHcmFtcGlhbnMiXSwgVFJVRSkKZGlzdHMgICAgIDwtIGRpc3RzW3Jvd25hbWVzKGNlbnRyb2lkc0Bjb29yZHMpICVpbiUgcmduX25hbWVzXQpuYW1lcyhkaXN0cykgPC0gcmduX25hbWVzCgojJyBDYWxjdWxhdGUgdGhlIEt1bGxiYWNrLUxlaWJsZXIgZGlzdGFuY2UgYmV0d2VlbiB0aGUgR3JhbXBpYW5zIGFuZCB0aGUgb3RoZXIKIycgcmVnaW9ucyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgZGVmaW5lZCBieSByZWxpZWYsIHRvcG9ncmFwaGljIHdldG5lc3MsCiMnIG1vaXN0dXJlIGluZGV4IGFuZCBzYW5kLgojKyBrbC1kaXN0cwp2YXJzIDwtIGMoCiAgIm1lYW5fbW9pc3R1cmVfaW5kZXhfb2ZfbG93X3F0ciIsICJ0b3BvZ3JhcGhpY193ZXRuZXNzX2luZGV4XzNzZWMiLAogICJyZWxpZWZfMTAwMG1fcmFkaXVzIiwgInRvdGFsX25pdHJvZ2VuIgopCgprbGRpc3RzIDwtIHZhcHBseSgKICByZ25fbmFtZXMsCiAgZnVuY3Rpb24oeCkgewogICAgciA8LSBjb3ZhcmlhdGVzX3NvdXRoZWFzdCRpYnJhX3N1YnJlZ2lvbiA9PSB4CiAgICBmIDwtIGZ1bmN0aW9uKHgsIHkpIHsKICAgICAgeCA8LSBuYS5vbWl0KGFzLm1hdHJpeCh4KSkKICAgICAgZm9yIChpIGluIHkpIHsKICAgICAgICB4WywgaV0gPC0gbG9nKHhbLCBpXSkKICAgICAgfQogICAgICB4CiAgICB9CiAgICBzIDwtIGYoY292YXJpYXRlc19zb3V0aGVhc3RbciwgdmFyc10sIGMoMSwgMykpCiAgICBnIDwtIGYoY292YXJpYXRlc19ncmFtcGlhbnNbdmFyc10sIGMoMSwgMykpCiAgICBub3JtZGlmZihjb2xNZWFucyhnKSwgY292KGcpLCBjb2xNZWFucyhzKSwgY292KHMpLCBtZXRob2QgPSAiS0wiKQogIH0sCiAgbnVtZXJpYygxKQopCgpjYXQoCiAgcm91bmQoY29yKGRpc3RzLCBrbGRpc3RzKSwgMSksCiAgZmlsZSA9IGhlcmUoCiAgICAibm90ZWJvb2tzL2Vudmlyb25tZW50YWxfZGlzdGFuY2VfbWV0cmljc19maWxlcy9maWd1cmUtaHRtbC9rbGRpc3Rjb3IudGV4IgogICkKKQoKa2xkaXN0c191bml2YXJpYXRlIDwtIGxhcHBseSgKICByZ25fbmFtZXMsCiAgZnVuY3Rpb24oeCkgewogICAgciA8LSBjb3ZhcmlhdGVzX3NvdXRoZWFzdCRpYnJhX3N1YnJlZ2lvbiA9PSB4CiAgICBmIDwtIGZ1bmN0aW9uKHgsIHkpIHsKICAgICAgeCA8LSBuYS5vbWl0KGFzLm1hdHJpeCh4KSkKICAgICAgZm9yIChpIGluIHkpIHsKICAgICAgICB4WywgaV0gPC0gbG9nKHhbLCBpXSkKICAgICAgfQogICAgICB4CiAgICB9CiAgICBzIDwtIGYoY292YXJpYXRlc19zb3V0aGVhc3RbciwgdmFyc10sIGMoMSwgMykpCiAgICBnIDwtIGYoY292YXJpYXRlc19ncmFtcGlhbnNbdmFyc10sIGMoMSwgMykpCiAgICBhbnMgPC0gc2FwcGx5KAogICAgICAxOjQsCiAgICAgIGZ1bmN0aW9uKGkpIHsKICAgICAgICBub3JtZGlmZigKICAgICAgICAgIG1lYW4oZ1ssIGldKSwgbWF0cml4KHZhcihnWywgaV0pKSwgbWVhbihzWywgaV0pLCBtYXRyaXgodmFyKHNbLCBpXSkpLAogICAgICAgICAgbWV0aG9kID0gIktMIgogICAgICAgICkKICAgICAgfQogICAgKQogICAgYW5zIDwtIHJiaW5kKGFucykKICAgIHJvd25hbWVzKGFucykgPC0geAogICAgY29sbmFtZXMoYW5zKSA8LSB2YXJzCiAgICBhbnMKICB9CikKCmtsZGlzdHNfdW5pdmFyaWF0ZSA8LSBkby5jYWxsKHJiaW5kLCBrbGRpc3RzX3VuaXZhcmlhdGUpCmNvbG5hbWVzKGtsZGlzdHNfdW5pdmFyaWF0ZSkgPC0gYygibWxxIiwgInR3aSIsICJyMWsiLCAidG4iKQoKa2xkaXN0c191bml2YXJpYXRlIDwtIHJlc2hhcGUoCiAgZGF0YS5mcmFtZShyZWdpb24gPSByb3duYW1lcyhrbGRpc3RzX3VuaXZhcmlhdGUpLCBrbGRpc3RzX3VuaXZhcmlhdGUpLAogIGlkdmFyID0gInJlZ2lvbiIsCiAgdmFyeWluZyA9IGNvbG5hbWVzKGtsZGlzdHNfdW5pdmFyaWF0ZSksCiAgdi5uYW1lcyA9ICJrbGRpc3RfdmFyIiwKICB0aW1ldmFyID0gInZhciIsCiAgdGltZXMgPSBjb2xuYW1lcyhrbGRpc3RzX3VuaXZhcmlhdGUpLAogIGRpcmVjdGlvbiA9ICJsb25nIiwKICBuZXcucm93Lm5hbWVzID0gMTpsZW5ndGgoa2xkaXN0c191bml2YXJpYXRlKQopCgojJyBDYWxjdWxhdGUgdGhlIEphY2NhcmQgZGlzc2ltaWxhcml0eSBiZXR3ZWVuIHRoZSBHcmFtcGlhbnMgYW5kIHRoZSBTb3V0aGVhc3QKIycgSUJSQSBzdWJyZWdpb25zLgojKwpzdWJyZWdfcHJldiA8LSBkby5jYWxsKAogIHJiaW5kLAogIGxhcHBseSgKICAgIHNwbGl0KHdpZGVfc291dGhlYXN0Wy0xOi02XSwgd2lkZV9zb3V0aGVhc3QkaWJyYV9zdWJyZWdpb24pLCBjb2xNZWFucwogICkKKQpncmFtcGlhbnNfcHJldiA8LSBjb2xNZWFucyh3aWRlX2dyYW1waWFuc1stMTotNV0pCmdyYW1waWFuc19vbmx5IDwtIHNldGRpZmYobmFtZXMoZ3JhbXBpYW5zX3ByZXYpLCBjb2xuYW1lcyhzdWJyZWdfcHJldikpCnNvdXRoZWFzdF9vbmx5IDwtIHNldGRpZmYoY29sbmFtZXMoc3VicmVnX3ByZXYpLCBuYW1lcyhncmFtcGlhbnNfcHJldikpCmdyYW1waWFuc19leHRyYSA8LSByZXAoMCwgbGVuZ3RoKHNvdXRoZWFzdF9vbmx5KSkKc291dGhlYXN0X2V4dHJhIDwtIG1hdHJpeCgwLCBucm93ID0gTlJPVyhzdWJyZWdfcHJldiksIGxlbmd0aChncmFtcGlhbnNfb25seSkpCm5hbWVzKGdyYW1waWFuc19leHRyYSkgPC0gc291dGhlYXN0X29ubHkKY29sbmFtZXMoc291dGhlYXN0X2V4dHJhKSA8LSBncmFtcGlhbnNfb25seQpyb3duYW1lcyhzb3V0aGVhc3RfZXh0cmEpIDwtIHJvd25hbWVzKHN1YnJlZ19wcmV2KQpzdWJyZWdfcHJldiA8LSBjYmluZChzdWJyZWdfcHJldiwgc291dGhlYXN0X2V4dHJhKQpncmFtcGlhbnNfcHJldiA8LSBjKGdyYW1waWFuc19wcmV2LCBncmFtcGlhbnNfZXh0cmEpCnN1YnJlZ19wcmV2IDwtIHN1YnJlZ19wcmV2Wywgc29ydChjb2xuYW1lcyhzdWJyZWdfcHJldikpXQpncmFtcGlhbnNfcHJldiA8LSBncmFtcGlhbnNfcHJldltzb3J0KG5hbWVzKGdyYW1waWFuc19wcmV2KSldCnN1YnJlZ19wcmV2IDwtIHJiaW5kKGdyYW1waWFuc19wcmV2LCBzdWJyZWdfcHJldikKY29tbXVuaXR5X2Rpc3QgPC0gYXMubWF0cml4KAogIHZlZ2Rpc3Qoc3VicmVnX3ByZXYsIG1ldGhvZCA9ICJqYWNjYXJkIikKKVtyZ25fbmFtZXMsICJncmFtcGlhbnNfcHJldiJdCgojJyBQbG90IG9mIGdlb2dyYXBoaWMgYW5kIEphY2NhcmQgZGlzdGFuY2VzIG9mIElCUkEgc3VicmVnaW9ucyBmcm9tIHRoZQojJyBHcmFtcGlhbnMuCiMrIHBsb3QtamFjYywgZmlnLndpZHRoPTcuNSwgZmlnLmhlaWdodD0zLjUsIGRldi5hcmdzPWxpc3QocG9pbnRzaXplPTgpCnBhcihtZnJvdyA9IGMoMSwgMiksIG9tYSA9IGMoNSwgMCwgMSwgMSksIG1hciA9IGMoMCwgNSwgMCwgMCkpCgpwbG90KAogIGRpc3RzLCBjb21tdW5pdHlfZGlzdCwgbGFzID0gMSwgeGxhYiA9ICIiLAogIHlsYWIgPSAiSmFjY2FyZCBkaXNzaW1pbGFyaXR5IiwgcGNoID0gMTksIHhsaW0gPSBjKDAsIDEwMDApLAogIHlsaW0gPSBjKC44LCAxLjAxKQopCnRleHQoCiAgZGlzdHMsIGNvbW11bml0eV9kaXN0LCByZ25fbmFtZXMsY2V4ID0gLjc1LAogIHBvcyA9CiAgICBpZmVsc2UoCiAgICAgIHJnbl9uYW1lcyAlaW4lIGMoCiAgICAgICAgIlN0cnplbGVja2kgUmFuZ2VzIiwgIkVhc3QgR2lwcHNsYW5kIExvd2xhbmRzIiwgIk1vbmFybyIsCiAgICAgICAgIkhpZ2hsYW5kcy1Ob3J0aGVybiBGYWxsIiwgIlNub3d5IE1vdW50YWlucyIsCiAgICAgICAgIkxvd2VyIFNsb3BlcyIsICJCYXRlbWFuIgogICAgICApLAogICAgICAyLAogICAgICBpZmVsc2UoCiAgICAgICAgcmduX25hbWVzID09ICJKZXJ2aXMiLAogICAgICAgIDMsCiAgICAgICAgaWZlbHNlKHJnbl9uYW1lcyAlaW4lIGMoIlZpY3RvcmlhbiBBbHBzIiwgIkV0dHJlbWEiKSwgMSwgNCkKICAgICAgKQogICAgKQopCgpwbG90KAogIGRpc3RzLCBrbGRpc3RzLCBsYXMgPSAxLCB4bGFiID0gIkRpc3RhbmNlIGZyb20gR3JhbXBpYW5zIChrbSkiLAogIHlsYWIgPSAiS3VsbGJhY2sgTGVpYmxlciBEaXZlcmdlbmNlIiwgcGNoID0gMTksIHhsaW0gPSBjKDAsIDEwMDApLAogIHlsaW0gPSBjKDUsIDM1KQopCnRleHQoCiAgZGlzdHMsIGtsZGlzdHMsIHJnbl9uYW1lcywKICBwb3MgPQogICAgaWZlbHNlKAogICAgICByZ25fbmFtZXMgJWluJSBjKAogICAgICAgICJTdHJ6ZWxlY2tpIFJhbmdlcyIsICJIaWdobGFuZHMtU291dGhlcm4gRmFsbCIsCiAgICAgICAgIkJvbmRvIiwgIk1vbmFybyIsICJKZXJ2aXMiLCAiRWFzdCBHaXBwc2xhbmQgTG93bGFuZHMiCiAgICAgICksCiAgICAgIDIsIDQKICAgICksCiAgY2V4ID0gLjc1CikKbXRleHQoIkRpc3RhbmNlIGZyb20gR3JhbXBpYW5zIChrbSkiLCAxLCAzLCBvdXRlciA9IFRSVUUpCg==