3

1 to N所以我有一个 alpha 向量,一个 beta 向量,当所有估计值(对于 alpha's和 beta's 1 to N)的总和等于 60时,我试图找到一个 theta :

\sum_{i=1}^N \frac{e^{\alpha_i(\theta-\beta_i)}}{1 + e^{\alpha_i(\theta-\beta_i)}} = 60

def CalcTheta(grensscore, alpha, beta):
    theta = 0.0001
    estimate = [grensscore-1]
    while(sum(estimate) < grensscore):
        theta += 0.00001
        for x in range(len(beta)):
            if x == 0:
                estimate = []
            estimate.append(math.exp(alpha[x] * (theta - beta[x])) /
                            (1 + math.exp(alpha[x] * (theta - beta[x]))))
    return(theta)

基本上我所做的是从 开始theta = 0.0001,遍历,计算所有这些总和,当它低于 60 时,继续每次添加 0.0001,而高于 60 意味着我们找到了 theta。

我通过theta这种方式找到了价值。问题是,我使用 Python 花了大约 60 秒,才找到 0.456 的 theta。

找到这个 theta 的更快方法是什么(因为我想将它应用于其他数据)?

4

1 回答 1

2

如果您知道θ的下限和上限,并且函数在这两者之间的范围内是单调的,那么您可以使用二分算法轻松快速地找到所需值。

于 2013-03-18T21:38:29.673 回答