scipy.stats.

boxcox#

scipy.stats.boxcox(x, lmbda=None, alpha=None, optimizer=None)[原始碼]#

傳回經 Box-Cox 冪轉換的資料集。

參數:
xndarray

要轉換的輸入陣列。

如果 lmbda 不是 None,則這是 scipy.special.boxcox 的別名。如果 x < 0 則傳回 nan;如果 x == 0 lmbda < 0 則傳回 -inf。

如果 lmbda 是 None,則陣列必須為正數、1 維且非常數。

lmbda純量,選用

如果 lmbda 是 None (預設值),則尋找使對數概似函數最大化的 lmbda 值,並將其作為第二個輸出引數傳回。

如果 lmbda 不是 None,則對該值進行轉換。

alpha浮點數,選用

如果 lmbda 是 None 且 alpha 不是 None (預設值),則傳回 lmbda100 * (1-alpha)% 信賴區間作為第三個輸出引數。必須介於 0.0 和 1.0 之間。

如果 lmbda 不是 None,則忽略 alpha

optimizer可呼叫物件,選用

如果 lmbda 是 None,則 optimizer 是用於尋找使負對數概似函數最小化的 lmbda 值的純量最佳化器。optimizer 是一個可呼叫物件,它接受一個引數

fun可呼叫物件

目標函數,它在提供的 lmbda 值下評估負對數概似函數

並傳回一個物件,例如 scipy.optimize.OptimizeResult 的實例,該實例在屬性 x 中保存 lmbda 的最佳值。

請參閱 boxcox_normmax 中的範例或 scipy.optimize.minimize_scalar 的文件以取得更多資訊。

如果 lmbda 不是 None,則忽略 optimizer

傳回值:
boxcoxndarray

Box-Cox 冪轉換陣列。

maxlog浮點數,選用

如果 lmbda 參數為 None,則第二個傳回的引數是使對數概似函數最大化的 lmbda

(min_ci, max_ci)浮點數元組,選用

如果 lmbda 參數為 None 且 alpha 不是 None,則此傳回的浮點數元組表示給定 alpha 的最小和最大信賴區間限制。

註解

Box-Cox 轉換由下式給出

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

boxcox 要求輸入資料為正數。有時 Box-Cox 轉換會提供一個位移參數來實現此目的;boxcox 不會。這樣的位移參數等效於在呼叫 boxcox 之前向 x 新增一個正數常數。

當提供 alpha 時傳回的信賴區間限制給出以下區間

\[llf(\hat{\lambda}) - llf(\lambda) < \frac{1}{2}\chi^2(1 - \alpha, 1),\]

其中 llf 是對數概似函數,而 \(\chi^2\) 是卡方函數。

參考文獻

G.E.P. Box 和 D.R. Cox,“An Analysis of Transformations”,Journal of the Royal Statistical Society 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()
../../_images/scipy-stats-boxcox-1.png