本文简要介绍 python 语言中 scipy.stats.boxcox_normmax
的用法。
用法:
scipy.stats.boxcox_normmax(x, brack=None, method='pearsonr', optimizer=None)#
计算输入数据的最佳Box-Cox 变换参数。
- x: array_like
输入数组。所有条目必须是正数、有限实数。
- brack: 2 元组,可选,默认 (-2.0, 2.0)
默认 optimize.brent 解算器的下坡括号搜索的起始间隔。请注意,这在大多数情况下并不重要;最终结果允许在这个括号之外。如果优化器通过,brack 必须为 None。
- method: str,可选
确定最优变换参数的方法(
boxcox
lmbda
参数)。选项是:- ‘pearsonr’(默认)
最大化 Pearson 相关系数
y = boxcox(x)
和预期值y
如果x将是normally-distributed。- ‘mle’
最大化对数似然
boxcox_llf
。这是boxcox
中使用的方法。- ‘all’
使用所有可用的优化方法,并返回所有结果。有助于比较不同的方法。
- optimizer: 可调用的,可选的
优化器是一个接受一个参数的可调用对象:
- 乐趣 可调用的
要最小化的目标函数。 fun 接受一个参数,即 Box-Cox 变换参数 lmbda,并返回所提供参数处的函数值(例如负对数似然)。优化器的工作是找到使乐趣最小化的 lmbda 值。
并返回一个对象,例如
scipy.optimize.OptimizeResult
,它持有的最优值lmbda在一个属性中x.有关详细信息,请参阅下面的示例或
scipy.optimize.minimize_scalar
的文档。
- maxlog: 浮点数或 ndarray
找到的最佳变换参数。
method='all'
的数组而不是标量。
参数 ::
返回 ::
例子:
>>> import numpy as np >>> from scipy import stats >>> import matplotlib.pyplot as plt
我们可以通过各种方式生成一些数据并确定最佳
lmbda
:>>> rng = np.random.default_rng() >>> x = stats.loggamma.rvs(5, size=30, random_state=rng) + 5 >>> y, lmax_mle = stats.boxcox(x) >>> lmax_pearsonr = stats.boxcox_normmax(x)
>>> lmax_mle 2.217563431465757 >>> lmax_pearsonr 2.238318660200961 >>> stats.boxcox_normmax(x, method='all') array([2.23831866, 2.21756343])
>>> fig = plt.figure() >>> ax = fig.add_subplot(111) >>> prob = stats.boxcox_normplot(x, -10, 10, plot=ax) >>> ax.axvline(lmax_mle, color='r') >>> ax.axvline(lmax_pearsonr, color='g', ls='--')
>>> plt.show()
或者,我们可以定义自己的优化器函数。假设我们只对值感兴趣lmbda在区间 [6, 7] 上,我们要使用scipy.optimize.minimize_scalar和
method='bounded'
,并且我们希望在优化对数似然函数时使用更严格的容差。为此,我们定义一个接受位置参数的函数乐趣和用途scipy.optimize.minimize_scalar尽量减少乐趣受限于提供的界限和公差:>>> from scipy import optimize >>> options = {'xatol': 1e-12} # absolute tolerance on `x` >>> def optimizer(fun): ... return optimize.minimize_scalar(fun, bounds=(6, 7), ... method="bounded", options=options) >>> stats.boxcox_normmax(x, optimizer=optimizer) 6.000...
相关用法
- Python SciPy stats.boxcox_normplot用法及代码示例
- Python SciPy stats.boxcox_llf用法及代码示例
- Python SciPy stats.boxcox用法及代码示例
- Python SciPy stats.boltzmann用法及代码示例
- Python SciPy stats.boschloo_exact用法及代码示例
- Python SciPy stats.bootstrap用法及代码示例
- Python SciPy stats.bartlett用法及代码示例
- Python SciPy stats.brunnermunzel用法及代码示例
- Python SciPy stats.betaprime用法及代码示例
- Python SciPy stats.betabinom用法及代码示例
- Python SciPy stats.binned_statistic_2d用法及代码示例
- Python SciPy stats.binned_statistic用法及代码示例
- Python SciPy stats.bayes_mvs用法及代码示例
- Python SciPy stats.burr12用法及代码示例
- Python SciPy stats.binom用法及代码示例
- Python SciPy stats.burr用法及代码示例
- Python SciPy stats.bws_test用法及代码示例
- Python SciPy stats.beta用法及代码示例
- Python SciPy stats.bradford用法及代码示例
- Python SciPy stats.binomtest用法及代码示例
- Python SciPy stats.binned_statistic_dd用法及代码示例
- Python SciPy stats.binom_test用法及代码示例
- Python SciPy stats.bernoulli用法及代码示例
- Python SciPy stats.barnard_exact用法及代码示例
- Python SciPy stats.anderson用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.boxcox_normmax。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。