scipy.stats.boxcox

scipy.stats.boxcox   ValueError: Data must be positive.

在使用stats.boxcox的时候,碰到下面的情况

stats.boxcox(data[col].dropna()+1)

其中:data为DataFrame类型,col为列名,

+1就比较蒙了。

官方文档说明:

The Box-Cox transform is given by:

y = (x**lmbda - 1) / lmbda,  for lmbda > 0
    log(x),                  for lmbda = 0

boxcox requires the input data to be positive. Sometimes a Box-Cox transformation provides a shift parameter to achieve this; boxcox does not. Such a shift parameter is equivalent to adding a positive constant to x before calling boxcox.

boxcox要求输入的数据是正值,这里的输入值一般是经过预处理后的,有一个固定的范围,如果存在非正值,则需要加上一个常数,保证输入值为正值。

Box-Cox变换可以使模型满足线性性、独立性、方差齐性以及正态性的同时,又不丢失信息。

一些结论:

1、使用Box-Cox变换后的数据得到的回归模型优于变换前的模型,变换可以使模型的解释力度等性能更加优良

2、使用Box-Cox变换后,残差可以更好的满足正态性、独立性等假设前提,降低了伪回归的概率。

3、使用Box-Cox变换族一般都可以保证将数据进行成功的正太变换,但在二分量或较少水平的等级变量的情况下,不能成功地进行变换,此时,我们可以考虑使用广义线性变换,如LOGUSTICS模型、Johnson转换等。

4、进行数据变换并不一定会达到我们预定的目标,没有一个数学原理保证所做的数据变换就一定在各个方面对原始数据有所改善,更常见的是,为一个目的所做的变换可能仅仅使得原始数据的一个或几个方面得到改善。Box-Cox变换的一个很大的优势在于对选择变换的问题给出了一个系统化的处理方法,将寻找变换的问题转化为一个估计参数lamda的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值