2016-05-17 43 views

回答

1

如果在日誌空間中完成,此問題要穩定得多。

訣竅是對於小於零的值使用scipy.stats.norm.logcdf,對於大於零的值使用scipy.stats.norm.logsf

這具有穩定算法相結合,用於計算log(exp(y) - exp(x))給出合理的結果

import numpy as np 
from scipy.stats import norm 

def log_subtract(x, y): 
    return x + np.log1p(-np.exp(y-x)) 

def lnprob(x, y): 
    if x < 0: 
     return log_subtract(norm.logcdf(y), norm.logcdf(x)) 
    else: 
     return log_subtract(norm.logsf(x), norm.logsf(y)) 
相關問題