Lok24
03.11.2016, 22:30

Editiert von
Lok24
03.11.2016, 22:34

Mathematikfrage (Statistik)

Hallo zusammen,

ich baue, wie beschrieben, gerade eine Bluetooth-Steuerung für den SBrick, mit Potentiometer.

Leider hat der Prozessor keine analogen Eingänge.
Also wird ein Kondensator entladen und dann über das Poti geladen, die Zeit hierfür ist ein Maß für die Stellung des Potis.

Leider ist das nicht ganz unabhängig von den Prozessen, die gerade im Hintergrund laufen.
So sieht das aus:

106
109
112
105
104
102
107
108
114
79
115
115
101
113
106
108
115
105
110
113
108
103
109

Die 79 und die 115 sind die Ausreisser.
Wie findet man die?
Man müsste das Ergebnis also "glätten".

Mein Excel kann das:

[image]



Immer x sammeln, den Mittelwert bilden und was zu weit abweicht eliminieren? oder wie?

Hätte ich doch mal besser aufgepasst, damals...


Grüße

Werner



sunset
03.11.2016, 22:54

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Das einfachste ist, immer den Durchschnitt der letzten x Werte zu nehmen. X dabei so groß machen, dass es zu keiner erheblichen Verzögerung kommt.



IngoAlthoefer
04.11.2016, 10:01

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Hallo Werner,

Kurzkommentar auf die Schnelle:

Lok24 hat geschrieben:

106
109
112
105
104
102
107
108
114
79
115
115
101
113
106
108
115
105
110
113
108
103
109

Die 79 und die 115 sind die Ausreisser.

115 ist kein Ausreißer, weil das Ganze in meinen Augen
kein Markow-Prozess ist. (Bei Markow hängt x(t+1) stochastisch
von x(t) ab. Das scheint aber bei Dir nicht der Fall zu sein.)
79 ist in der Tat ein Ausreißer; alles andere sehe ich als
unabhängig verteilt im Intervall zwischen 101 und 115.


Wie findet man die?

Helfen könnte Dir ein Cluster-Algorithmus. Da bekämst Du
eine Gruppe mit der 79 und eine andere Gruppe mit allen
anderen Werten.

Vielleicht beschreibst Du noch mal genauer, was Du wirklich
brauchst.

Ingo.


LEGO kennt kein Valsch (alte Klemmbaustein-Weisheit)


Lok24
04.11.2016, 10:11

Als Antwort auf den Beitrag von IngoAlthoefer

Editiert von
Lok24
04.11.2016, 10:14

Re: Mathematikfrage (Statistik)

Moin Ingo,

IngoAlthoefer hat geschrieben:

Vielleicht beschreibst Du noch mal genauer, was Du wirklich
brauchst.


Uhuh, ich dachte das hätte ich getan....

Die Zahlenwerte sind der am Regler eingestellte Wert und führen derzeit direkt zur Motordrehzahl.
D.h. die schwankt, obwohl der Regler im Test nicht bewegt wird.
Das soll sie aber nicht. Jitter.

Natürlich hilft der Mittelwert, aber der Sinn ist ja, dass man irgendwann am Regler dreht. Ich suche also eine Art "sauberen Mittelwert" der letzten x Werte. X wäre empirisch zu ermitteln.


Grüße

Werner



IngoAlthoefer
04.11.2016, 11:29

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Lieber Werner,

als Mathematiker finde ich Deine Frage spannend.

Ich halte es für möglich, dass Durchschnitt-Bilden und "Wegwerfen"
oder Einglätten von Ausreißern nicht die beste Lösung sein muss.

Allerdings kenne ich von Dir bisher nur eine Serie mit 24 Datenpunkten.
Könntest Du für mich und meine Studenten, die auch immer Herausforderungen
brauchen, mehr und längere Serien (z.B. mehrere 100er) zur Verfügung stellen?
Dann hätten wir bessere Chancen, Strukturen zu erkennen.

Viele Grüsse, Ingo.

PS. Dr. Stephan Kolassa, einer meiner früheren Schüler, ist ein
führender Kopf in der (wirtschaftlichen) Forecasting-Szene.


LEGO kennt kein Valsch (alte Klemmbaustein-Weisheit)


Lok24
04.11.2016, 11:35

Als Antwort auf den Beitrag von IngoAlthoefer

Re: Mathematikfrage (Statistik)

Hallo Ingo,

IngoAlthoefer hat geschrieben:

als Mathematiker finde ich Deine Frage spannend.

*seufz*

IngoAlthoefer hat geschrieben:
Ich halte es für möglich, dass Durchschnitt-Bilden und "Wegwerfen"
oder Einglätten von Ausreißern nicht die beste Lösung sein muss.


Ich such nicht die "beste", ich suche irgendeine. In der Statistik ist es doch normal, "Ausreißer" auszusieben, dachte ich, da muss es doch bewährte Regeln geben? Jeder Physiker mit einer Messreihe hat doch das Problem?
Wie löst der das?

IngoAlthoefer hat geschrieben:
Allerdings kenne ich von Dir bisher nur eine Serie mit 24 Datenpunkten.
Könntest Du für mich und meine Studenten, die auch immer Herausforderungen
brauchen, mehr und längere Serien (z.B. mehrere 100er) zur Verfügung stellen?
Dann hätten wir bessere Chancen, Strukturen zu erkennen.


Das will ich gerne versuchen, müsste den Output nur in eine Datei umleiten....
Ich tue was ich kann.

Grüße

Werner



IngoAlthoefer
04.11.2016, 11:46

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Hallo Werner,

Lok24 hat geschrieben:

IngoAlthoefer hat geschrieben:
Ich halte es für möglich, dass Durchschnitt-
Bilden und "Wegwerfen" oder Einglätten von Ausreißern nicht die beste
Lösung sein muss.

Ich such nicht die "beste", ich suche irgendeine. In der Statistik ist es doch
normal, "Ausreißer" auszusieben, dachte ich,

... bei den weniger guten Statistikern ...

Jeder Physiker mit einer Messreihe hat doch das Problem?
Wie löst der das?

08-15-Laboranten werfen in der Tag Ausreißer weg.
Gute Physiker allerdings versuchen, Ausreißer zu verstehen
oder sogar vorherzusagen.

Beispiel Primzahlen: Physikervermutung: Jede ungerade Zahl ist Primzahl.
1 passt
3 passt
5 passt
7 passt
9 Meßfehler
11 passt
13 passt
15 Meßfehler
17 passt
19 passt
Feierabend. "Meßfehlerquote: 2 aus 10", passt.

IngoAlthoefer hat geschrieben:
Könntest Du für mich und meine Studenten, die auch
immer Herausforderungen brauchen, mehr und längere Serien (z.B.
mehrere 100er) zur Verfügung stellen?

Das will ich gerne versuchen, müsste den Output nur in eine Datei umleiten....
Ich tue was ich kann.

Dank im Voraus,

Ingo.


LEGO kennt kein Valsch (alte Klemmbaustein-Weisheit)


JuL
03.01.2017, 01:35

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Saluton!

Ich weiß nicht, ob Du Dein Problem inzwischen gelöst hast, aber …
Lok24 hat geschrieben:

ich baue, wie beschrieben, gerade eine Bluetooth-Steuerung für den SBrick, mit Potentiometer.
Leider hat der Prozessor keine analogen Eingänge.
Also wird ein Kondensator entladen und dann über das Poti geladen, die Zeit hierfür ist ein Maß für die Stellung des Potis.
Leider ist das nicht ganz unabhängig von den Prozessen, die gerade im Hintergrund laufen.
[Daten]
Die 79 und die 115 sind die Ausreisser.
Wie findet man die?
Man müsste das Ergebnis also "glätten".
Immer x sammeln, den Mittelwert bilden und was zu weit abweicht eliminieren? oder wie?

a) Würde ich schon sagen. Eine Möglichkeit wäre das gestutzte Mittel.
(Kannte ich bis gerade übrinx auch nicht, gesucht hatte ich nach „gleitender Durchschnitt
Ausreißer“.)

b) So, wie Du das beschreibst, könnte a) nur ein Workaround für das eigentliche Problem
sein: Du sagst, daß die Werte von der Prozessorbelastung abhängen. Das hört sich für
mich so an, als ob Dein Programm „pollt“, d.h. quasi zu Fuß & jedes Mal, wenn es dran
ist, den Wert einliest. Besser müßte eine timer-/interruptgesteuerte Routine sein, die
fest & definitiv alle x Millisekunden (oder so) den Eingang abfragt. Wie man so ein
Echtzeitding auf dem Pi macht, davon habe ich allerdings leider keine Ahnung.

Ad LEGO!
JuL


„Altgrau“ facere necesse est.
Wer Rechtschreibfehler findet, darf sie mir nennen. Ich lerne nämlich gerne dazu (ich bin allerdings „Altschreiber“).


Der_Architekt
25.01.2017, 10:49
@IngoAlthoefer

Re: Mathematikfrage (Statistik)

Die 1 ist KEINE Primzahl!


"Je mehr ich von den Menschen sehe, umso lieber habe ich meine Hunde."
Der Alte Fritz


AdmiralStein
28.01.2017, 09:35

Als Antwort auf den Beitrag von Lok24

Re: Mathematikfrage (Statistik)

Hallo Werner,

ich würde das ganze weniger als eine Mathematik-Frage sondern eher als eine Ingenieurs-Frage betrachten und mir dann einen Algorithmus basteln, der das Ziel näherungsweise erreicht.

Also was willst du erreichen? So wie ich es verstanden habe, sollen die Messwerte vom Poti um Abweichler bereinigt werden, so dass die Messwerte möglichst gleich bleiben, wenn man nicht am Poti dreht.

Ein gleitender Mittelwert ist da schon mal ein guter Ansatz, also in jedem Schleifendurchlauf einen Mittelwert über die letzten n Werte (z. B. "Breite" n=10) bilden. Nachteile dieser Methode sind, dass krasse Ausreißer den Mittelwert doch um ein paar Prozent verschieben können und dass eine Änderung am Poti durch den Benutzer erst mit Verzögerung wahrgenommen wird. Na ja, die Änderung kann schon schnell wahrgenommen werden, der Messwert-Mittelwert pendelt sich allerdings erst nach n Schleifendurchläufen auf den neuen Zielwert ein - je nach Abfrageintervall (z. B. 1 Messwert pro Sekunde) kann dem Benutzer viel das zu lange dauern.

Aufgrund deiner Beispiel-Messwert-Reihe gehe ich mal davon aus, dass es sich mit großer Wahrscheinlichkeit immer um einzelne Ausreißer handelt. Wenn zwei Ausreißer nacheinander auftreten hat, sei das ein Indikator dafür, dass am Poti gedreht wurde. Um die einzelnen Ausreißer zu eliminieren und auf Änderungen am Poti mit geringer Nachlaufzeit zu reagieren, würde ich daher einen gleitenden Mittelwert mit variabler Breite anwenden. Man muss detektieren, ob am Regler gedreht wurde, und dann die Breite des gleitenden Mittelwerts herabsetzen. In der Folge wird zur Stabilisierung des Mittelwerts die Breite schrittweise wieder heraufgesetzt:

n=1
Schleifenbeginn
Bilde den Mittelwert aus den letzten n Werten.
Prüfe, ob der neue Messwert mehr als XX vom alten Mittelwert abweicht.
Falls nein (es handelt sich nicht um einen Ausreißer):
-Setze n=n+1, sofern n<10 ist.
-Beginne die Schleife von vorne.
Falls ja (Ausreißer, Prüfung ob am Regler gedreht wurde):
-Warte auf den nächsten neuen Messwert (bilde aber keinen neuen Mittelwert).
-Prüfe, ob der neue Messwert wieder mehr als XX vom alten Mittelwert abweicht.
-Falls ja (2 Ausreißer hintereinander -> es wurde vermutlich am Regler gedreht):
--Setze n=2.
--Beginne die Schleife von vorne.
-Falls nein (es handelt sich nicht um einen Ausreißer):
--Setze n=n+1, sofern n<10 ist.
--Beginne die Schleife von vorne.
Schleifenende

XX ist eine Variable, die du durch Ausprobieren selbst finden musst. Das kann eine Prozentangabe sein (z. B. 20 %) oder eine feste Abweichung in Messeinheiten (z. B. 20). Auch die maximale Breite des gleitenden Mittelwerts (im obigen Beispiel 10) kannst du variieren.



Lok24
29.01.2017, 09:43

Als Antwort auf den Beitrag von AdmiralStein

Re: Mathematikfrage (Statistik)

Hallo Matthias,

vielen Dank für die Ausführliche Antwort.

Das hatte ich gemacht ist aber eben sehr träge.
Ich habe jetzt einen A/D Wandler hier, der auf den Einbau wartet.

Der Raspberry löst das über das Laden eines C, das ist eher Murks.
Ich hatte das hier such unter "Fahrpult SBrick" gepostet.

Grüße

Werner



Gesamter Thread: