Ich versuche, die ' Dichte' -Funktion in R zu verwenden, um Kernel-Dichteschätzungen durchzuführen. Ich habe einige Schwierigkeiten, die Ergebnisse zu interpretieren und verschiedene Datensätze zu vergleichen, da die Fläche unter der Kurve nicht unbedingt 1 zu sein scheint. Für jede Wahrscheinlichkeitsdichtefunktion (pdf) müssen wir die Fläche . Ich gehe davon aus, dass die Schätzung der Kerneldichte das PDF ausgibt. Ich verwende integrate.xy von sfsmisc die Fläche unter der Kurve zu schätzen.
> # 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)
Sollte die Fläche unter der Kurve nicht immer 1 sein? Es scheint, dass kleine Bandbreiten ein Problem sind, aber manchmal möchten Sie die Details usw. in den Endstücken anzeigen, und kleine Bandbreiten werden benötigt.
Update / Antwort:
Es scheint, dass die Antwort über die Überschätzung in konvexen Bereichen richtig ist, da die Erhöhung der Anzahl der Integrationspunkte das Problem zu verringern scheint (ich habe nicht versucht, mehr als Punkte zu verwenden.)
> 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