为什么scipy.signal.detrend
对同一数据的结果略有不同?此外,它似乎给出不同的结果取决于是否包含关键字“线性”(默认情况下,趋势是线性的)
编辑:我知道不准确性非常小,并且由于浮点运算会出现一些不准确的情况。奇怪的是,对于相同的数据+函数,结果不同。
from scipy.signal import detrend as scipy_detrend
from pylab import *
x = arange(10)
y = arange(10, dtype='int64')
subplot(211)
plot(x, scipy_detrend(y, type="linear"), label='scipy detrend linear')
plot(x, scipy_detrend(y), label='scipy detrend')
plot(x, detrend(y, "linear"), label='pylab detrend')
subplot(212)
plot(x, scipy_detrend(y, type="linear"), label='scipy detrend linear')
plot(x, scipy_detrend(y), label='scipy detrend')
plot(x, detrend(y, "linear"), label='pylab detrend')
show()
注意:红线为pylab.detrend
,蓝线为scipy.signal.detrend with linear keyword
,绿色为scipy.signal.detrend
。
答案 0 :(得分:4)
您的数据是范围(10),并且您的去趋势结果是1e-15的顺序,这意味着差异是由于浮点精度。 (您的去趋势结果比您的输入小15个数量级)
答案 1 :(得分:4)
浮点舍入错误。在一般情况下,浮点错误不一定在相同CPU,相同数据和相同代码的运行之间可重现,因为它可能受程序外部事件的影响(除非特别小心):
这似乎是一个FAQ