J'essaie d'utiliser la fonction « densité » dans R pour faire des estimations de densité du noyau. J'ai de la difficulté à interpréter les résultats et à comparer divers ensembles de données car il semble que l'aire sous la courbe ne soit pas nécessairement 1. Pour toute fonction de densité de probabilité (pdf) , nous devons avoir l'aire . Je suppose que l'estimation de la densité du noyau rapporte le pdf. J'utilise integrate.xy de sfsmisc pour estimer la surface sous la courbe.∫ ∞ - ∞ ϕ ( x ) d x = 1
> # 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)
L'aire sous la courbe ne doit-elle pas toujours être 1? Il semble que les petites bandes passantes soient un problème, mais parfois vous voulez afficher les détails, etc. dans les queues et de petites bandes passantes sont nécessaires.
Mise à jour / réponse:
Il semble que la réponse ci-dessous à propos de la surestimation dans les régions convexes soit correcte car l'augmentation du nombre de points d'intégration semble atténuer le problème (je n'ai pas essayé d'utiliser plus de points.)
> 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