Servus,
Wenn du die mathematische Struktur der Kurve kennst (bis auf ein paar konstanten), dann könntest du
quick and dirty z.B. scipy.optimize.curve_fit nutzt und die Fehler entsprechend anpasst (sigma)
vgl:
https://docs.scipy.org/doc/scipy/refere ... e_fit.html
Ein Beispiel wäre:
Code: Alles auswählen
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1, 100, 100)
f = np.vectorize(lambda x: 2.2 / (x ** 0.1) + 0.3)
y = f(x)
y[1:98] += np.random.normal(size=[97], scale=0.01) + 0.1
# die + 0.1 setzt alle daten bis auf den ersten und letzten
# nach oben um den unterschied in der Gewichtung sichtbar zu machen
c1, pcov = curve_fit(lambda x, c, a: a / (x ** 0.1) + c, x, y)
all_data = np.vectorize(lambda x: c1[1] / (x ** 0.1) + c1[0])
sigmas = np.zeros([100])
sigmas.fill(100)
sigmas[0] = 0.000001
sigmas[-1] = 0.000001
c2, pcov = curve_fit(lambda x, c, a: a / (x ** 0.1) + c, x, y, sigma=sigmas)
not_equal = np.vectorize(lambda x: c2[1] / (x ** 0.1) + c2[0])
plt.plot(x, y, label="data")
plt.plot(x, all_data(x), label="all_data_equal")
plt.plot(x, not_equal(x), label="not_equal")
plt.legend()
plt.show()
Falls du das nicht kannst bleibt die Frage ob du etwas über die Noise aussagen kannst. Falls das auch nichts ist weiß ich leider nicht weiter.
Bzw. weiß ich dann nicht ob das überhaupt möglich ist oder ich verstehe dein Problem nicht ganz