我正在嘗試使用下面提到的代碼獲取 lambda 值,但是在進(jìn)行逆變換時(shí),由于 lambda 的負(fù)值,我們得到的轉(zhuǎn)換值太高。如何獲得正 lambda 值或倍數(shù)? python from scipy.stats import boxcox from scipy.special import inv_boxcox y =[90,20,30,40,50] y,fitted_lambda= boxcox(y,lmbda=None) fitted_lambda 輸出:-0.24598892144685428在這里,我希望 lambda 值為正,或者如果我有 lambda 值列表來(lái)選擇最佳值。
1 回答
梵蒂岡之花
TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
首先,“我希望 lambda 值為正”這句話毫無(wú)意義;Box-Cox 變換是一種定義明確的數(shù)學(xué)運(yùn)算,它返回的內(nèi)容與我們可能想要或喜歡的內(nèi)容無(wú)關(guān)。
其次,根據(jù)文檔:
如果lmbda為 None,找到最大化對(duì)數(shù)似然函數(shù)的 lambda 并將其作為第二個(gè)輸出參數(shù)返回。
因此,也不是任何返回值列表——只返回一個(gè)(最佳)值。
第三,Box-Cox不是萬(wàn)能的;很可能數(shù)據(jù)的最終轉(zhuǎn)換不適合您的情況(正如您在這里暗示的那樣)。
現(xiàn)在,再次根據(jù)SciPy 文檔確實(shí)如此:
Box-Cox 變換由下式給出:
y?=?(x**lmbda?-?1)?/?lmbda,??for?lmbda?>?0 ????log(x),??????????????????for?lmbda?=?0
似乎lmbda永遠(yuǎn)不會(huì)期望它是負(fù)的;這是一個(gè)謎題,但它很可能只是特定 SciPy 文檔頁(yè)面中的一個(gè)錯(cuò)誤lmbda != 0,它本來(lái)應(yīng)該是lmbda > 0
添加回答
舉報(bào)
0/150
提交
取消
