Como agrupar pontos com base na densidade do kernel?

10

Eu tenho um grande conjunto de dados com 36k pontos representando usos comerciais da terra, cada um com um campo contendo a metragem quadrada. Fiz uma análise de densidade de kernel neste conjunto de dados, produzindo uma varredura mostrando a densidade de metragem quadrada comercial em toda a área metropolitana. Eu preciso dividir essa varredura em regiões correspondentes aos máximos locais, que eu chamo de "centro". Eu já determinei a localização dos centros e agora preciso fazer uma de duas coisas:

  • use uma ferramenta de agrupamento de pontos, como "particionar em torno de medoids", para agrupar os pontos em agrupamentos em torno dos centros que eu identifiquei. O problema com esse método é que ele é computacionalmente intenso, e mais ainda se eu tentar usar uma matriz de dissimilaridade para ponderar os pontos por tamanho.

  • de alguma forma, divida a varredura de densidade do núcleo (que se assemelha a uma varredura de terreno) em "colinas" individuais em torno de cada centro. Mas não consigo pensar em nenhuma ferramenta para fazer isso.

Esse problema me atormentou por um tempo e eu esperava poder executar o método de agrupamento em R, mas é demorado e estou ficando sem tempo. Alguém conhece um método simples para dividir os rasters de densidade em bairros de intensidade ou para agrupar rapidamente grandes conjuntos de dados?

Patrick
fonte
1
Esta questão está intimamente relacionada: stats.stackexchange.com/questions/13995/…
whuber
1
E também postado por mim, como se vê.
Patrick
que seria 1 pt para Patrick eu acho .....
BWill

Respostas:

6

A discussão após um post estreitamente relacionado revelou uma solução simples e eficaz : encontrar as "colinas", virar a grade de cabeça para baixo (negando seus valores) e encontrar bacias hidrográficas. As colinas são pias e os limites das bacias hidrográficas dividem a grade nessas pias.

whuber
fonte
Esta solução é simples, rápida e exatamente o que eu estava procurando. Obrigado.
Patrick
3

A resposta mais simples seria usar um limite para mascarar áreas que ficam abaixo do limite. Isso deve lhe dar áreas distintas ao redor de seus centros. Em seguida, ele deve poder converter essas áreas em formas.

Você também pode encontrar ferramentas de estatística espacial: análise de agrupamento em dados rasterizados, uma discussão útil sobre um problema semelhante.

Ian Turton
fonte
Sim, essa é uma discussão muito relevante! Estou lendo sua tese de mestrado e testarei alguns dos métodos.
Patrick
2
Usar um limite provavelmente não funcionará aqui, pois estou tentando distinguir centros de outros centros imediatamente adjacentes. No núcleo da cidade, a fronteira entre os dois terá uma densidade muito alta, mas na periferia suburbana, terá uma densidade muito baixa. Mas espero que o uso da segunda derivada seja eficaz.
Patrick
3

Eu acho que você deveria voltar ao seu problema inicial: encontre grupos de metragens quadradas comerciais em uma região metropolitana inteira.

Presumo que seus pontos são centróides de parcelas com valores de metragem quadrada comercial? Presumo que você também possa ter uma camada de polígonos de parcelas com metragem quadrada total para cada parcela? Isso fornece um conjunto de casos (os centróides) e uma população (os polígonos de parcela) para metragem quadrada comercial e quadrada, respectivamente.

Vá pegar o SatScan http://www.satscan.org/ e execute um modelo distribuído apenas por espaço de Poisson e você terá seus clusters comerciais de metragem quadrada em uma ordem bem rápida. (Você também pode usar metragem quadrada de terreno como população também, em vez de metragem quadrada de espaço para construção. Essa pode até ser a população melhor.)

blord-castillo
fonte
Você está certo de que os pontos são centróides, mas infelizmente o conjunto de dados foi compilado por outros da camada de parcelas de cada município e distribuído apenas como pontos. Mas o SatScan se parece com um software muito útil, por isso vou me lembrar de outros aplicativos.
Patrick