本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。