Angenommen, ich habe eine Variable X
mit unbekannter Verteilung. In Mathematica SmoothKernelDensity
können wir mithilfe der Funktion eine geschätzte Dichtefunktion haben. Diese geschätzte Dichtefunktion kann zusammen mit der PDF
Funktion verwendet werden, um die Wahrscheinlichkeitsdichtefunktion eines Werts zu berechnen, etwa X
in der Form der PDF[density,X]
Annahme, dass "Dichte" das Ergebnis von ist SmoothKernelDensity
. Es wäre gut, wenn es eine solche Funktion in R gäbe. So funktioniert das in Mathematica
http://reference.wolfram.com/mathematica/ref/SmoothKernelDistribution.html
Als Beispiel (basierend auf Mathematica-Funktionen):
data = RandomVariate[NormalDistribution[], 100]; #generates 100 values from N(0,1)
density= SmoothKernelDistribution[data]; #estimated density
PDF[density, 2.345] returns 0.0588784
Hier finden Sie weitere Informationen zu PDF:
http://reference.wolfram.com/mathematica/ref/PDF.html
Ich weiß, dass ich seine Dichtefunktion density(X)
in R darstellen und ecdf(X)
seine empirische kumulative Verteilungsfunktion erhalten kann. Ist es möglich, dasselbe in R auf der Grundlage dessen zu tun, was ich über Mathematica beschrieben habe?
Jede Hilfe und Idee wird geschätzt.
density(x)
Wie Sie bereits bemerkt haben, gibt es eine Schätzung des PDFs, aber seine Eignung hängt von dem Zweck ab, für den Sie die Dichte haben möchten. Beachten Sie beispielsweise, dass die Varianz verzerrt ist (bei der Durchführung der Faltung addieren Sie die Varianz des Kernels zur Varianz der Daten, die selbst eine unverzerrte Schätzung darstellt). Solche Kompromisse zwischen Verzerrung und Varianz sind allgegenwärtig. Es gibt andere Alternativen, wie zum Beispiel die Schätzung der logarithmischen Spline-Dichte - aber auch hier hängt die Eignung teilweise davon ab, was Sie damit tun möchten.ecdf(X)
das entspricht einem Perzentil von 7,5, aber es ist nicht das, wonach ich suche.ecdf(b)-ecdf(a)
würde schätzen ( a < X ≤ b ) . Natürlich ist bei stetigen Variablen die Unterscheidung zwischen < und ≤ unwichtig. Wenn X diskret ist, können Sie P ( X = 7,5 ) schätzen, indem Sie den Stichprobenanteil der Werte mit 0,75 berechnen.Antworten:
?density
weist darauf hin, dass damitapprox
bereits eine lineare Interpolation durchgeführt wird;?approx
weist darauf hin, dassapproxfun
eine geeignete Funktion generiert:Wenn
integrate
man von einem geeigneten Abstand unterhalb des Minimums in der Stichprobe ausgeht (ein Vielfaches - beispielsweise 4 oder 5 - der Bandbreite, die imdf
Allgemeinen für einen geeigneten Abstand verwendet wird), kann man eine gute Annäherung an das entsprechende cdf erhaltendf
.quelle
df(2.3)
der Wert der geschätzten Dichtefunktion gibt an ,x=2.3
aber wasPDF
tut in Mathematica gibt den Bereich unter der Kurve obenx=2.3
. Da bin ich mir nicht ganz sicher. Das ist nur meine Vermutung. Kannst du nachbilden, was ich in Mathematica getan habe?PDF
Mathematica das tut, was Sie in Ihrer Antwort beschrieben haben (dh den Wert der Dichtefunktion für einen gegebenen X-Wert ermitteln), dann glaube ich, dass ich meine Antwort erhalten habe. Nur gibt es viele Verwirrungen bei der Verwendung von Worten!PDF
Seite sagt, gibt sie das Gleiche zurück, was ich tue, aber die Methoden, die sie in diesem Fall für die Berechnung verwendet, sind wahrscheinlich etwas genauer (für einen solchen Zweck hat zusätzliche Genauigkeit jedoch nur einen geringen Wert). Eine Diskussion der Unterscheidung zwischen Wahrscheinlichkeit und Dichte finden Sie hier und hier .