Eu tenho um conjunto de dados com muitos zeros que se parece com isso:
set.seed(1)
x <- c(rlnorm(100),rep(0,50))
hist(x,probability=TRUE,breaks = 25)
Gostaria de desenhar uma linha para sua densidade, mas a density()
função usa uma janela em movimento que calcula valores negativos de x.
lines(density(x), col = 'grey')
Há density(... from, to)
argumentos, mas eles parecem apenas truncar o cálculo, não alterar a janela, para que a densidade em 0 seja consistente com os dados, como pode ser visto no seguinte gráfico:
lines(density(x, from = 0), col = 'black')
(se a interpolação fosse alterada, eu esperaria que a linha preta tivesse maior densidade em 0 do que a linha cinza)
Existem alternativas para essa função que proporcionariam um melhor cálculo da densidade em zero?
fonte
Concordo com Rob Hyndman que você precisa lidar com os zeros separadamente. Existem alguns métodos para lidar com uma estimativa de densidade de kernel de uma variável com suporte limitado, incluindo 'reflexão', 'rernormalização' e 'combinação linear'. Eles não parecem ter sido implementados na
density
função de R , mas estão disponíveis no pacote de Stenn de Benn Jannkdens
.fonte
Outra opção quando você tem dados com um limite inferior lógico (como 0, mas pode haver outros valores) que você sabe que os dados não ficarão abaixo e a estimativa da densidade do kernel regular colocará valores abaixo desse limite (ou se você tiver um limite superior , ou ambos) é usar estimativas de linha de logs. O pacote de logspline para R implementa isso e as funções têm argumentos para especificar os limites, para que a estimativa vá para o limite, mas não além e ainda seja dimensionada para 1.
Também existem métodos (a
oldlogspline
função) que levarão em consideração a censura por intervalo; portanto, se esses 0 não forem z exatos, mas arredondados para que você saiba que eles representam valores entre 0 e algum outro número (um limite de detecção, por exemplo), então você pode fornecer essas informações à função de ajuste.Se os 0 extra são verdadeiros 0 (não arredondados), a estimativa da massa do pico ou do ponto é a melhor abordagem, mas também pode ser combinada com a estimativa da linha de logs.
fonte
Você pode tentar diminuir a largura de banda (a linha azul é para
adjust=0.5
),mas provavelmente o KDE não é o melhor método para lidar com esses dados.
fonte