【问题标题】:High exponent numbers with scipy.stats functions具有 scipy.stats 函数的高指数
【发布时间】:2017-07-13 00:20:19
【问题描述】:

我有一组可以变得非常小的数字,从 1e-1001e-700 和更低。精度并不像指数那么重要。 我可以使用 Pandas 很好地加载这些数字,只需提供 Decimal 作为所有此类数字列的转换器。

问题是,即使我使用 Python 的 Decimal,我也不能使用 scipy.stats.chi2.isf 和类似的函数,因为它们的 C 代码明确使用了 double。 一个可能的解决方法是我可以使用 log10 的数字。这里的问题是,虽然有logsf 函数,但对于chi2,它只是作为log(sf(...)) 实现的,因此,当sf 返回0 时它应该返回类似1e-600 的东西时会失败。而isf则根本没有这样的日志功能。

我想知道是否有任何方法可以处理这些数字,而无需自己为 Decimal 编写所有这些函数。

【问题讨论】:

    标签: python pandas scipy double precision


    【解决方案1】:

    您可以直接使用来自scipy.special (gammaln, loggamma) 的 gamma 函数的日志来编写 logsf 的表达式。你可以发送一个拉取请求来实现卡方分布的logsf。

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 2011-11-12
      相关资源
      最近更新 更多