Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example of Species Distribution Model for presence-only data in inlabru #102

Closed
ManuelSpinola opened this issue Feb 17, 2021 · 7 comments
Closed
Labels

Comments

@ManuelSpinola
Copy link

Is there any example or tutoría to fit lgcp to presence-only data to assess species distribution?

@finnlindgren
Copy link
Collaborator

You'd have to define what model you want to use for the presence-only data; An LGCP is a model for surveying a region, with either perfect detectability or an explicit model for the detectability, which isn't necessarily suited to presence-only information. I've seen people try a construction with "pseudo-absences" which mimics the numerical integration approach inlabru uses to implement LGCP models, but those pseudo-absence approaches did not correspond to a well defined observation model ,which lead to instabilities. For species distribution assessment, can you be more specific? There are some general tutorials on https://inlabru-org.github.io/inlabru/articles/

@ManuelSpinola
Copy link
Author

ManuelSpinola commented Feb 17, 2021 via email

@finnlindgren
Copy link
Collaborator

My collaborators are more experts on specific ecology terminology for these models than I am, so I'm afraid the acronyms themselves don't mean much, but given the mathematical definitions/details I can usually tell if it's something that's currently possible or not.

@ManuelSpinola
Copy link
Author

ManuelSpinola commented Feb 17, 2021 via email

@joenomiddlename
Copy link

joenomiddlename commented Feb 17, 2021

Hi Manuel!

I have been working a lot with presence-only data within inlabru and can help you out.

All of the inlabru tutorials beginning 'lgcp_2D' tutorials apply to presence-only data but additional assumptions or knowledge are needed. (The tutorials are found here: https://github.com/inlabru-org/inlabru/blob/devel/vignettes/web)

So the first assumption or piece of knowledge that is needed, is a well-defined region/s where you can assume that your 'observers' have looked/searched in. For example, suppose you are modelling a museum's collection of sightings of a bird species within an ecological reserve (e.g. stored as a SpatialPolygons object called 'Reserve_sp'). If you can assume that observers could have had access to the entire reserve, then specifying the argument 'samplers=Reserve_sp' to the function lgcp() or(like()) could be suitable.

If, instead, you know that your observers could only search within known subregions of the ecological reserve (e.g. stored as a SpatialPolygons object called 'Reserve_sub_sp'). Then specifying 'samplers=Reserve_sub_sp' within the function lgcp() or(like()) would be more suitable

In either case, you would then be assuming that observers searched their 'samplers' for an equal amount of time (i.e. constant effort throughout the samplers). If you believe that the 'effort' from your observers is more heterogeneous across space, then you can try to model the heterogeneous effort through a set of covariates that you believe 'describe' the relative amounts of effort that take place through space (e.g. distance from the nearest road, population density, etc.,). This approach is described in detail in the papers: Fithian et al 2015 - "Bias correction in species distribution models: pooling survey and collection data for multiple species" (https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.12242) and Watson et al 2020: https://arxiv.org/pdf/1911.00151.pdf.

I hope this helps! Let me know if you have any questions :)

Joe

@ManuelSpinola
Copy link
Author

ManuelSpinola commented Feb 18, 2021 via email

@joenomiddlename
Copy link

joenomiddlename commented Feb 18, 2021

Hi @ManuelSpinola Good catch! I certainly did and I have updated it accordingly :)

So the tutorial: https://github.com/inlabru-org/inlabru/blob/devel/vignettes/web/2d_lgcp_covars.Rmd provides a good example for a factor variable.

If you have a continuous covariate (e.g. 'elevation'), simply define it as a SpatialPixelsDataFrame object in the same coordinate reference system (e.g. elev_sp) as your sightings data (of class SpatialPointsDataFrame). Then, when defining your components, specify name_of_elevation_component(main=elev_sp, model='linear').

where name_of_elevation_component is your desired name of the elevation component.

Adding multiple covariates simply requires adding additional terms to the components and formula of your lgcp!

NOTE: I just noticed there is an elevation variable added in the HTML link above. There an elevation function was defined instead (lines 346-389). Alternatively, the approach above can be used (see Finn's comments): "The elevation variable here is of class 'SpatialGridDataFrame', that can be handled in the same way as the vegetation covariate"

@inlabru-org inlabru-org locked and limited conversation to collaborators Dec 1, 2022
@finnlindgren finnlindgren converted this issue into discussion #175 Dec 1, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
Projects
None yet
Development

No branches or pull requests

3 participants