Was ist die Funktion ecdf(x)(x)
von R in Python, entweder in numpy oder scipy? Ist ecdf(x)(x)
im Grunde das Gleiche wie:
oder ist etwas anderes erforderlich?
BEARBEITEN Wie kann man die Anzahl der von ecdf
verwendeten Bins steuern?
Die OP-Implementierung für ecdf
ist falsch, Sie sollten nicht cumsum()
die Werte annehmen. Also nicht ys = np.cumsum(x)/np.sum(x)
, sondern ys = np.cumsum(1 for _ in x)/float(len(x))
oder besser ys = np.arange(1, len(x)+1)/float(len(x))
Sie gehen entweder mit statmodels
's ECDF
, wenn Sie mit dieser zusätzlichen Abhängigkeit OK sind oder Ihre eigene Implementierung bereitstellen. Siehe unten:
Dieser Autor hat ein sehr schönes Beispiel für eine benutzerdefinierte ECDF-Funktion: John Stachurskis Python-Vorlesungen . Seine Vorlesungsreihe richtet sich an Doktoranden in Computerökonomie; Aber sie sind meine erste Anlaufstelle für alle, die allgemeines wissenschaftliches Rechnen in Python erlernen.
Bearbeiten : Dies ist jetzt ein Jahr alt, aber ich dachte, ich würde immer noch den "Bearbeiten" -Teil Ihrer Frage beantworten, falls Sie (oder andere) es noch nützlich finden.
Es gibt wirklich keine "Behälter" mit ECDFs, wie es bei Histogrammen der Fall ist. Wenn G Ihre empirische Verteilungsfunktion ist, die unter Verwendung des Datenvektors Z gebildet wird, ist G (x) buchstäblich die Anzahl der Vorkommen von Z & lt; = x geteilt durch len (Z). Dies erfordert kein "Binning" zu bestimmen. Es gibt also einen Sinn, in dem der ECDS alle möglichen Informationen über einen Datensatz behält (da er den gesamten Datensatz für Berechnungen behalten muss), während ein Histogramm durch Binning tatsächlich einige Informationen über den Datensatz verliert. Ich bevorzuge aus diesem Grund lieber mit ecdfs vs Histogrammen, wenn möglich.
Spaßbonus: Wenn Sie aus sehr großen Streaming-Daten ein EDFD-ähnliches Objekt mit kleinem Footprint erstellen müssen, sollten Sie sich Folgendes ansehen: " Data Skeletons " Papier von McDermott et al.