knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(here)
source(here("src", "model_quadratic_grampians.R"))
covariate_nms <- c(
mlq = "Mean Moisture\nIndex Lowest\nQuarter",
mlq2 = "Mean Moisture\nIndex Lowest\nQuarter\u00b2",
twi = "Topographic\nWetness\nIndex",
twi2 = "Topographic\nWetness\nIndex\u00b2",
r1k = "Relief 1000m\nRadius",
r1k2 = "Relief 1000m\nRadius\u00b2",
tn = "Total Nitrogen",
tn2 = "Total Nitrogen\u00b2"
)
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, 5, 1, 1), lend = 1)
barplot(
full_sd[-1], las = 1, col = "darkgrey", border = NA, cex.names = .8,
mgp = c(3, 2, 0), ylim = c(0, 1.5), 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 = 30, inset = .05
)
box()
axis(2, las = 1)
mtext("Standard Deviations", 2, 3)

IycgLS0tCiMnIHRpdGxlOiAiRXhwbGFuYXRvcnkgcG93ZXIgb2YgdHJhaXRzIGluIHRoZSB0cmFpdC1lbnZpcm9ubWVudCBtb2RlbCB3aXRoCiMnICAgcXVhZHJhdGljIHJlc3BvbnNlcyIKIycgYXV0aG9yOiAiV2lsbGlhbSBLLiBNb3JyaXMiCiMnIGRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKIycgb3V0cHV0OgojJyAgIHJtYXJrZG93bjo6aHRtbF9ub3RlYm9vazoKIycgICAgIGNvZGVfZm9sZGluZzogaGlkZQojJyAtLS0KCiMrIHNldHVwLCBtZXNzYWdlPUZBTFNFCmtuaXRyOjpvcHRzX2NodW5rJHNldChjYWNoZSA9IFRSVUUsIGRldiA9IGMoInBuZyIsICJwZGYiKSkKbGlicmFyeShoZXJlKQpzb3VyY2UoaGVyZSgic3JjIiwgIm1vZGVsX3F1YWRyYXRpY19ncmFtcGlhbnMuUiIpKQoKY292YXJpYXRlX25tcyA8LSBjKAogIG1scSAgPSAiTWVhbiBNb2lzdHVyZVxuSW5kZXggTG93ZXN0XG5RdWFydGVyIiwKICBtbHEyID0gIk1lYW4gTW9pc3R1cmVcbkluZGV4IExvd2VzdFxuUXVhcnRlclx1MDBiMiIsCiAgdHdpICA9ICJUb3BvZ3JhcGhpY1xuV2V0bmVzc1xuSW5kZXgiLAogIHR3aTIgPSAiVG9wb2dyYXBoaWNcbldldG5lc3NcbkluZGV4XHUwMGIyIiwKICByMWsgID0gIlJlbGllZiAxMDAwbVxuUmFkaXVzIiwKICByMWsyID0gIlJlbGllZiAxMDAwbVxuUmFkaXVzXHUwMGIyIiwKICB0biAgID0gIlRvdGFsIE5pdHJvZ2VuIiwKICB0bjIgID0gIlRvdGFsIE5pdHJvZ2VuXHUwMGIyIgopCgojKyBwbG90c2RzLCBmaWcuaGVpZ2h0PTMsIGZpZy53aWR0aD03LjUsIGRldi5hcmdzPWxpc3QocG9pbnRzaXplPTgpCnJlc2lkdWFsX3ZhcmlhbmNlIDwtIFZhckNvcnIobW9kZWxfZ3JhbXBpYW5zKSR0YXhvbgoKdHJhaXRfdmFsdWVzIDwtIHVuaXF1ZShtZGdbYygidGF4b24iLCAic2xhIiwgInNtIiwgIm1oIildKQoKZnVsbF9zZCA8LSBzcXJ0KGRpYWcoY292KGFwcGx5KGNvZWZfc2ltcyhtb2RlbF9ncmFtcGlhbnMpLCAxOjIsIG1lYW4pKSkpCgpyZXNpZF9zZCA8LSBhdHRyKHJlc2lkdWFsX3ZhcmlhbmNlLCAic3RkZGV2IikKCnBhcihtYXIgPSBjKDQsIDUsIDEsIDEpLCBsZW5kID0gMSkKYmFycGxvdCgKICBmdWxsX3NkWy0xXSwgbGFzID0gMSwgY29sID0gImRhcmtncmV5IiwgYm9yZGVyID0gTkEsIGNleC5uYW1lcyA9IC44LAogIG1ncCA9IGMoMywgMiwgMCksIHlsaW0gPSBjKDAsIDEuNSksIHlheHQgPSAibiIsIHlsYWIgPSAiIiwKICBuYW1lcy5hcmcgPSBjb3ZhcmlhdGVfbm1zLAogIHBhbmVsLmxhc3QgPSBmb3IoaSBpbiBzZXEoLjIsIC44LCAuMikpIHsKICAgIGFibGluZShoPWksIGx0eSA9IDMsIHhwZCA9IEZBTFNFLCBjb2wgPSAiZ3JleSIpCiAgfQopCmJhcnBsb3QoCiAgcG1heCgwLCBmdWxsX3NkWy0xXSAtIHJlc2lkX3NkWy0xXSksIGNvbCA9ICJsaWdodGdyZXkiLCBhZGQgPSBUUlVFLAogIGF4ZXMgPSBGQUxTRSwgbmFtZXMuYXJnID0gTkEsIGJvcmRlciA9IE5BCikKbGVnZW5kKAogICJ0b3ByaWdodCIsCiAgbGVnZW5kID0gYygiVmFyaWF0aW9uXG5leHBsYWluZWRcbmJ5IHRyYWl0cyIsICJWYXJpYXRpb25cblVuZXhwbGFpbmVkIiksCiAgY29sID0gYygibGlnaHRncmV5IiwgImRhcmtncmV5IiksIG5jb2wgPSAyLCBidHkgPSAibiIsCiAgYm9yZGVyID0gTkEsIGx0eSA9IDEsIGx3ZCA9IDMwLCBpbnNldCA9IC4wNQopCmJveCgpCmF4aXMoMiwgbGFzID0gMSkKbXRleHQoIlN0YW5kYXJkIERldmlhdGlvbnMiLCAyLCAzKQo=