测试工具¶
拟合优度检验¶
该模块实现了拟合优度测试,用于检查分布之间的.sample()
和.log_prob()
方法的一致性。主要函数返回一个拟合优度p值gof
,对于良好的数据,该值应服从Uniform(0,1)
分布,而对于不良数据,该值应接近零。要在测试中使用此返回值,请将全局变量TEST_FAILURE_RATE
设置为小于1 / 测试套件中测试数量的值,然后在每个测试中断言gof > TEST_FAILURE_RATE
。例如:
TEST_FAILURE_RATE = 1 / 20 # For 1 in 20 chance of spurious failure.
def test_my_distribution():
d = MyDistribution()
samples = d.sample([10000])
probs = d.log_prob(samples).exp()
gof = auto_goodness_of_fit(samples, probs)
assert gof > TEST_FAILURE_RATE
该模块是 goftests 库的一个移植。
- multinomial_goodness_of_fit(probs, counts, *, total_count=None, plot=False)[source]¶
皮尔逊卡方检验,可能基于截断数据。 https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test
- Parameters
probs (torch.Tensor) – 概率向量。
counts (torch.Tensor) – 计数的向量。
total_count (int) – 如果数据被截断,则为可选的总计数,否则为None。
plot (bool) – 是否打印直方图。默认为 False。
- Returns
截断多项式样本的p值。
- Return type
- unif01_goodness_of_fit(samples, *, plot=False)[source]¶
将均匀分布的样本进行分箱并应用皮尔逊卡方检验。
- Parameters
样本 (torch.Tensor) – 来自候选分布的实值样本向量,该分布应为均匀分布(0, 1)。
plot (bool) – 是否打印直方图。默认为 False。
- Returns
拟合优度,作为p值。
- Return type
- exp_goodness_of_fit(samples, plot=False)[source]¶
将指数分布的样本转换为Uniform(0,1)分布,并通过分箱的皮尔逊卡方检验评估拟合优度。
- Parameters
样本 (torch.Tensor) – 来自候选分布的实值样本向量,该分布应为指数分布(1)。
plot (bool) – 是否打印直方图。默认为 False。
- Returns
拟合优度,作为p值。
- Return type
- density_goodness_of_fit(samples, probs, plot=False)[source]¶
将任意连续样本转换为Uniform(0,1)分布,并通过分箱的皮尔逊卡方检验评估拟合优度。
- Parameters
样本 (torch.Tensor) – 来自分布的实值样本的向量列表。
probs (torch.Tensor) – 在这些样本处评估的概率密度向量。
plot (bool) – 是否打印直方图。默认为 False。
- Returns
拟合优度,作为p值。
- Return type
- vector_density_goodness_of_fit(samples, probs, *, dim=None, plot=False)[source]¶
通过最近邻分布[1,2,3]将任意多元连续样本转换为单变量(0,1)分布,并通过分箱皮尔逊卡方检验评估拟合优度。
- [1] Peter J. Bickel and Leo Breiman (1983)
“最近邻距离函数的和、矩界、极限定理和拟合优度检验” https://projecteuclid.org/download/pdf_1/euclid.aop/1176993668
- [2] Mike Williams (2010)
“你的拟合有多好?高能物理中的无分箱多变量拟合优度检验。” https://arxiv.org/abs/1006.3019
- [3] Nearest Neighbour Distribution
https://en.wikipedia.org/wiki/Nearest_neighbour_distribution
- Parameters
样本 (torch.Tensor) – 来自分布的实向量值样本的张量。
probs (torch.Tensor) – 在这些样本上评估的概率密度向量。
dim (int) – 数据所在的子流形的可选维度。 默认为
samples.shape[-1]
。plot (bool) – 是否打印直方图。默认为 False。
- Returns
拟合优度,作为p值。
- Return type
- auto_goodness_of_fit(samples, probs, *, dim=None, plot=False)[source]¶
在样本维度上进行分发,并委托给
density_goodness_of_fit()
或vector_density_goodness_of_fit()
。- Parameters
样本 (torch.Tensor) – 一个在最左侧维度上堆叠的样本张量。
probs (torch.Tensor) – 在这些样本上评估的概率向量。
dim (int) – 可选的流形维度,默认为
samples.shape[1:].numel()
。plot (bool) – 是否打印直方图。默认为 False。