【问题标题】:Difference between scipy.special.boxcox and scipy.stats.boxcoxscipy.special.boxcox 和 scipy.stats.boxcox 之间的区别
【发布时间】:2026-02-23 23:40:02
【问题描述】:

在我的程序中,我正在对我的数据应用 box-cox 变换,并且我有兴趣通过我的实验在某个步骤反转 box-cox 变换。但是我注意到 boxcox 有两种变体:

我了解到第一个选项具有反转 box cox 变换 here 的功能。

但是我只想知道为什么在 scipy.special 中 lambda 参数不能是 None 而在 scipy.stats 中可能是。在我的代码中,我实际上使用的是scipy.stats,而Lamda 是None。现在,如果我想恢复使用 scipy.special 以使用其反向功能,我应该将 lamda 设置为什么?

这是我当前的代码:

            elif self.output_box:
                y_train, self.y_train_lambda_ = boxcox(y_train)
                y_test, self.y_test_lambda_ = boxcox(y_test)

【问题讨论】:

    标签: python scipy transformation scaling


    【解决方案1】:

    它们都使用相同的公式进行转换,因此似乎唯一的区别是使用 scipy.stats 您可以计算数据的最佳 lambda。如果您将 scipy.stats.boxcox 与 lambda=None 一起使用,它会返回两个参数:转换后的数组和最大化对数似然函数的 lambda(如果 alpha 也不是 None 它返回 lambda 的置信区间)。因此,这就是您必须与逆变换一起使用的 lambda。

    【讨论】: