Forum: PC-Programmierung Messwärte glätten und dann unzapplig anschauen


von Messwertglättung (Gast)


Lesenswert?

Hi, ich abe einen Datensatz mit Messwerten, die hin- und herzappeln und 
dadurch das ganze Graphenschaubild ziemlich unruhig aussieht. Dabei sind 
die Werte alle immer um eine Art Mittelpunkt.

Wie kann man die Werte so verarbeiten, dass man das ganze glättet? Gibt 
es da einen mathematischen Trick oder ähnliches?

von Horst (Gast)


Lesenswert?

Mittelwert bilden aka gleitendes Mittelwertfilter?

von Messwertglättung (Gast)


Lesenswert?

ist denn das enigermaßen genau mit dem Mittelwertfilter? Wie geht das 
genau? Ich habe eine Datei mit den Messwwerten, die geglättet werden 
müssen. Aber in Excel kann ich die nicht einfügen, weil die Datenmenge 
zu groß ist.

von Draco (Gast)


Lesenswert?

Ja willst du dir den Mittelwert in Excel bilden oder nicht? Oder was 
bildet dir dein "Graphenschaubild" ab?

von Horst (Gast)


Lesenswert?

Messwertglättung schrieb:
> ist denn das enigermaßen genau mit dem Mittelwertfilter?

Was ist denn das für eine blöde Frage? Ja, ein Mittelwertfilter 
berechnet genau den Mittelwert. Wer hätte das gedacht. Die Frage ist 
doch eher, was du für Daten hast und ob das dazu passt.

Und wenn Excel nicht geht, dann nimm eine Programmiersprache deiner 
Wahl. Einfach geht es zB mit Python oder Octave.

von Johannes T. (johannes_t)


Lesenswert?

Wenn du unbedingt mit Excel arbeiten willst, dann teile deine Datenmenge 
halt in mehrere kleine Dateien auf.
Wenn das auch nicht praktikabel ist, musst du eine Programmiersprache 
hernehmen. Kannst du eine?

... Horst war schneller ...

: Bearbeitet durch User
von T.U.Darmstadt (Gast)


Lesenswert?

Wenn Excel nicht reicht, dann wird es eng. Da gehem ja inzwischen 
Datenblätter in der Größe eines Gigabytes.

von Nop (Gast)


Lesenswert?

Unter Umständen wäre auch statt eines gleitenden Mittelwertes ein 
gleitender Median möglich. Nämlich dann, wenn Du Ausreißer (Spikes) 
weghaben willst.

Ein gleitender Mittelwert summiert die letzten N Werte auf und teilt sie 
durch N. Implementieren tut man das natürlich nicht so direkt, sondern 
man zieht vom aktuellen gleitenden Mittelwert den durch N geteilten 
ältesten Wert ab und addiert den durch N geteilten neuesten Wert drauf. 
Allerdings geht dann jeder Teilwert immer noch linear in den Mittelwert 
ein.

Der Effekt: Du hast eine Kneipe mit 99 Habenichtsen, und auf einmal 
verirrt sich ein Milliardär in diese Kneipe. Der gleitende Mittelwert 
ergibt dann, daß die Kneipe von Multimillionären besucht wird.

Der Median gibt Dir stattdessen den Wert, unterhalb/oberhalb dessen 50% 
der Werte liegen. Es ist dabei egal, wie WEIT einzelne Ausreißer gehen. 
Der Nachteil ist, daß man dann seine letzten N Werte sortieren muß, für 
embedded empfehle ich dabei Shellsort oder Heapsort.

In der besagten Kneipe wäre der gleitende Median nun das wahrscheinlich 
auch erwartete Ergebnis, daß der Mediangast ein Habenichts ist.

Fazit: Nimm ein Mittelwertfilter, um Rauschen wegzukriegen, und einen 
Medianfilter, um Spikes zu eliminieren.

von T.roll (Gast)


Lesenswert?

Messwertglättung schrieb:
> Aber in Excel kann ich die nicht einfügen, weil die Datenmenge
> zu groß ist.

Daten gehören (oh Wunder) in eine DATENBANK.

Also installier dir MariaDB (mit XAMPP kannst du damit üben) und kipp 
das Zeug da rein. Das hat mit größeren Datenmengen auch keine Probleme 
und du kannst direkt bei der Abfrage soviel rechnen wie du willst.

Johannes T. schrieb:
> Wenn du unbedingt mit Excel arbeiten willst, dann teile deine Datenmenge
> halt in mehrere kleine Dateien auf.

Klingt nach dem typischen Windows-Programmierer. Immer die schlechteste 
Lösung finden. :)

von Moe S. (loetsinn)


Angehängte Dateien:

Lesenswert?

Wo kommen denn die Daten her? Wenn du die in Excel einfügst, müssen die 
ja zuerst in irgendeiner Form vorliegen. Öffnest du z.B. eine CSV-Datei 
in Excel?
Also: Welche Dateiendung hat dein "Datensatz" aus dem OP?

In Python ist so eine Glättung mit Pandas einfach und flexibel machbar, 
ich habs angehängt. Pandas kann so ziemlich alles einlesen, was es an 
bekannten Datenformaten gibt. R kann das auch, aber damit kenne ich mich 
nicht aus.
Sollte die Quelldatei so groß sein, dass Python hier ins Stocken gerät, 
kann man die Berechnung auch noch in "Chunks" aufteilen. Aber dafür 
müsstest du etwas mehr Infos rauslassen.

von Peter M. (r2d3)


Lesenswert?

Beispielbilder für Messwertglättung in R mit ganz banaler 
Durchschnittsbildung:

http://www.thoralt.de/phpbb/viewtopic.php?f=7&t=819

von Sven B. (scummos)


Lesenswert?

Nop schrieb:
> Der Median gibt Dir stattdessen den Wert, unterhalb/oberhalb dessen 50%
> der Werte liegen. Es ist dabei egal, wie WEIT einzelne Ausreißer gehen.
> Der Nachteil ist, daß man dann seine letzten N Werte sortieren muß, für
> embedded empfehle ich dabei Shellsort oder Heapsort.

Der Nachteil ist vor allem, dass der Median mehr rauscht als der 
Mittelwert bei gleicher Reaktionszeit. Wenn es keinen guten Grund gibt 
den Median zu nehmen, ist der Mittelwert die bessere Wahl.

von T.U.Darmstadt (Gast)


Lesenswert?

Für diese rauschigen Werte braucht es aber ein etwas subtileres filter, 
als einfach den Mttelwert meine ich ...

von Sven B. (scummos)


Lesenswert?

Wenn nicht mehr Information da ist, bringt dir der beste Filter nix ... 
signifikant besser als Mittelwert kann der Filter nur dann sein, wenn 
das Rauschen bestimmte Eigenschaften hat, zum Beispiel bei bestimmten 
Frequenzen besonders stark ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.