2

2 つの確率変数 x と y の合計の確率分布は、個々の分布の畳み込みによって与えられます。これを数値化するのに苦労しています。次の例では、x と y が均一に分布しており、それぞれの分布がヒストグラムとして近似されています。私の推論では、ヒストグラムを畳み込んで x+y の分布を得る必要があります。

from numpy.random import uniform
from numpy import ceil,convolve,histogram,sqrt
from pylab import hist,plot,show

n = 10**2

x,y = uniform(-0.5,0.5,n),uniform(-0.5,0.5,n)

bins = ceil(sqrt(n))

pdf_x = histogram(x,bins=bins,normed=True)
pdf_y = histogram(y,bins=bins,normed=True)

s = convolve(pdf_x[0],pdf_y[0])

plot(s)
show()

これにより、次のようになります。

ここに画像の説明を入力

つまり、予想どおりの三角分布です。ただし、x 値を見つける方法がわかりません。誰かがここで私を訂正していただければ幸いです。

4

1 に答える 1

5

(より曖昧な詳細に向かって)さらに先に進むために、次のようにコードをさらに調整しました。

from numpy.random import uniform
from numpy import convolve, cumsum, histogram, linspace

s, e, n= -0.5, 0.5, 1e3
x, y, bins= uniform(s, e, n), uniform(s, e, n), linspace(s, e, n** .75)
pdf_x= histogram(x, normed= True, bins= bins)[0]
pdf_y= histogram(y, normed= True, bins= bins)[0]
c= convolve(pdf_x, pdf_y); c= c/ c.sum()
bins= linspace(2* s, 2* e, len(c))
# a simulation
xpy= uniform(s, e, 10* n)+ uniform(s, e, 10* n)
c2= histogram(xpy, normed= True, bins= bins)[0]; c2= c2/ c2.sum()

from pylab import grid, plot, show, subplot
subplot(211), plot(bins, c)
plot(linspace(xpy.min(), xpy.max(), len(c2)), c2, 'r'), grid(True)
subplot(212), plot(bins, cumsum(c)), grid(True), show()

したがって、プロットを次のように指定します。 ここに画像の説明を入力 上部はPDF(青い線) を表し、実際には非常に三角形に見え、シミュレーション (赤い点) は三角形の形状を反映しています。下の部分は を表しておりCDF、これも予想される曲線にうまく従うように見えますS

于 2011-06-29T20:00:12.177 に答える