“参数中的域错误。”与“ stats.beta.rvs”

时间:2019-12-21 14:02:01

标签: python scipy statistics

我的意思是模拟汤普森采样,但是以下代码在参数中给出了域错误。 我搜索它,发现有人说这可能是因为Beta的参数为负,但是这里的参数必须为正,我不知道如何解决它。

<ul>

    <li><a>Blah Parent</a>
        <ul>
            <a>Blah Child 1</a>
                <li><a>option 1</a></li>
                <li><a>option 2</a></li>
            <a>Blah Child 2</a>
                <li><a>option 3</a></li>
                <li><a>option 4</a></li>
            <a>Blah Child 3</a>
                <li><a>option 5</a></li>
                <li><a>option 6</a></li>
        </ul>
    </li>
</ul>

错误:

from scipy import stats   
class TS():
    def __init__(self,alpha,beta,n):
        self.alpha=alpha
        self.beta=beta
        self.n=n
        self.value=[0,0,0]#estimator
        self.prob=[0.4,0.6,0.8]
    def generate(self):
        for j in range(self.n):
            tmp=[0,0,0]
            for i in range(0,3):
                tmp[i]=stats.beta.rvs(self.alpha[i],self.beta[i])
            max_index=tmp.index(max(tmp))
            r=np.random.choice([0,1],p=(1-self.prob[max_index],self.prob[max_index]))
            self.alpha[max_index]+=r
            self.beta[max_index]-=(1-r)
        print(self.value)
one=TS([1,1,1],[1,1,1],100)
one.generate()

1 个答案:

答案 0 :(得分:1)

self.beta[max_index]应该增加{em> 1 - r。更改将self.beta[max_index]更新为

的行
        self.beta[max_index] +=  1 - r

请参阅https://web.stanford.edu/~bvr/pubs/TS_Tutorial.pdf第15页的算法2。