knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(here)
source(here("src", "model_linear_grampians.R"))
covariate_nms <- c(
mlq = "Mean\nMoisture\nIndex\nLowest\nQuarter",
twi = "Topographic\nWetness\nIndex",
r1k = "Relief\n1000m\nRadius",
tn = "Total\nNitrogen"
)
residual_variance <- VarCorr(model_grampians)$taxon
trait_values <- unique(mdg[c("taxon", "sla", "sm", "mh")])
full_sd <- sqrt(diag(cov(apply(coef_sims(model_grampians), 1:2, mean))))
resid_sd <- attr(residual_variance, "stddev")
par(mar = c(4.1, 5, 1, 1), lend = 1)
barplot(
full_sd[-1], las = 1, col = "darkgrey", border = NA,
mgp = c(3, 3.1, 0), ylim = c(0, 1), yaxt = "n", ylab = "",
names.arg = covariate_nms,
panel.last = for(i in seq(.2, .8, .2)) {
abline(h=i, lty = 3, xpd = FALSE, col = "grey")
}
)
barplot(
pmax(0, full_sd[-1] - resid_sd[-1]), col = "lightgrey", add = TRUE,
axes = FALSE, names.arg = NA, border = NA
)
legend(
"topright",
legend = c("Variation\nexplained\nby traits", "Variation\nUnexplained"),
col = c("lightgrey", "darkgrey"), ncol = 2, bty = "n",
border = NA, lty = 1, lwd = 20
)
box()
axis(2, las = 1)
mtext("Standard Deviations", 2, 3)

IycgLS0tCiMnIHRpdGxlOiAiRXhwbGFuYXRvcnkgcG93ZXIgb2YgdHJhaXRzIGluIHRoZSB0cmFpdC1lbnZpcm9ubWVudCBtb2RlbCB3aXRoIGxpbmVhciByZXNwb25zZXMiCiMnIGF1dGhvcjogIldpbGxpYW0gSy4gTW9ycmlzIgojJyBkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCiMnIG91dHB1dDoKIycgICBybWFya2Rvd246Omh0bWxfbm90ZWJvb2s6CiMnICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKIycgLS0tCgojKyBzZXR1cCwgbWVzc2FnZT1GQUxTRQprbml0cjo6b3B0c19jaHVuayRzZXQoY2FjaGUgPSBUUlVFLCBkZXYgPSBjKCJwbmciLCAicGRmIikpCmxpYnJhcnkoaGVyZSkKc291cmNlKGhlcmUoInNyYyIsICJtb2RlbF9saW5lYXJfZ3JhbXBpYW5zLlIiKSkKCmNvdmFyaWF0ZV9ubXMgPC0gYygKICBtbHEgID0gIk1lYW5cbk1vaXN0dXJlXG5JbmRleFxuTG93ZXN0XG5RdWFydGVyIiwKICB0d2kgID0gIlRvcG9ncmFwaGljXG5XZXRuZXNzXG5JbmRleCIsCiAgcjFrICA9ICJSZWxpZWZcbjEwMDBtXG5SYWRpdXMiLAogIHRuICAgPSAiVG90YWxcbk5pdHJvZ2VuIgopCgojKyBwbG90c2RzLCBmaWcuaGVpZ2h0PTMsIGZpZy53aWR0aD0zLjUsIGRldi5hcmdzPWxpc3QocG9pbnRzaXplPTgpCnJlc2lkdWFsX3ZhcmlhbmNlIDwtIFZhckNvcnIobW9kZWxfZ3JhbXBpYW5zKSR0YXhvbgoKdHJhaXRfdmFsdWVzIDwtIHVuaXF1ZShtZGdbYygidGF4b24iLCAic2xhIiwgInNtIiwgIm1oIildKQoKZnVsbF9zZCA8LSBzcXJ0KGRpYWcoY292KGFwcGx5KGNvZWZfc2ltcyhtb2RlbF9ncmFtcGlhbnMpLCAxOjIsIG1lYW4pKSkpCgpyZXNpZF9zZCA8LSBhdHRyKHJlc2lkdWFsX3ZhcmlhbmNlLCAic3RkZGV2IikKCnBhcihtYXIgPSBjKDQuMSwgNSwgMSwgMSksIGxlbmQgPSAxKQpiYXJwbG90KAogIGZ1bGxfc2RbLTFdLCBsYXMgPSAxLCBjb2wgPSAiZGFya2dyZXkiLCBib3JkZXIgPSBOQSwKICBtZ3AgPSBjKDMsIDMuMSwgMCksIHlsaW0gPSBjKDAsIDEpLCB5YXh0ID0gIm4iLCB5bGFiID0gIiIsCiAgbmFtZXMuYXJnID0gY292YXJpYXRlX25tcywKICBwYW5lbC5sYXN0ID0gZm9yKGkgaW4gc2VxKC4yLCAuOCwgLjIpKSB7CiAgICBhYmxpbmUoaD1pLCBsdHkgPSAzLCB4cGQgPSBGQUxTRSwgY29sID0gImdyZXkiKQogIH0KKQpiYXJwbG90KAogIHBtYXgoMCwgZnVsbF9zZFstMV0gLSByZXNpZF9zZFstMV0pLCBjb2wgPSAibGlnaHRncmV5IiwgYWRkID0gVFJVRSwKICBheGVzID0gRkFMU0UsIG5hbWVzLmFyZyA9IE5BLCBib3JkZXIgPSBOQQopCmxlZ2VuZCgKICAidG9wcmlnaHQiLAogIGxlZ2VuZCA9IGMoIlZhcmlhdGlvblxuZXhwbGFpbmVkXG5ieSB0cmFpdHMiLCAiVmFyaWF0aW9uXG5VbmV4cGxhaW5lZCIpLAogIGNvbCA9IGMoImxpZ2h0Z3JleSIsICJkYXJrZ3JleSIpLCBuY29sID0gMiwgYnR5ID0gIm4iLAogIGJvcmRlciA9IE5BLCBsdHkgPSAxLCBsd2QgPSAyMAopCmJveCgpCmF4aXMoMiwgbGFzID0gMSkKbXRleHQoIlN0YW5kYXJkIERldmlhdGlvbnMiLCAyLCAzKQo=