如何以数值稳定的方式评估log(1 - normal_cdf(x))?此处,normal_cdf是标准正态分布的累积分布函数。

例如,在Python中:

import scipy
from scipy.stats import norm

np.log(1 - norm.cdf(10))


因为-inf几乎等于RuntimeWarning: divide by zero encountered in log,所以给norm.cdf(10)1。是否有像logsumexp这样的函数可以避免数值下溢?

最佳答案

由于正态分布关于0对称,所以我们有

1 - F(x) = P(X > x)
         = P(X < -x)
         = F(-x)


因此

np.log(1 - norm.cdf(10)) = np.log(norm.cdf(-10))
                         = norm.logcdf(-10)

关于python - 以数值稳定的方式评估log(1-normal_cdf(x)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50282805/

10-11 20:32