Da das ganze auf große Datenmengen angewandt werden soll, möchte ich tunlichst auf lange Schleifen verzichten.
Eine Funktion, die mir einen einzelnen Wert der empirische Verteilungsfunktion zurückgibt, habe ich bereits ohne Schleife geschrieben:
Code: Alles auswählen
import numpy as np
def emp_Vfkt(x,x_data):
return len(x_data[x_data<=x])/len(x_data)
Code: Alles auswählen
data = np.array([1,2,2,2,3,3,4,5,6,7,7,7,7,7,7,8])
emp_Vfkt(1,data)
Out[161]: 0.0625
emp_Vfkt(2,data)
Out[162]: 0.25
emp_Vfkt(3,data)
Out[163]: 0.375
Code: Alles auswählen
import numpy as np
def emp_Vfkt(x):
y = []
for i in x:
y += [len(x[x<=i])/len(x)]
return np.array(y)
Code: Alles auswählen
data = np.array([1,2,2,2,3,3,4,5,6,7,7,7,7,7,7,8])
emp_Vfkt(data)
Out[172]:
array([0.0625, 0.25 , 0.25 , 0.25 , 0.375 , 0.375 , 0.4375, 0.5 ,
0.5625, 0.9375, 0.9375, 0.9375, 0.9375, 0.9375, 0.9375, 1. ])
Hoffe mir kann hier jemand weiterhelfen. Viele Grüße
