为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 box-cox 变换中获取多个 lambda 值?

如何在 box-cox 变换中获取多个 lambda 值?

largeQ 2023-04-18 15:21:41
我正在尝试使用下面提到的代码获取 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


查看完整回答
反对 回复 2023-04-18
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信