RuntimeWarning:在log(stats.boxcox)中遇到除以零

问题描述 投票:3回答:1

当我试图运行RuntimeWarning: divide by zero encountered in log时,我得到stats.boxcox(list)错误。

该列表不包含零值。我已经提到了其他一些帖子,说我们可以使用np.errstate()忽略错误。

但是,就我而言,我不认为这是正确的,因为stats.boxcox()的价值回报毫无意义(所有不变,见下文)。

array([ 0.11472901,  0.11472901,  0.11472901,  0.11472901,  0.11472901,
    0.11472901,  0.11472901,  0.11472901,  0.11472901,  0.11472901,
    0.11472901,  0.11472901,  0.11472901,  0.11472901,  0.11472901,
    0.11472901,  0.11472901,  ... ... ]

错误的详细信息如下:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/stats/morestats.py:591: RuntimeWarning: divide by zero encountered in log
llf -= N / 2.0 * np.log(np.sum((y - y_mean)**2. / N, axis=0))
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/optimize/optimize.py:2063: RuntimeWarning: invalid value encountered in double_scalars
w = xb - ((xb - xc) * tmp2 - (xb - xa) * tmp1) / denomenter code here
python scipy divide-by-zero
1个回答
0
投票

我跟着这个Github线程的建议并为我工作:

https://github.com/scipy/scipy/issues/6873

建议是使用stats.boxcox_normmax(array)来获得理想的lambda,然后进行boxcox转换。

boxcox_lambda = boxcox_normmax(array, brack=(-1.9, 2.0),  method='mle')
transformed_array = boxcox(array, boxcox_lambda)
© www.soinside.com 2019 - 2024. All rights reserved.