Skip to content
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

Validatie #2

Open
rvosa opened this issue Jan 9, 2019 · 19 comments
Open

Validatie #2

rvosa opened this issue Jan 9, 2019 · 19 comments
Labels
bug Something isn't working

Comments

@rvosa
Copy link
Member

rvosa commented Jan 9, 2019

Hoe gaan we de kwaliteit van de modellen valideren? Er gaan vast situaties zijn waar de data gewoon niet goed genoeg zijn voor een bepaalde soort: te weinig waarnemingen, misidentificaties, "waarnemingen" in dierentuinen, verkeerde lat/lon coderingen, etc. Hoe gaan we objectief bepalen dat we een bepaalde soort echt niet mee kunnen nemen in de analyse?

@ElkeHendrix
Copy link
Member

potentiële oplossingen

  • we kunnen bijvoorbeeld alle metingen die 1 of 2 standaard afwijkingen van het gemiddelde afwijken uit de dataset halen.
  • voor de gedomesticeerde soorten moeten we misschien een visuele inspectie van de data doen. Ook omdat we niet zeker weten of we waarnemingen van gevangen dieren hebben of van hun wilde voorouders?

@rvosa
Copy link
Member Author

rvosa commented Jan 14, 2019

Eigenlijk zijn dit twee verschillende dingen. Er is inderdaad het probleem van de datakwaliteit (zie #8), wat we kunnen aanpakken door outliers are automatisch uit te gooien, zoals je voorstelt, en door de data handmatig na te lopen. Maar als we dat eenmaal gedaan hebben en we krijgen een model uit de analyse, hoe beslissen we dan of dat model redelijk goed werkt? Het zou bijvoorbeeld zo kunnen zijn dat we om de een of andere reden toch niet de juiste variabelen hebben geselecteerd (#1), waardoor het model niet goed is. De meest simpele benadering is, denk ik, om de analyse in maxent te doen en dan te kijken naar de AUC, die dan >0.7 moet zijn (zie Raes & Aguirre-Gutierrez, 2018).

@rvosa
Copy link
Member Author

rvosa commented Feb 25, 2019

Wat we nu doen is een combinatie van de AUC en de null model methode van Raes & Ter Steege

@rvosa rvosa closed this as completed Feb 25, 2019
@rvosa rvosa reopened this Mar 6, 2019
@rvosa
Copy link
Member Author

rvosa commented Mar 6, 2019

Trouwens, doen we inderdaad de null model methode? Of alleen AUC? Als we alleen de AUC doen dan is het de hoogste prioriteit dat we ook die null model methode doen.

@ElkeHendrix
Copy link
Member

Ik heb nu alleen AUC gedaan. Ik ga morgen uitzoeken hoe ik die null model methode ook erbij kan doen.

@rvosa
Copy link
Member Author

rvosa commented Mar 7, 2019

Maar het is in principe wel al zo dat je een aantal occurrences apart zet om de test mee te doen, toch? Ik bedoel, het aanmaken van die partities zit al in de Maxent_Function(), als ik het goed begrijp

@rvosa rvosa added the bug Something isn't working label Mar 7, 2019
@ElkeHendrix
Copy link
Member

Ja in de maxent functie zet ik 25% van de data apart om de AUC test mee te doen.

Bij een null model vergelijk je de AUC die uit de maxent komt met een de AUC van een random model. Alleen ben ik nu het artikel van niels aan het lezen over null models en hierin zegt hij volgensmij dat als je de AUC berekend door een split sample approach dat deze splitsing de AUC heel erg beïnvloed. Dus ik denk dat de AUC die ik berekend heb niet vergelijkbaar is met de AUC uit een random model omdat je hier geen split sample approach gebruikt.

@ElkeHendrix
Copy link
Member

Als ik het script bekijk van Niels (die had hij een tijdje geleden naar ons gemaild), dan gebruikt hij de jackknife approach en dan hoef je de data niet te splitsen. Daarna evaluate hij het hele model model zonder er een splitsing in te maken.

Ik denk dat als wij ook een jackknife training van het model doen dat we de AUC's wel met elkaar kunnen vergelijken.

@rvosa
Copy link
Member Author

rvosa commented Mar 7, 2019 via email

@ElkeHendrix
Copy link
Member

Dus het probleem is dat we onze validatie op meer moeten baseren dan de AUC? want de null model methode is ook weer gebaseerd op de AUC.

Ik zoek nu even uit of we idd meer occurences overhouden.

@rvosa
Copy link
Member Author

rvosa commented Mar 7, 2019 via email

@ElkeHendrix
Copy link
Member

Zoals ik het nu begrijp is het volgende de bedoeling volgens Raes en Ter Steege :

  • Ze berekenen de AUC van het Maxent model met alleen trainingsdata, dus er wordt helemaal niet gesplit
  • daarna maak je een null model dit kan op twee manieren
  1. null- model op basis van de hele extent (je trekt dus random samples uit het hele gebied)
  2. bias corrected null-model (je trekt dan random samples uit de occurence dataset). je haalt de random samples uit de occurence dataset omdat er waarschijnlijk alleen onderzoek is gedaan op makkelijk begaanbare gebieden.
  • het null model run je 100 keer en daar komt een distributie van AUC values uit. als de AUC met de echte occurence data buiten het 95% confidence interval (one-sided) valt van de random AUC values dan is het model significant beter.

Voor onze resultaten heeft dit wel gevolgen want we kunnen het dus runnen met test en training data of met alleen trainingsdata. Ik denk dat dit vooral invloed heeft op de modellen met weinig occurence points.

@rvosa
Copy link
Member Author

rvosa commented Mar 7, 2019 via email

@ElkeHendrix
Copy link
Member

Jaa het gaat echt heel lang duren denk ik :'). Ik weet nu ook nog niet zeker of ik de berekeningen goed doe en welk null model ik het beste kan gebruiken. Denk jij dat Niels Raes nog een keer tijd heeft voor wat vragen?

@rvosa
Copy link
Member Author

rvosa commented Mar 7, 2019 via email

@ElkeHendrix
Copy link
Member

Feedback Niels:

  • we moeten een null model maken waarbij je meteen bias collection eruit haalt, dit doe je door
  1. binnen de cirkels (dus onze extent waarop we het model trainen) trekken we random samples uit alle locaties waarvan we weten dat er iemand een waarneming heeft gedaan (dit zijn dus alle occurence points van de ungulates die binnen de extent vallen).
  2. je trekt 100x random samples uit deze selectie (hetzelfde aantal als het aantal waarnemingen per soort) en we trainen hier 100x het maxent model op en slaan de AUC value op.
  3. dan maak je een ranking van de AUC values en als de AUC value van het "echte" model buiten de 95% CI valt dan is je model significant beter dan een random model en kunnen we hem gebruiken om een projectie mee te maken
  • daarnaast kregen we nog als tip om de voorspellingen te limiteren (dus dat we geen rare voorspellingen krijgen op de noordpool). Zie --> Ficetola, G. F., Mazel, F., & Thuiller, W. (2017). Global determinants of zoogeographical boundaries. Nature Ecology & Evolution, 1(4), 0089.

@ElkeHendrix
Copy link
Member

ElkeHendrix commented Mar 15, 2019

image

image

We trekken nu random samples uit alle occurence points (die zijn te zien in het zwart) min de occurence points van de soort waar we op dat moment naar kijken. Alle rode occurence points laten de points zien binnen de model extent. Dit levert in een paar gevallen problemen op:

  1. Voor sommige soorten (dieren in het noorden of helemaal in het oosten) zijn niet genoeg andere occurences gedaan om een null model op te bouwen. zoals bij de capricornis swinhoei

image

er zijn maar 2 metingen in hetzelfde gebied gedaan.

hetzelfde probleem bij de Ovibos moschatus

image

er zijn maar 8 andere metingen in hetzelfde gebied gedaan

zelfde probleem bij Rusa timorensis

image

geen andere punten

We moeten dus denk ik gewoon een random sample uit de model environment trekken en daar ons null model op baseren. Maar dan hebben we geen collection bias eruit gehaald.

dan zijn er nog een paar modellen die niet runnen

  • Tragulus Javanicus --> die heeft niet genoeg data punten zonder NA values om een model van te maken
  • Sus philleppensis --> die heeft niet genoeg data punten zonder NA values om een model van te maken
  • Sus cebifrons --> de validatiepunten hebben niet genoeg goede data punten (teveel NA punten)

@ElkeHendrix
Copy link
Member

ElkeHendrix commented Mar 15, 2019

resultaten filteren op zoogeographical regions --> ik kan geen dataset vinden met welke soorten er per regio voorkomen. dit is hoe de regio;s eruit zien en we zouden dus alleen binnen de regio's waar een occurence point is gemeten de projections maken?
image

Er is er ook een speciaal voor mammals maar die heeft veel meer groepen
image

@ElkeHendrix
Copy link
Member

ElkeHendrix commented Mar 19, 2019

image

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants