Interpolação por vizinho mais próximo - pt.LinkFang.org

Interpolação por vizinho mais próximo


Interpolação pelo vizinho mais próximo é um método de interpolação determinista no qual o valor estimado é sempre igual à sua amostra mais próxima não considerando qualquer outra. Dada a sua simplicidade é regularmente utilizado para interpolações rápidas e em áreas de estudo bem amostradas.

Definição


Para cada localização a ser interpolada deverá ser calculado a distância de todos os pontos amostrais a essa mesma localização e determinar qual deles terá a distância miníma sendo o valor correspondente a interpolação. Sendo \({\displaystyle x_{o},y_{o}}\) a localização a interpolar e as amostras \({\displaystyle x_{i},y_{i}}\) as amostra é feita o cálculo da distância (no exemplo seguinte é feita a distância euclidiana):

\({\displaystyle min(d={\sqrt {(x_{o}-x_{i})^{2}+(y_{o}-y_{i})^{2}}}\,)}\)

O valor interpolado é retirado da função da posição das amostras reais, \({\displaystyle f(x_{i},y_{i})}\), neste caso considerando o mínimo:

\({\displaystyle g(x_{o},y_{o})=f(x_{min},y_{min})}\)

A interpolação pode ser feita em várias dimensões da qual se mostra um exemplo unidimensional na imagem seguinte:

Este método pode ser generalizado para considerar k vizinhos mais próximos, e não apenas um único. Neste caso, não há uma interpolação, e sim uma suavização.[1]

Algoritmo da interpolação por vizinho mais próximo em Python


A implementação de interpolação bidimensional que se segue é feita na linguagem Python (versão 2.7.2) com recurso à biblioteca NumPy tendo por esse motivo o seguinte cabeçalho de importações (está considerado também a biblioteca matplotlib usada para visualização):

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt

A implementação, de facto, do algoritmo é:

def VMP(dados,blocos):
    resultado = np.zeros(blocos)
    for x in xrange(resultado.shape[0]):
        for y in xrange(resultado.shape[1]):
            dist = np.sqrt((x-dados[:,0])**2+(y-dados[:,1])**2)
            ind = np.where(dist == dist.min())
            resultado[x,y] = dados[ind[0][0],2]
    return resultado

Para melhor compreensão do algoritmo descrito aqui é importante que se compreenda o que algumas das funções fazem:

Na utilização da função o utilizador deverá introduzir como argumentos a matriz de dados (onde as colunas devem ser X, Y , valor, por esta ordem: 0,1,2), e uma tupla com o número de blocos na dimensão X e Y, por exemplo: (150,200). No exemplo seguinte a estimação vai ser feita numa matriz de 150 blocos na direção X e 200 blocos na direção Y com recurso à função transcrita acima e ao seguinte conjunto de dados:

Da função resultou o seguinte por comparação com a imagem original de onde foram retirados os dados:

Evidentemente no sentido de se atingir uma imagem objectivo (nesta experiência por nós conhecida) não só é importante a representação visual como também a reprodução estatística dos dados. Não existe qualquer ferramenta matemática que force à reprodução do histograma na interpolação por vizinho mais próximo. Mesmo na eventualidade disso se concretizar nada garante que os dados usados na interpolação tenham a mesma distribuição univariada (histograma) que a imagem objectivo (ou área de estudo) como podemos ver na comparação seguinte entre a distribuição dos dados e distribuição da imagem objectivo:

Analisando a reprodução do histograma na interpolação por oposição à imagem objectivo podemos observar que a distribuição dos dados usados na interpolaçao parece corresponder razoávelmente à distribuição da área de estudo:

Ver também


  1. Izbicki, Mendonça (2018). «Machine Learning sob a ótica estatística» (PDF) 









Categorias: Geoestatística | Estatística




Data da informação: 17.12.2020 06:23:23 CET

Fonte: Wikipedia (Autores [História])    Licença: CC-by-sa-3.0

Mudanças: Todas as imagens e a maioria dos elementos de design relacionados a essas foram removidos. Alguns ícones foram substituídos por FontAwesome-Icons. Alguns modelos foram removidos (como "o artigo precisa de expansão) ou atribuídos (como" notas de rodapé "). As classes CSS foram removidas ou harmonizadas.
Os links específicos da Wikipedia que não levam a um artigo ou categoria (como "Redlinks", "links para a página de edição", "links para portais") foram removidos. Todo link externo possui um FontAwesome-Icon adicional. Além de algumas pequenas mudanças de design, foram removidos os contêineres de mídia, mapas, caixas de navegação, versões faladas e microformatos geográficos.

Observe: Como o conteúdo fornecido é retirado automaticamente da Wikipedia no momento especificado, uma verificação manual foi e não é possível. Portanto, o LinkFang.org não garante a precisão e a atualidade do conteúdo adquirido. Se houver uma informação incorreta no momento ou com uma exibição imprecisa, sinta-se à vontade para Contate-Nos: email.
Veja também: Cunho & Política de Privacidade.