诊断

NumPyro 提供了一小组工具,用于诊断后验样本。

自相关

autocorrelation(x: ndarray[Any, dtype[_ScalarType_co]], axis: int = 0, bias: bool = True) ndarray[Any, dtype[_ScalarType_co]][source]

计算样本在维度 axis 上的自相关。

参数:
  • x (numpy.ndarray) – 输入数组。

  • axis (int) – 计算自相关的维度。

  • bias – 是否使用有偏估计量。

返回:

x 的自相关。

返回类型:

numpy.ndarray

自协方差

autocovariance(x: ndarray[Any, dtype[_ScalarType_co]], axis: int = 0, bias: bool = True) ndarray[Any, dtype[_ScalarType_co]][source]

计算样本在维度 axis 上的自协方差。

参数:
  • x (numpy.ndarray) – 输入数组。

  • axis (int) – 计算自协方差的维度。

  • bias – 是否使用有偏估计量。

返回:

x 的自协方差。

返回类型:

numpy.ndarray

有效样本量

effective_sample_size(x: ndarray[Any, dtype[_ScalarType_co]], bias: bool = True) ndarray[Any, dtype[_ScalarType_co]][source]

计算输入 x 的有效样本量,其中 x 的第一维度是链维度,第二维度是样本(draw)维度。

参考

  1. Introduction to Markov Chain Monte Carlo, Charles J. Geyer

  2. Stan Reference Manual version 2.18, Stan Development Team

参数:
  • x (numpy.ndarray) – 输入数组。

  • bias – 是否使用有偏的自协方差估计量。

返回:

x 的有效样本量。

返回类型:

numpy.ndarray

Gelman Rubin

gelman_rubin(x: ndarray[Any, dtype[_ScalarType_co]]) ndarray[Any, dtype[_ScalarType_co]][source]

计算样本链 x 的 R-hat 值,其中 x 的第一维度是链维度,第二维度是样本(draw)维度。要求 x.shape[0] >= 2x.shape[1] >= 2

参数:

x (numpy.ndarray) – 输入数组。

返回:

x 的 R-hat 值。

返回类型:

numpy.ndarray

分割 Gelman Rubin

split_gelman_rubin(x: ndarray[Any, dtype[_ScalarType_co]]) ndarray[Any, dtype[_ScalarType_co]][source]

计算样本链 x 的分割 R-hat 值,其中 x 的第一维度是链维度,第二维度是样本(draw)维度。要求 x.shape[1] >= 4

参数:

x (numpy.ndarray) – 输入数组。

返回:

x 的分割 R-hat 值。

返回类型:

numpy.ndarray

HPDI

hpdi(x: ndarray[Any, dtype[_ScalarType_co]], prob: float = 0.9, axis: int = 0) ndarray[Any, dtype[_ScalarType_co]][source]

计算“最高后验密度区间”(HPDI),它是概率质量为 prob 的最窄区间。

参数:
  • x (numpy.ndarray) – 输入数组。

  • prob (float) – 区间内样本的概率质量。

  • axis (int) – 计算 hpdi 的维度。

返回:

x(1 - prob) / 2(1 + prob) / 2 处的分位数。

返回类型:

numpy.ndarray

摘要

summary(samples: dict | ndarray, prob: float = 0.9, group_by_chain: bool = True) dict[source]

返回一个摘要表,显示后验 samples 的诊断信息。显示的诊断信息包括均值、标准差、中位数、90% 可信区间 hpdi()effective_sample_size()split_gelman_rubin()

参数:
  • samples (dictnumpy.ndarray) – 输入样本的集合,其中最左边的维度是链维度,次左边的维度是样本(draw)维度。

  • prob (float) – HPDI 区间内样本的概率质量。

  • group_by_chain (bool) – 如果为 True,则 samples 中的每个变量将被视为具有 num_chains x num_samples x sample_shape 的形状。否则,对应的形状将是 num_samples x sample_shape(即没有链维度)。

print_summary(samples: dict | ndarray[Any, dtype[_ScalarType_co]], prob: float = 0.9, group_by_chain: bool = True) None[source]

打印一个摘要表,显示后验 samples 的诊断信息。显示的诊断信息包括均值、标准差、中位数、90% 可信区间 hpdi()effective_sample_size()split_gelman_rubin()

参数:
  • samples (dictnumpy.ndarray) – 输入样本的集合,其中最左边的维度是链维度,次左边的维度是样本(draw)维度。

  • prob (float) – HPDI 区间内样本的概率质量。

  • group_by_chain (bool) – 如果为 True,则 samples 中的每个变量将被视为具有 num_chains x num_samples x sample_shape 的形状。否则,对应的形状将是 num_samples x sample_shape(即没有链维度)。