J'utilise actuellement Python pour comparer deux ensembles de données différents (xDAT et yDAT) qui sont composés de 240 mesures de distance prises sur une certaine durée. Cependant, l'ensemble de données xDAT est compensé par une quantité non linéaire. Cette quantité non linéaire est égale à la largeur d'un milieu dynamique dépendant du temps, que j'appelle le niveau-A. Plus précisément, xDAT mesure de l'origine au sommet de niveau-A, tandis que yDAT mesure de l'origine au bas du niveau-A. Voir le diagramme suivant:ajustement de courbe et estimation de paramètre en Python
Afin de comparer les deux courbes, je dois fist appliquer une correction à XDAT pour compenser son décalage (la largeur du niveau A). Pour l'instant, j'ai joué avec différents degrés de numpy.polyfit. I.e.:
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))
Le problème avec l'utilisation de cette méthode est que lorsque je conspire Polyest (qui est la version corrigée de XDAT), l'intrigue ne correspond toujours pas la tendance de yDAT et reste compensée. S'il vous plaît voir la figure ci-dessous, où XDAT = bleu, corrigé XDAT = rouge, et yDAT = vert:
Idéalement, le XDAT corrigé devrait rester encore plus bruyant que le yDAT, mais l'oscillation générale et tendance les courbes devraient correspondre.
J'apprécierais grandement de mettre en œuvre une technique différente d'ajustement de courbe et d'estimation de paramètre afin de corriger le décalage non linéaire causé par le niveau-A.
Merci.
Je ne pense pas que ce que vous essayez de faire soit clair. Vous appelez 'polyfit' comme si' xDAT' et 'yDAT' sont les coordonnées' x'- et 'y'- d'un seul ensemble de points d'échantillonnage, cependant, la description et l'intrigue de votre problème suggèrent qu'ils ne sont pas liés en tant que tels. – Stelios
Par votre description le décalage est par une constante. L'utilisation d'un polynôme de degré> 0 semble être la mauvaise approche. De plus, à partir de votre intrigue, xDat et yDat ne semblent pas alignés, c'est-à-dire que xDat n'est clairement pas yDat +/- une constante, il semble également être "retourné" ou déphasé. –
Merci Stelios. Dans l'introduction, j'ai mentionné que xDAT et yDAT sont des ensembles de données de 240 points. Chacun de ces points correspond à une mesure à un moment précis ... les deux ensembles de données ont été mesurés à intervalles de temps égaux. J'ai utilisé polyfit pour dériver un polynôme qui décrit la différence entre les deux ensembles de données, et j'ai ensuite utilisé ce polynôme pour corriger le décalage observé dans xDAT.Je suis convaincu qu'il existe une méthode plus appropriée pour corriger le décalage de niveau A observé dans xDAT plutôt que np.polyfit. – LexStJ