Estou tentando usar a função ' densidade ' em R para fazer estimativas de densidade do kernel. Estou tendo alguma dificuldade em interpretar os resultados e comparar vários conjuntos de dados, pois parece que a área sob a curva não é necessariamente 1. Para qualquer função de densidade de probabilidade (pdf) , precisamos ter a área . Estou assumindo que a estimativa da densidade do kernel reporta o pdf. Estou usando o integrar.xy do sfsmisc para estimar a área sob a curva.
> # generate some data
> xx<-rnorm(10000)
> # get density
> xy <- density(xx)
> # plot it
> plot(xy)
> # load the library
> library(sfsmisc)
> integrate.xy(xy$x,xy$y)
[1] 1.000978
> # fair enough, area close to 1
> # use another bw
> xy <- density(xx,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 6.518703
> xy <- density(xx,bw=1)
> integrate.xy(xy$x,xy$y)
[1] 1.000977
> plot(xy)
> xy <- density(xx,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 6507.451
> plot(xy)
A área sob a curva não deve ser sempre 1? Parece que as pequenas larguras de banda são um problema, mas às vezes você deseja mostrar os detalhes etc. nas caudas e pequenas larguras de banda são necessárias.
Atualização / resposta:
> xy <- density(xx,n=2^15,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 1.000015
> xy <- density(xx,n=2^20,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 2.812398