本文简要介绍 python 语言中scipy.stats.sampling.FastGeneratorInversion.evaluate_error
的用法。
用法:
FastGeneratorInversion.evaluate_error(size=100000, random_state=None, x_error=False)#
评估反演的数值精度(u- 和x-error)。
- size: 整数,可选
估计误差的随机点的数量。默认为
100000
。- random_state: {无,整数,
numpy.random.Generator
, numpy.random.RandomState
}, optionalNumPy 随机数生成器或底层 NumPy 随机数生成器的种子,用于生成均匀随机数流。如果
random_state
为 None,则使用self.random_state
。如果random_state
是 int,则使用np.random.default_rng(random_state)
。如果random_state
已经是Generator
或RandomState
实例,则使用该实例。
- u_error, x_error: 浮点数元组
随机变量的 NumPy 数组。
参数 ::
返回 ::
注意:
逆 CDF 的数值精度
ppf
由u-error控制。其计算方法如下:max |u - CDF(PPF(u))|
取最大值的地方尺寸区间 [0,1] 中的随机点。random_state
确定随机样本。请注意,如果ppf
准确地说,u-error 将为零。x-error 测量精确的 PPF 和
ppf
之间的直接距离。如果x_error
设置为True`, it is computed as the maximum of the minimum of the relative and absolute x-error: ``max(min(x_error_abs[i], x_error_rel[i]))
,其中x_error_abs[i] = |PPF(u[i]) - PPF_fast(u[i])|
、x_error_rel[i] = max |(PPF(u[i]) - PPF_fast(u[i])) / PPF(u[i])|
。请注意,在PPF(u)
接近零或非常大的情况下,考虑相对 x-error 非常重要。默认情况下,仅评估 u-error 并将 x-error 设置为
np.nan
。请注意,如果 PPF 的实现很慢,x-error 的评估将会非常慢。有关这些误差测量的更多信息可以在 [1] 中找到。
参考:
[1]德弗林格、格哈德、沃尔夫冈·霍曼和约瑟夫·莱多德。 “当仅知道密度时,通过数值反演生成随机变量。” ACM 建模和计算机仿真汇刊 (TOMACS) 20.4 (2010):1-25。
例子:
>>> import numpy as np >>> from scipy import stats >>> from scipy.stats.sampling import FastGeneratorInversion
创建正态分布的对象:
>>> d_norm_frozen = stats.norm() >>> d_norm = FastGeneratorInversion(d_norm_frozen)
为了确认数值反演的准确性,我们评估近似误差(u-error 和 x-error)。
>>> u_error, x_error = d_norm.evaluate_error(x_error=True)
u-error 应低于 1e-10:
>>> u_error 8.785783212061915e-11 # may vary
将 PPF 与近似值
ppf
进行比较:>>> q = [0.001, 0.2, 0.4, 0.6, 0.8, 0.999] >>> diff = np.abs(d_norm_frozen.ppf(q) - d_norm.ppf(q)) >>> x_error_abs = np.max(diff) >>> x_error_abs 1.2937954707581412e-08
这是在 q 点评估的绝对x-error。相对误差由下式给出
>>> x_error_rel = np.max(diff / np.abs(d_norm_frozen.ppf(q))) >>> x_error_rel 4.186725600453555e-09
上面计算的 x_error 是以非常相似的方式在更大的随机值 q 集合上导出的。在每个值 q[i] 处,取相对误差和绝对误差的最小值。然后得出最终值作为这些值的最大值。在我们的示例中,我们得到以下值:
>>> x_error 4.507068014335139e-07 # may vary
相关用法
- Python SciPy FastGeneratorInversion.support用法及代码示例
- Python SciPy FortranFile.read_record用法及代码示例
- Python SciPy FortranFile.write_record用法及代码示例
- Python SciPy FitResult.plot用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy stats.anderson用法及代码示例
- Python SciPy ClusterNode.pre_order用法及代码示例
- Python SciPy stats.iqr用法及代码示例
- Python SciPy ndimage.correlate用法及代码示例
- Python SciPy special.exp1用法及代码示例
- Python SciPy special.expn用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy ndimage.morphological_gradient用法及代码示例
- Python SciPy distance.sokalmichener用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy csc_array.diagonal用法及代码示例
- Python SciPy fft.idctn用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy hierarchy.ward用法及代码示例
- Python SciPy signal.chirp用法及代码示例
- Python SciPy stats.genpareto用法及代码示例
- Python SciPy ndimage.variance用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.sampling.FastGeneratorInversion.evaluate_error。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。