I'm fitting INLA spatial models across multiple species with multiple spatially-structured random effects. The models converge (mode.status = 0) and most show better WAIC than non-spatial models, but I'm getting some spatial range estimates that exceed my study extent (3-4 times the study extent) and I'm trying to understand if/when this is a problem.
--
You received this message because you are subscribed to the Google Groups "R-inla discussion group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to r-inla-discussion...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/r-inla-discussion-group/5f0be926-7598-4d2a-9610-80495af7b7bdn%40googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/r-inla-discussion-group/9b64f708-472f-4732-a254-4f02525f6e41%40Spark.
I'm fitting INLA spatial models across multiple species with multiple spatially-structured random effects. The models converge (mode.status = 0) and most show better WAIC than non-spatial models, but I'm getting some spatial range estimates that exceed my study extent (3-4 times the study extent) and I'm trying to understand if/when this is a problem.
--
You received this message because you are subscribed to the Google Groups "R-inla discussion group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to r-inla-discussion...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/r-inla-discussion-group/5f0be926-7598-4d2a-9610-80495af7b7bdn%40googlegroups.com.
Thank you for your responses.
I should clarify that the model structure does not contain a constant intercept, but a spatially variable one and this is the element for which the range is typically larger than the study extent (lambda). The components are defined as so:
components <- ~ -1 +
lambda(... model = matern) +
conspecific(... model = matern) +
heterospecific(... model = matern) +
heteroneighbourhood_slo(idx, ...) # random slopes for heterospecific effect by neighbour type
With the estimates I want to be able to say firstly, either there is or isn't is spatial variation in that component at the observed scale. Secondly, I am less interested in the precise value of the estimated range but more in the relative differences between the components so I can say that the spatial variation in these processes operates at different scales. I realise there are a lot of competing components, what gives me some confidence is that all the spatial components have the same prior:
matern <- inla.spde2.pcmatern(
mesh = mesh,
#alpha = #what is alpha
prior.range = c(range0 = 150, Prange = 0.5),
prior.sigma = c(sigma0 = 1, Psigma = 0.05)
)
And although there is a lot of uncertainty around the median range estimates across all components, the median range is consistent amongst the parameters (see figure, each line/point is a separate model, lambdas range is always larger than conspecific and heterospecific). So the data rather than the prior seems to be driving these patterns.

My next concern is that the range exceeding the study extent (plus the uncertainty) might be an indication of other problems with the models, e.g. that the range for lambda is not well estimated because there are too many competing spatial effects and these might be confounded as suggested by the correlations amongst the fitted values of the spatial components (see figure). I believe this becomes a problem if I want to do some kind of variance partitioning or further inference on the estimates from specific spatial parameters. As you say
Since you say you have multiple spatial structured random effects, you may need to be more careful with those posterior interpretations, and consider which combined quantities are well defined/identifiable.

Based on posterior predictive checks I can see that the models do a good job at population level inference, so prediction is stable when the spatial parameters are combined. I also used adjusted PIT to look at model calibration and excluded models that had a D statistic greater than .20 (this threshold is probably a bit high but is perhaps ok for ecological data).
cpo <- res$cpo$cpo
pit <- res$cpo$pit
pit.adjusted <- pit - (0.5 * cpo) # for discrete responses
ks <- ks.test(pit.adjusted, "punif")
Again I think this is only useful for understanding how the combined parameters perform. My question then becomes, how can I diagnose the set of models where the individual components may be unstable and not suitable for further inference?