An example of a logistic regression being used to estimate the probability of multiple species' presences along a number of environmental gradients. Instead of assuming independence of species regression coefficients, we assume they are drawn from a shared distribution. We partially pool species responses. This gives us not ony the regression coefficients for each species but also a global average coefficient and a measure of variation between species responses to environmental gradients.
# make fake data n_species <- 5 n_env <- 1 n_sites <- 50 env <- matrix(rnorm(n_sites * n_env), nrow = n_sites) occupancy <- matrix(rbinom(n_sites * n_species, 1, 0.5), nrow = n_sites)
global_alpha <- normal(0, 10, dim = 1) global_alpha_sd <- uniform(0, 10, dim = 1) alpha <- normal(global_alpha, global_alpha_sd, dim = n_species) global_betas <- normal(0, 10, dim = n_env) global_betas_sd <- uniform(0, 10, dim = n_env) beta <- normal(global_betas, global_betas_sd, dim = c(n_env, n_species)) env_effect <- env %*% beta # add intercepts for all species linear_predictor <- sweep(env_effect, 2, alpha, FUN = '+') # ilogit of linear predictor p <- ilogit(linear_predictor) distribution(occupancy) <- bernoulli(p)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.