método de amostragem simples para um estimador de densidade de kernel

10

Eu desenvolvi um estimador de densidade de kernel simples em Java, com base em algumas dezenas de pontos (talvez até cem) ou mais e uma função de kernel gaussiana. A implementação me fornece o PDF e o CDF da minha distribuição de probabilidade a qualquer momento.

Agora eu gostaria de implementar um método de amostragem simples para este KDE. Uma escolha óbvia seria, obviamente, extrair do próprio conjunto de pontos que compõem o KDE, mas eu gostaria de poder recuperar pontos que são um pouco diferentes daqueles do KDE.

Até agora, não encontrei uma técnica de amostragem que pudesse ser implementada com facilidade para resolver esse problema (sem depender de bibliotecas externas para integração numérica ou cálculos complexos). Algum conselho? Não tenho requisitos especialmente fortes quando se trata de precisão ou eficiência; minha principal preocupação é ter uma função de amostragem que funcione e possa ser facilmente implementada. Obrigado!

Pierre Lison
fonte
4
Isso está detalhado na página 5 deste documento .
obrigado, isso foi útil! E mais simples do que eu pensava ;-)
Pierre Lison
@ user10525 o código fornecido está incorreto, deve ser: rnorm(n, sample(dx$x, n, prob = dx$y, replace = TRUE), dx$bw)onde dxé produzido a partir da densityfunção. O argumento probdeve ser fornecido porque, caso contrário, você fará uma amostragem uniforme.
Tim

Respostas:

17

Conforme mencionado pelo Procrastinator, existe uma maneira simples de amostrar a partir de um estimador de densidade do Kernel:

  1. Desenhe um ponto do conjunto de pontos , ...x 1 x n incluído no KDExix1xn
  2. Depois de ter o ponto , desenhe um valor do kernel associado ao ponto. Nesse caso, desenhe a partir de N Gaussiano ( x i , h ) centrado em x i e da variação h (a largura de banda)xiN(xi,h)xih
Pierre Lison
fonte
(+1) Para compartilhar sua solução.
Is um dos pontos originais? Nesse caso, parece que realmente não precisamos construir o KDE real. Apenas amostrar a partir de um dos pontos originais, e N ( x i , h ) deve ser suficiente? xiN(xi,h)
Ram
Sim, de fato, se você estiver usando apenas a distribuição do KDE para amostragem, não precisará construir explicitamente o PDF: a única informação necessária para a operação de amostragem é o conjunto de pontos e a largura de banda.
31413 Pierre Lison
apenas para acrescentar a Pierre Lison: Na etapa 2: para amostragem de um núcleo gaussiano, a largura de banda h deve ser tomada como o desvio padrão da distribuição gaussiana em torno do ponto x_i, não a variação.
Você não gostaria de experimentar usando o desvio padrão de 1 / h ou algo assim? Como está escrito, quanto menos provável x_i, maior a probabilidade de você experimentar outro ponto improvável nas proximidades, porque o desvio padrão de N é baixo.
Chris Anderson