Existe uma largura de banda ideal para um estimador de densidade de kernel de derivados?


14

Preciso estimar a função densidade com base em um conjunto de observações usando o estimador de densidade do kernel. Com base no mesmo conjunto de observações, também preciso estimar a primeira e a segunda derivada da densidade usando as derivadas do estimador de densidade do núcleo. A largura de banda certamente terá um grande efeito no resultado final.

Primeiro, eu sei que existem algumas funções R que dão largura de banda ao KDE. Não tenho certeza de qual é o mais preferido. Alguém pode recomendar uma dessas funções R para largura de banda do KDE?

Em segundo lugar, para o derivado do KDE, devo escolher a mesma largura de banda?


Para uma densidade, a escolha da largura de banda é sempre um pouco subjetiva. É uma questão do que é muito estreito e, portanto, causa variação na curva que segue essencialmente o ruído versus largura demais, onde a curva é suave demais e perde algumas características reais da curva. Mas você estima a densidade para descobrir a forma. Portanto, quão suave deve ser a estimativa não é fácil saber. Para derivativos, acho que depende de qual característica do derivativo você deseja conhecer.
Michael R. Chernick

Respostas:


15

A largura de banda ideal para estimativa de derivada será diferente da largura de banda para estimativa de densidade. Em geral, todos os recursos de uma densidade têm seu próprio seletor de largura de banda ideal.

Se seu objetivo é minimizar o erro quadrado integrado médio (que é o critério usual), não há nada subjetivo sobre ele. É uma questão de derivar o valor que minimiza o critério. As equações são dadas na Seção 2.10 de Hansen (2009) .

A parte complicada é que a largura de banda ideal é uma função da própria densidade, portanto, essa solução não é diretamente útil. Existem vários métodos para tentar lidar com esse problema. Eles geralmente aproximam alguns funcionais da densidade usando aproximações normais. (Observe que não há suposição de que a densidade em si seja normal. A suposição é que alguns funcionais da densidade podem ser obtidos assumindo a normalidade.)

Onde as aproximações são impostas determina quão bom é o seletor de largura de banda. A abordagem mais grosseira é chamada "regra de referência normal", que impõe a aproximação em um nível alto. O final da Seção 2.10 em Hansen (2009) fornece a fórmula usando essa abordagem. Essa abordagem é implementada na hns()função do kspacote no CRAN. Provavelmente é o melhor que você terá se não quiser escrever seu próprio código. Portanto, você pode estimar a derivada de uma densidade da seguinte forma (usando ks):

library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)

Uma abordagem melhor, geralmente conhecida como seletor "plug-in direto", impõe a aproximação em um nível inferior. Para estimativa de densidade reta, este é o método de Sheather-Jones, implementado em R usando density(x,bw="SJ"). No entanto, não creio que exista uma instalação semelhante disponível em qualquer pacote R para estimativa de derivadas.

Em vez de usar a estimativa direta do kernel, você pode estar melhor com um estimador polinomial local. Isso pode ser feito usando a locpoly()função do kspacote em R. Novamente, não há uma seleção ideal de largura de banda implementada, mas o viés será menor do que para os estimadores de kernel. por exemplo,

den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth

Muito obrigado, Rob. Provavelmente usarei a largura de banda SJ para estimativa de densidade.
user13154

Para estimativa derivativa, se eu usar h <- hns (x); den <- kdde (x, h = h, deriv.order = 1), é h a largura de banda ideal usada para a estimativa. Estou perguntando isso porque h <- hns (x) é escolhido sem especificar a ordem derivada. Obrigado.
user13154

Eu verifiquei a fórmula dada no final da Seção 2.10 em Hansen (2009). Parece que a largura de banda depende da ordem da derivada, por exemplo, a derivada. h <- hns (x) parece não depender do r.
user13154

Acabei de descobrir que a função hns tem um argumento deriv.order, onde posso especificar a ordem das derivadas. Muito obrigado novamente, Rob.
User13154

Desculpe. Eu deixei isso de fora. Agora consertado.
9118 Rob Hyndman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.