2016-12-07 2 views
0

Okay, so habe ich diese beiden Teile CDFStichproben aus einer bestimmten Verteilung

def cdfH1a(x): 
    return 0.189497583190681*np.sqrt(2 * np.pi)*sp.erf(np.sqrt(2)* (x/2)) 
def cdfH1b(x): 
    return 0.0141047395886939*np.sqrt(np.pi)*sp.erf(7.07106781186547*x - 14.1421356237309) 

und ich habe dies die empirische CDF

sorted = np.sort(sampleH1) 
yVals = np.arange(len(sorted))/float(len(sorted)) 
plt.plot(sorted, yVals) 
plt.show() 

aber ich weiß nicht, finden getan, wie zu erzeugen, 10000 Stichproben aus meiner CDF

zur Zeit (würde eine solche Proben setzen in sampleH1 werden), ich das tue, aber ich glaube nicht, dass es richtig ist

CDF
sampleH1 = [] 
for x in sampleH0: 
    sampleH1.append(x + (cdfH1a(x) + cdfH1b(x))) 

Wo sampleH0 10000 Proben aus einem normalverteilt ist

Wenn jemand etwas Licht könnte, die großen Dank würde

+0

Sie wahrscheinlich suchen [inverse Transformation Sampling] (https://en.wikipedia.org/wiki/Inverse_transform_sampling). –

Antwort

0

Wenn Sie numpy verwenden, können Sie nur die Schleife Graben:

sampleH1 = sampleH0 + cdfH1a(sampleH0) + cdfH1b(sampleH0)

Verwandte Themen