我目前使用Python来比较两个不同的数据集(xDAT和yDAT),这些数据集由在一定时间内采集的240个距离度量值组成。但是,数据集xDAT被非线性数量抵消。这个非线性的数量等于一个时间依赖的动态媒体的宽度,我称之为level-A。更具体地说,xDAT从原点到A级的顶部进行度量,而yDAT则从原点到A级的底部进行度量。见以下图:Python中的曲线拟合和参数估计
为了既曲线比较,我必须拳头应用校正到XDAT,以弥补其偏移量(水平-A的宽度)。
到目前为止,我玩过不同程度的numpy.polyfit。即:
coefs = np.polynomial.polynomial.polyfit(xDAT, yDAT, 5)
polyEST=[]
for i in range(0,len(x-DAT)):
polyEST.append(coefs[0] + coefs[1]*xDAT[i] + coefs[2]*pow(xDAT[i],2) + coefs[3]*pow(xDAT[i],3) + coefs[4]*pow(xDAT[i],4) + coefs[5]*pow(xDAT[i],5))
使用这种方法的问题是,当我绘制polyEST(这是XDAT的修正版本),剧情依然不匹配yDAT的趋势并保持偏移。请看下图,其中XDAT =蓝色,纠正XDAT =红色,yDAT =绿色:
理想的情况下,修正XDAT仍应保持高于yDAT喧闹,但一般振荡的趋势曲线应该匹配。
我将非常感谢帮助实施不同的曲线拟合和参数估计技术,以校正由A级引起的非线性偏移。
谢谢。
我不认为你很清楚你想要做什么。你称'polyfit'就好像'xDAT'和'yDAT'是一组样本点的x和y坐标,然而你的问题描述和图表表明它们并不相关。 – Stelios
按照你的描述,偏移是一个常数。使用度数> 0的多项式看起来是错误的方法。另外,从你的绘图xDat和yDat看起来并不是“排队” - 也就是说xDat显然不是yDat +/-一些常数 - 它似乎也是“翻转”或相移的。 –
谢谢Stelios。在介绍中,我提到xDAT和yDAT都是240点的数据集。每个点对应于特定时间的测量...两个数据集均以相同的时间增量进行测量。我使用polyfit来派生描述两个数据集之间差异的多项式,然后使用该多项式来校正xDAT中看到的偏移量。我相信有一种更合适的方法来纠正在xDAT中观察到的A级偏移量,而不是np.polyfit。 – LexStJ