Moin!
ich bin noch totaler Python Anfänger, und habe nun das folgende Problem:
Ich habe aus Messdaten einen S-förmigen Plot erhalten.
In der Theorie sollte hier jedoch ein linearer Graph vorliegen.
Nun möchte ich den Fehler von der S-Kurve zu einem linearen Verlauf in % beschreiben.
Mein Ansatz wäre hierzu, dass ich den linearen Verlauf erst mal durch den ersten und letzten Messpunkt darstelle.
Nun fehlt mir allerdings der Ansatz, wie ich den Fehler zwischen diesen berechne...
Wäre toll wenn mir da jemand auf die Sprünge helfen könnte!
Lineare Regression / Fehlerquadrate
Das ist denke ich nicht der richtige Ansatz, denn es gibt doch lineare Fittings, die den Fehler dann schon minimieren. Und ggf. liefern die schon gleich die Summe der Fehlerquadrate zurueck. Selbst wenn sie das nicht tun, ist das Problem "Abstand Punkt/Linie" ja recht einfach.
Allerdings ist mir unklar, was du da mit Prozenten willst. Das bedeutet ja immer ein Verhaeltnis - und was ist hier die zweite Groesse? Das einzige, das mir da einfallen wuerde, waere die Ausgangsdaten zu normalisieren (also zu erzwingen, dass die Kurve von 0..1 sowohl in Werte als auch Definitionsbereich geht), und dann kann man die Abweichung als Prozentzahl der Gesamtflaeche 1 sehen.
Allerdings ist mir unklar, was du da mit Prozenten willst. Das bedeutet ja immer ein Verhaeltnis - und was ist hier die zweite Groesse? Das einzige, das mir da einfallen wuerde, waere die Ausgangsdaten zu normalisieren (also zu erzwingen, dass die Kurve von 0..1 sowohl in Werte als auch Definitionsbereich geht), und dann kann man die Abweichung als Prozentzahl der Gesamtflaeche 1 sehen.
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Bei einem linearen Verlauf kannst du dich doch nach dem Korrelationskoeffizienten richten. Scipy kann dir eine lineare Regression nach der Methode der kleinsten Fehlerquadrate erstellen. Hier ein Beispiel:
Code: Alles auswählen
import numpy as np
from scipy.stats import linregress
from matplotlib import pyplot as plt
werte_x = np.linspace(0, 80.0 * np.pi, 1000)
werte_y = np.sin(werte_x)
regression = linregress(werte_x, werte_y)
print(f'Korrelationskoeffizient R:\t{regression.rvalue}')
werte_y_regression = regression.slope * werte_x + regression.intercept
plt.plot(werte_x, werte_y)
plt.plot(werte_x, werte_y_regression)
plt.show()
Sorry für die späte Antwort, war noch in ein anderes Problem vertieft.
Das hier hat auf jeden Fall sehr geholfen, danke dir!
Das hier hat auf jeden Fall sehr geholfen, danke dir!
einfachTobi hat geschrieben: ↑Donnerstag 13. Februar 2020, 17:20 Bei einem linearen Verlauf kannst du dich doch nach dem Korrelationskoeffizienten richten. Scipy kann dir eine lineare Regression nach der Methode der kleinsten Fehlerquadrate erstellen. Hier ein Beispiel:Code: Alles auswählen
import numpy as np from scipy.stats import linregress from matplotlib import pyplot as plt werte_x = np.linspace(0, 80.0 * np.pi, 1000) werte_y = np.sin(werte_x) regression = linregress(werte_x, werte_y) print(f'Korrelationskoeffizient R:\t{regression.rvalue}') werte_y_regression = regression.slope * werte_x + regression.intercept plt.plot(werte_x, werte_y) plt.plot(werte_x, werte_y_regression) plt.show()