2016-12-07 15 views
0

からランダムサンプリングので、私はこの2パート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に置かれる)

を生成するために、私はこれをやっているが、私はそれが正しい

だとは思いませんsampleH0が正規分布CDF

から10000のサンプルです

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

誰もがあなたがnumpyのを使用している場合は、あなただけのループを捨てることができます偉大なおかげ

+0

おそらく探している[逆サンプリングを変換](https://en.wikipedia.org/wiki/Inverse_transform_sampling)。 –

答えて

0

だろういくつかの光を当てることができれば:

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

関連する問題