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


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


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

用法:

scipy.stats.boxcox_llf(lmb, data)#

Boxcox 對數似然函數。

參數

lmb 標量

Box-Cox 轉換的參數。有關詳細信息,請參閱 boxcox

data array_like

用於計算 Box-Cox 對數似然的數據。如果數據是多維的,則沿第一個軸計算對數似然。

返回

llf 浮點數或 ndarray

Box-Cox 給定 lmb 的數據的對數似然。一維數據為浮點數,否則為數組。

注意

Box-Cox 對數似然函數在這裏定義為

其中 y 是 Box-Cox 轉換後的輸入數據 x

例子

>>> import numpy as np
>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> from mpl_toolkits.axes_grid1.inset_locator import inset_axes

生成一些隨機變量並計算 lmbda 值範圍內的Box-Cox 對數似然值:

>>> rng = np.random.default_rng()
>>> x = stats.loggamma.rvs(5, loc=10, size=1000, random_state=rng)
>>> lmbdas = np.linspace(-2, 10)
>>> llf = np.zeros(lmbdas.shape, dtype=float)
>>> for ii, lmbda in enumerate(lmbdas):
...     llf[ii] = stats.boxcox_llf(lmbda, x)

還可以使用 boxcox 找到最佳 lmbda 值:

>>> x_most_normal, lmbda_optimal = stats.boxcox(x)

將對數似然繪製為 lmbda 的函數。將最佳 lmbda 添加為水平線,以檢查這是否確實是最佳值:

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot(lmbdas, llf, 'b.-')
>>> ax.axhline(stats.boxcox_llf(lmbda_optimal, x), color='r')
>>> ax.set_xlabel('lmbda parameter')
>>> ax.set_ylabel('Box-Cox log-likelihood')

現在添加一些概率圖,以顯示在對數似然最大化的情況下,使用 boxcox 轉換的數據看起來最接近正常:

>>> locs = [3, 10, 4]  # 'lower left', 'center', 'lower right'
>>> for lmbda, loc in zip([-1, lmbda_optimal, 9], locs):
...     xt = stats.boxcox(x, lmbda=lmbda)
...     (osm, osr), (slope, intercept, r_sq) = stats.probplot(xt)
...     ax_inset = inset_axes(ax, width="20%", height="20%", loc=loc)
...     ax_inset.plot(osm, osr, 'c.', osm, slope*osm + intercept, 'k-')
...     ax_inset.set_xticklabels([])
...     ax_inset.set_yticklabels([])
...     ax_inset.set_title(r'$\lambda=%1.2f$' % lmbda)
>>> plt.show()
scipy-stats-boxcox_llf-1.png

相關用法


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