Algoritmo Heatmap per visualizzare la diversità dei punti


18

Qualcuno può suggerire un algoritmo per generare una mappa di calore per visualizzare la diversità dei punti? Un'applicazione di esempio potrebbe essere quella di mappare aree con elevata diversità di specie. Per alcune specie, ogni singola pianta è stata mappata, risultando in un conteggio dei punti alto, ma con un significato molto piccolo in termini di diversità dell'area. Altre aree hanno davvero un'alta diversità.

Considerare i seguenti dati di input:

x    y      cat
0.8  8.1    B
1.1  8.9    A
1.6  7.7    C
2.2  8.2    D
7.5  0.9    A
7.5  1.2    A
8.1  1.5    A
8.7  0.3    A
1.9  2.1    B
4.5  7.0    C
3.8  4.0    D
6.6  4.8    A
6.2  2.4    B
2.2  9.1    B
1.7  4.7    C
7.5  7.3    D
9.2  1.2    A

e mappa risultante:

trama della griglia

Nel quadrante in alto a sinistra, c'è una patch molto diversificata, mentre nel quadrante in basso a destra, c'è un'area con alta concentrazione di punti, ma bassa diversità. Due modi per visualizzare la diversità potrebbero essere l'uso di una mappa di calore tradizionale o il conteggio del numero di categorie rappresentate in ciascun poligono. Come mostrano le immagini seguenti, questi approcci hanno un uso limitato, poiché la mappa di calore mostra la massima intensità in basso a destra, mentre l'approccio di binning sembrerebbe esattamente lo stesso se ci fosse una sola categoria (questo potrebbe essere risolto aumentando le dimensioni del bin poligonali, ma il risultato diventa inutilmente granulare).

mappa di calore inserisci qui la descrizione dell'immagine

Un approccio a cui ho pensato di fare questo sarebbe quello di innescare un algoritmo della mappa di calore tradizionale dal numero di punti di diverse categorie all'interno di un raggio definito, e quindi utilizzare quel conteggio come il peso per il punto quando si genera la mappa di calore. Tuttavia, penso che questo potrebbe essere soggetto a manufatti indesiderati, come il rinforzo reciproco che porta a risultati molto nitidi. Inoltre, punti dello stesso tipo strettamente mappati continuerebbero ad apparire come concentrazioni elevate, ma non nella stessa misura.

Un altro approccio (probabilmente migliore ma più costoso dal punto di vista computazionale) sarebbe:

  1. Calcola il numero totale di categorie nel set di dati
  2. Per ogni pixel nell'immagine di output:
    • Per ogni categoria:
      • calcola la distanza dal punto rappresentativo più vicino (r) [probabilmente limitando di un raggio oltre il quale l'influenza è trascurabile]
      • aggiungere una ponderazione proporzionale a 1 / r 2

Esistono già algoritmi di cui non sono a conoscenza o altri modi per visualizzare la diversità?

modificare

Seguendo il suggerimento di Tomislav Muic, ho calcolato le mappe di calore per ciascuna categoria e le ho normalizzate utilizzando la seguente formula (calcolatrice raster QGIS):

((heatmap_A@1 >= 1) + (heatmap_A@1 < 1) * heatmap_A@1) +
((heatmap_B@1 >= 1) + (heatmap_B@1 < 1) * heatmap_B@1) +
((heatmap_C@1 >= 1) + (heatmap_C@1 < 1) * heatmap_C@1) +
((heatmap_D@1 >= 1) + (heatmap_D@1 < 1) * heatmap_D@1)

con il seguente risultato (commenti sotto la sua risposta): somma normalizzata


1
Il tuo secondo approccio sembra ok, questo è principalmente un problema di statistica, quindi inizierei a guardare le routine R corrispondenti su CRAN . Sperimenterebbe però con diverse dimensioni della griglia e cercherebbe misure "ufficiali" della biodiversità per evitare di reinventare la ruota.
Deer Hunter

Risposte:


4

Prova a creare una mappa di calore per ogni categoria separata.

Quindi sommare le mappe di calore e normalizzarle usando il numero di categorie.

Questo potrebbe valere la pena di essere esplorato.


Ho aggiunto una visualizzazione alla mia domanda sulla base di questo suggerimento e il risultato sembra buono! Lo svantaggio è che se hai a che fare con centinaia o migliaia di categorie, la memorizzazione di tutti quei raster sarà un problema.
Rududonstaden,

Pensaci, non sarebbe un problema se aggiungi ogni nuova mappa di calore alla mappa di calore composita dopo ogni categoria. La domanda è quindi quale approccio sarebbe computazionalmente più veloce da implementare: somme raster o calcolo pixel per pixel.
Rudivonstaden,

Temo che questa risposta non abbia nulla a che fare con la diversità. Nella somma risultante (e normalizzazione) un'area molto densa con più gruppi apparirebbe uguale a un'area non così densa ma con un gruppo.
Andy W,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.