我正在尝试使用下面提到的代码获取 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
提交
取消