Como fazer a estimativa da densidade do kernel com uma barreira / limite físico no QGIS?

18

Alguém conhece um programa que permitirá o kernelling que leva em consideração um limite em seu cálculo, em vez de simplesmente mascarar áreas impossíveis?

Até agora descobri: GME add on Arc10 (Hawthorne Beyer) - Eu recebo um erro toda vez que eu especificar um shapefile de limite. Eu tentei vários tipos diferentes de shapefile e complexidades de limites, etc. Ele funciona bem quando não especifico um limite.

Pacote AdehabitatHR em R (Calange 2011) - isso funciona bem, mas o limite especificado deve ser muito simples - segmentos de linha com largura de banda de 3x kernel de comprimento e não muito tortuoso. Para meus dados, isso é uma grande simplificação excessiva.

Então, eu estou querendo saber se qualquer outro software pode fazê-lo, GRASS ou QGIS, por exemplo.

obrigado

KimS
fonte
3
Artigo recente com código R de interesse potencial, viés de fronteira e núcleos ponderados . Todo o código é apenas uma maneira de ponderar as observações para corrigir o viés de borda (se você puder descobrir os pesos, poderá usar qualquer programa para estimar o kde, contanto que seja, exceto os pesos).
Andy W
1
Precisamente, como você deseja que "explique" um limite? Existem muitas maneiras possíveis, variando de mascarar a bloquear a propagação e corrigir efeitos de contorno.
whuber
1
Obrigado @AndyW e whuber pelas respostas. Quero explicar o limite impedindo que o kernel se espalhe por ele. Os dados são locais de tartarugas marinhas, então eu sei que a distribuição de utilização não deve se espalhar para a terra, mas muitos locais estão muito perto da costa, então eu não quero influenciar esses locais simplesmente mascarando as partes do kernel que espalhar para a terra. Obrigado pelo link para o artigo - isso parece ótimo. Tentarei usar código semelhante para meus dados.
Kims

Respostas:

2

No centro da estimativa da densidade do núcleo está a noção de distância. A melhor solução que eu conheço é usar uma melhor métrica de distância que leve em consideração limites e custos variáveis ​​de viagem. É melhor escolher uma métrica de distância adequada ao problema que você está tentando resolver. A fricção no terreno é excelente para caminhadas, mas não para dispersão de aerossóis. As correntes de vento são essenciais para o rastreamento de veleiros, mas irrelevantes para instruções de direção.
Agora que esperamos que a noção de métricas de distância apropriadas seja suficientemente motivada, posso recomendar superfícies de custo como uma boa métrica de distância de uso geral. Eles estão disponíveis em tudo, desde ArcGIS, R e JavaScript, e são bastante simples de construir. No qGIS, por exemplo, você pode construir uma superfície de atrito raster e usá-la para calcular rotas. Personalize a superfície de atrito para dar conta dos seus limites e você verá a massa dos núcleos ao redor dos seus pontos espalhando-se ordenadamente pelos obstáculos.

JasonRDalton
fonte
+1 Esta é potencialmente uma ótima abordagem. Tendo aplicado em muitos problemas, descobri que a principal dificuldade não é mencionada aqui: exatamente como você propõe espalhar os kernels de acordo com essa métrica? Soluções prontas para uso não podem fazer isso.
whuber
@whuber É verdade que os sistemas prontos para uso geralmente não têm a capacidade de contabilizar superfícies de custo e densidade de kernel ao mesmo tempo. Minha sugestão seria usar a superfície de atrito para calcular a distância ponto a ponto e aplicar diretamente uma função do kernel para o peso. No qGIS ou ArcGIS, você pode escrever usando a função de distribuição normal em python, e em R há a dnorm()função.
precisa saber é o seguinte
Fiz exatamente isso em alguns casos, mas pensar no processo e inspecionar os resultados revela alguns problemas inerentes. O mais difícil parece ser como garantir que a massa seja conservada: você não pode apenas distribuir valores de acordo com, digamos, uma função gaussiana fixa, porque a massa total resultante de um ponto de dispersão não será igual à massa original. Não há uma maneira eficiente de realizar esse cálculo.
whuber
0

Eu sugiro que você tente o pacote spatstat para R. Lá, você pode definir um owinobjeto para determinar as bordas da área de estudo. Também há um ótimo tutorial para este pacote.

SS_Rebelious
fonte
0

Na verdade, estou ajudando com o plugin AniMove para QGIS, que visa livrar-se da dependência de R para estimar a densidade do kernel. Dê uma olhada aqui .

EDIT: O plugin está realmente disponível como experimental no repositório oficial do plugin QGIS

E não hesite em perguntar na lista , se você tem alguma sugestão

Jorge Arévalo
fonte
-2

Fiz isso com sucesso usando o Geostatistical Analyst, que é uma extensão do ESRI ArcGIS. Você pode carregar o conjunto de dados de recursos de linha como barreiras e os resultados são bastante decentes. Faço testes enquanto altera os parâmetros das funções para ter uma idéia clara de como calibrar a ferramenta. Para validar os resultados, o que eu recomendo é que, se você tiver um conjunto de dados grande o suficiente, remova uma amostra de pontos, gere a superfície de densidade sem esses pontos e compare a diferença entre os valores dos pontos removidos e os valores da superfície na localização dos pontos removidos.

Petya
fonte
2
Você poderia ampliar um pouco esta resposta para explicar como o GA - que implementa métodos de interpolação - é capaz de calcular uma estimativa de densidade do kernel ? Como uma verificação dupla da exatidão da sua solução, você verificou se a integral da grade do GA era aproximadamente igual à soma de todos os dados de entrada?
whuber
1
Na versão 10.1, é possível executar interpolação de kernel com barreiras, mas isso não resulta em uma estimativa de densidade. Embora, considerando os métodos mencionados no post original, pergunto-me se eles não estão interessados ​​em uma estimativa do kernel gaussiano e não em uma estimativa de densidade.
22413 Jeffrey Evans