當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy stats.yeojohnson用法及代碼示例

本文簡要介紹 python 語言中 scipy.stats.yeojohnson 的用法。

用法:

scipy.stats.yeojohnson(x, lmbda=None)#

返回由Yeo-Johnson 冪變換變換的數據集。

參數

x ndarray

輸入數組。應該是一維的。

lmbda 浮點數,可選

如果 lmbdaNone ,找到最大化對數似然函數的 lambda 並將其作為第二個輸出參數返回。否則,將對給定值進行轉換。

返回

約約翰遜:ndarray

Yeo-Johnson 冪變換數組。

maxlog 浮點數,可選

如果 lmbda 參數為 None,則第二個返回參數是最大化對數似然函數的 lambda。

注意

Yeo-Johnson 變換由下式給出:

y = ((x + 1)**lmbda - 1) / lmbda,                for x >= 0, lmbda != 0
    log(x + 1),                                  for x >= 0, lmbda = 0
    -((-x + 1)**(2 - lmbda) - 1) / (2 - lmbda),  for x < 0, lmbda != 2
    -log(-x + 1),                                for x < 0, lmbda = 2

boxcox 不同,yeojohnson 不要求輸入數據為正。

參考

I. Yeo 和 R.A. Johnson,“用於改善常態或對稱性的新型電源轉換係列”,Biometrika 87.4 (2000):

例子

>>> 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')

我們現在使用 yeojohnson 來轉換數據,使其最接近正常:

>>> ax2 = fig.add_subplot(212)
>>> xt, lmbda = stats.yeojohnson(x)
>>> prob = stats.probplot(xt, dist=stats.norm, plot=ax2)
>>> ax2.set_title('Probplot after Yeo-Johnson transformation')
>>> plt.show()
scipy-stats-yeojohnson-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.yeojohnson。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。