验证随机变量生成的合成方法算法

时间:2014-08-13 20:04:54

标签: python variables random simulation composition

我正在努力实现组合方法算法,该算法说明如下:

作文方法 生成rando变量的另一种方法是组合方法。假设X具有CDF(累积分布函数)Fx,我们希望模拟X的值。

我们可以写

enter image description here

其中Fj也是CDF,pj> 0表示所有j和Sum(Pj)= 1

合成算法:

1. Generate I distributed on the non-negative integers so that:

    P(I=j) = Pj
2. If I = j, then simulate Yj from Fj

3. Set X= Yj 

这是我在python中的实现,我不确定的部分是当我设置

Yj = F[j](random.random())

因为我认为我应该使用F [j]的倒数。我想澄清一下这条线是否正确。

以下是算法的其余部分:

def composition_method(F,p):
X =[None]*len(p) #Inicializando list of size p
cont=True
while(cont):
    for j in range (0,len(p)):
        #1.Generate I, non negative integer sych that  P(I=j)= Pj
        I = inverse_transform(p)
        #2. if I=j, simulate Yj from Fj
        if(I=j):
            Yj = F[j](random.random())
            #3. Sets X= Yj 
            X[j]=Yj
    cont = False     
    #4. Verififying x does not have None elements
    for(elm in X):
        if(elm==None):
            cont =True

任何帮助都将受到高度赞赏:)

1 个答案:

答案 0 :(得分:1)

F j 是为两个属性选择的累积分布函数。 1)在适当的权重下,它们组成你感兴趣的F x ,2)它们本身应该很容易生成。最常见的方法是使用inversion。另一种可能性是convolution。细节取决于F j 的具体集合。

如果你不熟悉反转或卷积,你真的不应该跳进作文。