Interpretting Plots from msPGOcc() using MCMCplot() from MCMCvis, changing back to probabilities, meaning of intercept

21 views
Skip to first unread message

annie finneran

unread,
Nov 24, 2025, 12:47:33 PM (4 days ago) Nov 24
to spOccupancy and spAbundance users
Hello,
My name is Annie and Im a 4th year PhD student at Rice. I am doing multi-species occupancy modeling with the function msPGOcc(). I want to visualize how the covariates impact occupancy at the community level. My code and plot is below. I am emailing to inquire if using MCMCplot() is normal with the functions of SpOccupancy and if my interepration of the plot is correct. Each variable on the y-axis is one of my occupancy covariates, so then each CI is showing the impact of that covariate on occupancy? None of mine are statistically significant, but for example, if distance to edge was significant in the negative direction then this means distance to edge has a negative impact on occupancy? Or is there a more specific way to discuss this?

I am also curious about interpretting the intercept of these models (not included in the plot) and about when to transform out of the logit scale to get actual occupancy probabilities? Do we only want to back-transform if we want to say a specific value of occupancy probability for a species or would we also want to make MCMCplot coefficent plot with probabilities? Im just trying to make sure I understand my results and interpreting them. My goal to to explain the impact of these covariates on occupancy. Thank you for any and all help, its a great package :-)

formula_all <- ~ Distance_to_Edge + Forest_Type + Hololens_Measure + Canopy_Cover_Percentage + Elevation + Distance_to_National_Park # All Variables Model ----------------------------------------------------- model_1 <- msPGOcc( occ.formula = formula_all, det.formula = ~1, data = array_list, n.samples = 25000, # total number of MCMC samples n.burn = 5000, # how many samples to discard as burn-in n.thin = 5, # thinning to reduce autocorrelation n.chains = 5 # number of MCMC chains ) # Occupancy community-level effects MCMCplot(model_1$beta.comm.samples, ref_ovl = TRUE, ci = c(50, 95))


Screenshot 2025-11-21 at 14.54.08.png

Matthew Hyde

unread,
Nov 24, 2025, 2:36:44 PM (4 days ago) Nov 24
to annie finneran, spOccupancy and spAbundance users
Hi Annie,

Yes, it is normal to use MCMCplot() to look at the effect of your covariates on occupancy in spOccupancy. The dot on the plot is the estimate for each of the parameters of your model tells you whether it has a positive or negative effect, and the CI represents the uncertainty around the estimate, with the thicker line being the 50% CI and thinner is 95% CI, per your code. Like you mentioned, the CIs give you evidence of whether the parameter has a meaningful relationship with occupancy if it does not cross zero. If distance from forest edge had a negative estimate and the CI did not cross zero, you would say that occupancy is negatively correlated with distance from forest edge.

On the second part of your question, what you want to present (e.g., occupancy in the study area, factors that affect occupancy, predicting occupancy across an area) really depends on your research question. If your goal is to describe the effect of your covariates on community occupancy, then having a caterpillar plot (the MCMCplot()) is a common approach to doing this. I like to look at papers that have used the same/similar methodology and see what approach they take to presenting the results visually. I'm sure you can find a lot of really cool examples of plots for community occupancy. The intercepts of the state and detection model represent state/detection when all other parameters are 0, so often those estimates don't tell us much, but it depends on the set up of your study design. 

I hope this is helpful and good luck.

Best,
Matt

--
You received this message because you are subscribed to the Google Groups "spOccupancy and spAbundance users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to spocc-spabund-u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/spocc-spabund-users/fa9f7b94-1750-4e85-9250-60c1fa5f3a94n%40googlegroups.com.


--
Matthew Hyde

Jeffrey Doser

unread,
Nov 25, 2025, 7:50:26 AM (3 days ago) Nov 25
to Matthew Hyde, annie finneran, spOccupancy and spAbundance users
Hi Annie, 

Just to add on top of Matt's helpful answer, the interpretation of the community-level effects is that they represent the average effect of the given covariate on occupancy probability on average across the entire community. It's perhaps important to note that a non-significant community-level effect that is close to 0 does not necessarily mean that the effect is not relevant for the community of species, but rather it could simply indicate that there is large variation in the effect across species such that some species have a strong positive relationship with the covariate while others have a strong negative relationship. I would always suggest looking at both the community-level and species-level effects to get a comprehensive assessment of the relationships between occupancy and different covariates. 

In regards to the back-transfomration, the back-transformed intercept on the community level would indicate the average occupancy probability while all other covariates in the model were at 0 (which would be the average if you standardized the covariates). Thus, it could be useful to get a sense of how common the average species is on average across the entire study region, and you could do the same thing for the species-level effects. Of course, if there are strong relationships with covariates in the model, this average value can mask over lots of variability. 

Hope that helps, 

Jeff



--
Jeffrey W. Doser, Ph.D.
Assistant Professor
Department of Forestry and Environmental Resources
North Carolina State University
Pronouns: he/him/his
Reply all
Reply to author
Forward
0 new messages