我正在嘗試使用下面提到的代碼獲取 lambda 值,但是在進行逆變換時,由于 lambda 的負值,我們得到的轉換值太高。如何獲得正 lambda 值或倍數? 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 值列表來選擇最佳值。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
首先,“我希望 lambda 值為正”這句話毫無意義;Box-Cox 變換是一種定義明確的數學運算,它返回的內容與我們可能想要或喜歡的內容無關。
其次,根據文檔:
如果lmbda為 None,找到最大化對數似然函數的 lambda 并將其作為第二個輸出參數返回。
因此,也不是任何返回值列表——只返回一個(最佳)值。
第三,Box-Cox不是萬能的;很可能數據的最終轉換不適合您的情況(正如您在這里暗示的那樣)。
現在,再次根據SciPy 文檔確實如此:
Box-Cox 變換由下式給出:
y?=?(x**lmbda?-?1)?/?lmbda,??for?lmbda?>?0 ????log(x),??????????????????for?lmbda?=?0
似乎lmbda
永遠不會期望它是負的;這是一個謎題,但它很可能只是特定 SciPy 文檔頁面中的一個錯誤lmbda != 0
,它本來應該是lmbda > 0
添加回答
舉報
0/150
提交
取消