我正在尝试对这个一维数组进行去趋势处理:
array([13.64352283, 13.48914862, 13.00767009, 13.35416524, 13.60143818, 13.40895156, 13.48349417, 13.65703125, 13.4959721 , 13.28891263, 12.97999066, 13.01112397, 12.79519705, 13.32030445, 13.19949068, 12.88691975, 13.32079707])
函数运行时没有错误,但数值范围从大约[12,14]变为大约[-0.4,0.4]。我认为这是由于数值的标准差较小导致的。有什么办法可以解决这个问题,以便我可以将原始数据和去趋势后的数据一起绘制在一个图表上?归一化不是一个选项。
请帮助我。
回答:
实际上,detrend 函数正是这么做的:它减去输入数据的最小二乘线性逼近的值。
下面是一个图示来说明发生了什么:
from scipy import signalimport numpy as npimport matplotlib.pyplot as plty = np.array([13.64352283, 13.48914862, 13.00767009, 13.35416524, 13.60143818, 13.40895156, 13.48349417, 13.65703125, 13.4959721, 13.28891263, 12.97999066, 13.01112397, 12.79519705, 13.32030445, 13.19949068, 12.88691975, 13.32079707])plt.plot(y, color='dodgerblue')plt.plot(signal.detrend(y), color='limegreen')plt.plot(y - signal.detrend(y), color='crimson')plt.show()
图中的红色线条是从原始数据中减去的线性逼近值,用以获得 detrend(y)
。