scipy.stats.Normal.

logentropy#

Normal.logentropy(*, method=None)[source]#

微分熵的对数

用概率密度函数 \(f(x)\) 和支持 \(\chi\) 表示,连续随机变量 \(X\) 的微分熵(或简称“熵”)为

\[h(X) = - \int_{\chi} f(x) \log f(x) dx\]

离散随机变量的定义类似,用 PMF 替换 PDF,用支持上的和代替积分。

logentropy 计算微分熵的对数(“log-entropy”),\(\log(h(X))\),但它在数值上可能比朴素实现(计算 \(h(X)\) 然后取对数)更有利。

参数:
method{None, ‘formula’, ‘logexp’, ‘quadrature}

用于评估 log-entropy 的策略。默认情况下 (None),基础设施在以下选项之间进行选择,按优先级顺序列出。

  • 'formula':使用 log-entropy 本身的公式

  • 'logexp':评估熵并取对数

  • 'quadrature':数值上 log-积分(或者,在离散情况下,log-求和)熵被积函数(被加数)的对数

并非所有分布都可使用所有 method 选项。如果所选的 method 不可用,则会引发 NotImplementedError

返回:
out数组

log-entropy。

参见

entropy
logpdf

注释

连续分布的微分熵可以为负。在这种情况下,log-entropy 是复数,虚部为 \(\pi\)。为了一致性,此函数的结果始终具有复数 dtype,无论虚部的值如何。

参考文献

[1]

Differential entropy, Wikipedia, https://en.wikipedia.org/wiki/Differential_entropy

示例

使用所需的参数实例化分布

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Uniform(a=-1., b=1.)

评估 log-entropy

>>> X.logentropy()
(-0.3665129205816642+0j)
>>> np.allclose(np.exp(X.logentropy()), X.entropy())
True

对于具有负熵的随机变量,log-entropy 的虚部等于 np.pi

>>> X = stats.Uniform(a=-.1, b=.1)
>>> X.entropy(), X.logentropy()
(-1.6094379124341007, (0.4758849953271105+3.141592653589793j))