Daten auswertung mit Python ideen gesucht?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Also ich hab mal ein bisschen rumprobiert.

Bild zum Beitrag

Der erste rote Strich ist das Maximum. Dann geht es weiter mit jeweils Grün für Start und Rot für Ende.

Der Code ist hier: https://pastebin.com/yu0kPqu8

Ich habe jetzt in Jupyter Notebook einfach mal drauf losgetippt und mir die Zwischenergebnisse immer mal angesehen. Also es dürfte klar sein, dass man noch einiges verkürzen und verbessern kann.

Zudem kann es sein dass man ein paar Parameter dynamisch anpassen müsste. Vielleicht abhängig von der Anzahl der Samples...

 - (Computer, programmieren, Python)
Kreasteve  07.12.2019, 23:51

Es ist vielleicht nicht besonders mathematisch, aber für die von dir zur Verfügung gestellten Daten komme ich auf gute Werte.

Klar ist mir auch, dass man je nach Kurvenverlauf noch die ein oder andere Abwandlung entwickeln müsste....

Ich hoffe dir hilft es erstmal etwas weiter.

Andererseits dachte ich an Kreuzkorellation, aber ich denke das wird auch nicht ganz einfach, wegen den unterschiedlichen Datensätzen...

0
chemick 
Fragesteller
 07.12.2019, 23:58

ja macht sinn soweit. Vielen Dank ich schau mal morgen Abend nochmal genauer rein bin ehrlich gesagt recht müde. Vielen Dank! Sieht aufjedenfall hilfreich aus. dass was du da mit r machst habe ich mir effektiv auch überlegt aber keinen ordentlichen Weg gefunden wie ich dass machen soll.

1
chemick 
Fragesteller
 10.12.2019, 18:01
@Kreasteve

Nicht wirklich. Ich meine es klappt für ein paar datensätze, aber bei weitem nicht für alle. Deshalb habe ich nun angefangen von Hand abzulesen, da mein Betreuer schon einwenig ungeduldig wurde. Ich denke wenn ich nochmal zeit habe schaue ich nach einem anderem ansatz. ggf. Sogar einfach mit bildanalyse und nicht mit grafik analyse? Mal schauen. Nun muss ich erstmal ein paar ergebnisse liefern damit wir weiter kommen. Danke nochmal für dein Hilfe und deine Zeit

0
Kreasteve  10.12.2019, 20:29
@chemick

Ok, klar bestimmt ist es auf die schnelle von Hand effektiver. Kannst ja auch mal ein paar krass unterschiedliche Datensätze liefern. Vielleicht kommt mir/uns noch die zündende Idee...

0

Hey danke erstmal für deine Zeit.

ich habe in rot nochmal eingezeichnet welche werte ich bestimmen möchte. Blau/Grüne sind die werte die ich aktuell bestimme mit amax und amin. Ledilich der Grüne ist gewollt die beiden blauen sind sozusagen versetzt. D.h. ich denke ich komme hier nicht mit amin und amax weiter.

https://pastebin.com/eD0gUsiP hier der datensatz

Bild zum Beitrag

 - (Computer, programmieren, Python)
chemick 
Fragesteller
 07.12.2019, 21:54

@Kreasteve Edit: wusste nicht ob ich personen makieren kann

0
Kreasteve  07.12.2019, 22:00
@chemick

Passt schon, nein das geht leider nicht.

Zum Thema: ich versuchs mal, sieht aber nicht so einfach aus.

Wie ähnlich sind die anderen Daten? Vielleicht könnte man den letzten Punkt wenigstens fix setzen. Z.B. x_max+5000...

1
chemick 
Fragesteller
 07.12.2019, 22:03
@Kreasteve

Leider kann man keine Punkte fix setzen. Es handelt sich quasi um Halbwertszeiten welche varrieren, je nach Experiment Konstellationen um Faktor 100.

0
chemick 
Fragesteller
 07.12.2019, 22:04
@Kreasteve

hinzu kommt dass das 2. maxima nicht immer vorhanden ist. oder es erst auf null absinkt und dann nochmal steigt bevor es wieder auf null absinkt.

0

Die Minima und Maxima erhält man, wenn man die erste Ableitung 0 setzt. Also müsstest du in deinen Daten heraus finden wann das Vorzeichen gewechselt wird.

Aber ich denke es ist besser wenn du das maximum mit max() suchst. In einer Liste kannst du dann mit a.index(a.max()) den x Wert ermitteln. Hast du eine Liste in der x dem Index entspricht? Oder stehen die x Werte mit im array/dict?

Vielleicht kannst du ja mal einen Datensatz auf pastebin.com teilen und hier verlinken... Oder gar dein ganzes Programm mit einer mit Daten gefüllten variable.

Nur frage ich mich gerade welche zwei weiteren Hügel du finden willst. In deinen Diagrammen sehe ich keine. Was meinst du damit?

chemick 
Fragesteller
 07.12.2019, 21:49

Hey danke für deine Zeit habe unten nochmal eine Antwort gemacht um nochmal bilder zu teilen dort habe ich auch einen pastebin erstellt und effektiv auf deine Antwort reagiert.

1
Kreasteve  07.12.2019, 21:53
@chemick

Mhm... Ich sehe keine Antwort von Dir...

Sorry jetzt, ja

1

Was für ein Problem siehst Du beim finden des globalen Maximums? Das sieht doch ganz gut aus.
Das zweite lokale Maximum ist schwierig zu finden. Üblicherweise führen numerische ableitungen zu starkem Rauschen und jedes Gezappel wird dabei noch schlimmer. Ich kenne als Lösung, eine Glättungsfunktion drüber zu legen. Müsste es irgendwo im numpy oder scipy auch geben, ist aber m.e. auch nicht schwer zu programmieren.

chemick 
Fragesteller
 07.12.2019, 21:53

Hey dir auch erstmal vielen Dank für deine Zeit.

Ja Das erste maximum ist auch echt nicht dass Problem, dies geht gut mit (array.amax). Das treffe ich bei meinen Daten schon recht exakt. Es geht mir nun wirklich darum das ich das 2 maximum (bzw. Plateau) treffe. Habe in einer Seperaten Antwort nochmal genau makiert welche werte ich effektiv rausziehen muss.

0
chemick 
Fragesteller
 07.12.2019, 22:13
@Martinmuc

Naja gut wenn ich nun meine Kurve gegelättet und abgeleitet habe wie komme ich dann an meine Gewollten Punkte? Ich meine dann einfach via for schleife abfragen ib der punkt nah genug an null dran ist würde mir nun einfallen oder fällt dir was besseres ein?

0
Martinmuc  07.12.2019, 22:40
@chemick

Kannst Du mal die neue Kurve und die neue ableitung hier plotten?

0
Martinmuc  07.12.2019, 22:55
@Martinmuc

Noch eine andere Vorgehensweise: Du findest den Hauptpeak und dann das "Plateau" am Ende.
Relevant ist der Bereich dazwischen, dort suchst Du nach ableitung=0 (oder klein genug, denn möglicherweise macht Di die Glättung aus den schwachen Maxima Terrassenpunkte, da fehlt mir jetzt das Gefühl)

0
 - (Computer, programmieren, Python)
Martinmuc  07.12.2019, 22:58

Ja super, passt doch! Bei 4.5 oder etwas drüber ist die ableitung 0. Da ist der zweite Peak.

0
chemick 
Fragesteller
 07.12.2019, 23:01
@Martinmuc

ja gut das sehe ich auch aber ich will dass eigentlich nicht mehr ablesen ^^
Ich schau mal wie sehr das ganze null ist und ob ich dass über ein if rausbekomme

0
chemick 
Fragesteller
 07.12.2019, 23:22
@Martinmuc

Also funktioniert nicht so wirklich tbh. ^^

0
Martinmuc  08.12.2019, 22:27
@chemick

Ich habe schon verstanden, dass das automatisch bestimmt werden soll ;-)
Wie ist das denn mit den Nulldurchgängen der ableitung? Du hast natürlich zwei, denn vor dem Maximum kommt nochmal ein schwache ausgeprägtes Minimum.
Die Nulldurchgänge können doch auch programmtechnisch bestimmt werden. Oder zappelt das zu sehr um die Null rum? Zeige doch mal den ausschnitt von x~4.5 bis 5

0
chemick 
Fragesteller
 09.12.2019, 23:04
@Martinmuc

Hey Das habe ich versucht, dass zappelt leider viel zu sehr rum. Ich müsste dafür den bereich sehr groß setzen. Irgendwie doof. Naja dass was der Kollege weiter oben vorgeschlagen hat ist auch nur eine "Semi" Autmatisierte Lösung. Ich denke der Ansatz über die Null durchgänge ist am besten. Aber da mein Betreuer schon einwenig ungeduldig wurde habe ich angefangen die Werte von hand einzulesen...

0