当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.boxcox用法及代码示例


本文简要介绍 python 语言中 scipy.stats.boxcox 的用法。

用法:

scipy.stats.boxcox(x, lmbda=None, alpha=None, optimizer=None)#

返回由Box-Cox 幂变换变换的数据集。

参数

x ndarray

要转换的输入数组。

如果lmbda不是无,这是一个别名scipy.special.boxcox.如果返回 nanx < 0;如果返回 -infx == 0 and lmbda < 0.

如果 lmbda 为 None,则数组必须为正数、一维且非常量。

lmbda 标量,可选

如果 lmbda 为 None(默认),则找到使对数似然函数最大化的 lmbda 值,并将其作为第二个输出参数返回。

如果 lmbda 不是 None,则对该值进行转换。

alpha 浮点数,可选

如果lmbda是无并且scipy.stats.alpha不是 None (默认),返回100 * (1-alpha)%置信区间lmbda作为第三个输出参数。必须介于 0.0 和 1.0 之间。

如果lmbda不是无,scipy.stats.alpha被忽略。

optimizer 可调用的,可选的

如果 lmbda 为 None,则优化器是用于查找使负对数似然函数最小化的 lmbda 值的标量优化器。优化器是一种接受一个参数的可调用函数:

乐趣 可调用的

目标函数,在给定的 lmbda 值下评估负对数似然函数

并返回一个对象,例如scipy.optimize.OptimizeResult,它持有的最优值lmbda在一个属性中x.

有关详细信息,请参阅 boxcox_normmax 中的示例或 scipy.optimize.minimize_scalar 的文档。

如果 lmbda 不是 None,则忽略优化器。

返回

boxcox ndarray

Box-Cox 幂变换数组。

maxlog 浮点数,可选

如果 lmbda 参数为 None,则第二个返回参数是最大化对数似然函数的 lmbda。

(min_ci, max_ci) 浮点数元组,可选

如果lmbda参数为 None 并且scipy.stats.alpha不是无,这个返回的浮点元组表示给定的最小和最大置信限scipy.stats.alpha.

注意

Box-Cox 变换由下式给出:

y = (x**lmbda - 1) / lmbda,  for lmbda != 0
    log(x),                  for lmbda = 0

boxcox要求输入数据为正数。有时,Box-Cox 转换提供了一个移位参数来实现这一点;boxcox才不是。这样的移位参数等价于在x调用之前boxcox.

提供 alpha 时返回的置信限给出以下区间:

其中llf 为对数似然函数, 为卡方函数。

参考

G.E.P. Box 和 D.R.考克斯,“变革分析”,皇家统计学会杂志 B,26, 211-252 (1964)。

例子

>>> from scipy import stats
>>> import matplotlib.pyplot as plt

我们从非正态分布中生成一些随机变量,并为它制作一个概率图,以表明它在尾部是非正态的:

>>> fig = plt.figure()
>>> ax1 = fig.add_subplot(211)
>>> x = stats.loggamma.rvs(5, size=500) + 5
>>> prob = stats.probplot(x, dist=stats.norm, plot=ax1)
>>> ax1.set_xlabel('')
>>> ax1.set_title('Probplot against normal distribution')

我们现在使用 boxcox 来转换数据,使其最接近正常:

>>> ax2 = fig.add_subplot(212)
>>> xt, _ = stats.boxcox(x)
>>> prob = stats.probplot(xt, dist=stats.norm, plot=ax2)
>>> ax2.set_title('Probplot after Box-Cox transformation')
>>> plt.show()
scipy-stats-boxcox-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.boxcox。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。