2016-12-07 149 views
0

好了,所以我有這個兩部分CDF隨機抽樣

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) 

,我已經做到了這一點,找到經驗CDF

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

,但我不知道如何從我的CDF生成隨機10000個樣本(這些樣本將被放入sampleH1)

目前,我這樣做,但我不認爲這是正確的

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

哪裏sampleH0是10000個樣本正態分佈的CDF

如果有人可以提供一些線索那簡直太好了感謝

+0

您可能正在尋找[逆變換採樣](https://en.wikipedia.org/wiki/Inverse_transform_sampling)。 –

回答

0

如果您使用numpy的,你可以溝循環:

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