StudentT

class paddle.distribution. StudentT ( df, loc, scale, name=None ) [源代码]

学生 t 分布

数学公式:

\[pdf(x; \nu, \mu, \sigma) = \frac{\Gamma[(\nu+1)/2]}{\sigma\sqrt{\nu\pi}\Gamma(\nu/2)[1+(\frac{x-\mu}{\sigma})^2/\nu]^{(1+\nu)/2}}\]

上面的数学公式中:

  • \(df = \nu\):自由度;

  • \(loc = \mu\):平移变换参数;

  • \(scale = \sigma\):缩放变换参数;

  • \(\Gamma(\cdot)\):gamma 函数;

参数

  • df (float|Tensor) - 学生 t 分布的自由度,需大于 0。若输入类型是 float, df 会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。

  • loc (float|Tensor) - 学生 t 分布的平移变换参数。若输入类型是 float, loc 会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。

  • scale (float|Tensor) - 学生 t 分布的缩放变换参数,需大于 0。若输入类型是 float, scale 会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

代码示例

>>> import paddle
>>> from paddle.distribution import StudentT
>>> paddle.set_device('cpu')
>>> paddle.seed(100)
>>> dist = StudentT(df=10.0, loc=0.0, scale=1.0)
>>> dist.sample([3])
Tensor(shape=[3, 1], dtype=float32, place=Place(cpu), stop_gradient=True,
[[-2.07709980],
 [ 0.27981189],
 [ 0.00881413]])

>>> dist2 = StudentT(df=paddle.to_tensor([10.0, 5.0]), loc=paddle.to_tensor([0.0, 0.0]), scale=paddle.to_tensor([1.0, 2.0]))
>>> value_tensor = paddle.to_tensor([0.8], dtype="float32")
>>> lp = dist2.log_prob(value_tensor)
>>> print(lp)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[-1.28509235, -1.75626254])

>>> p = dist2.prob(value_tensor)
>>> print(p)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[0.27662504, 0.17268908])

>>> entropy = dist2.entropy()
>>> print(entropy)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[1.52126312, 2.32064891])

属性

mean

学生 t 分布的均值

返回

Tensor,均值

variance

学生 t 分布的方差

返回

Tensor,方差

方法

prob(value)

计算 value 的概率。

参数

  • value (Tensor) - 待计算值。

返回

Tensor,value 的概率。数据类型与 df 相同。

log_prob(value)

计算 value 的对数概率。

参数

  • value (Tensor) - 待计算值。

返回

Tensor,value 的对数概率。数据类型与 df 相同。

sample(shape=[])

从学生 t 分布中生成满足特定形状的样本数据。最终生成样本形状为 shape+batch_shape

参数

  • shape (Sequence[int],可选):采样次数。

返回

Tensor:样本数据。其维度为 \(\text{sample shape} + \text{batch shape}\)

entropy()

计算学生 t 分布的信息熵。

\[H = \log(\frac{\Gamma(\nu/2)\Gamma(1/2) \sigma \sqrt{\nu}}{\Gamma[(1+\nu)/2]}) + \frac{(1+\nu)}{2} \cdot \{\psi[(1+\nu)/2] - \psi(\nu/2)\}\]

上面的数学公式中:

  • \(\nu\):自由度;

  • \(\Gamma(\cdot)\):gamma 函数;

  • \(\psi(\cdot)\):digamma 函数;

返回

学生 t 分布的信息熵,数据类型与 df 相同。