PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Mathe] Suche Methode/Algorithmus für dieses Problem


wry
2009-04-03, 13:14:23
Hi,

ich habe folgendes Problem. Ich habe z.b. ein Ereignis, nehmen wir als Beispiel Läufer, die eine Strecke ablaufen und die Zeit wird gestoppt.
Ich stoppe also die Zeit die, die Läufer für die Strecke benötigen und behalte diese Daten (siehe Bild oben, die roten Punkte Stellen die Zeiten dar).

Mein Ziel: ich möchte aus den gewonnenen Daten eine Zufallsvariable x erstellen, die mir Werte ausspuckt, die meiner beobachteten Datenverteilung folgt.

Gibt es dafür eine Methode?

http://www.abload.de/img/ziel23adm.jpg

Senior Sanchez
2009-04-03, 13:21:21
Jein.

Man kann testen, ob diese Daten zufallsverteilt sind.

Dazu ordnet man sie zuerst und plottet sie in einem Histogramm.
Als nächstes schätzt man die Verteilungsfunktion ab.

Diese nutzt man nun um einen so genannten Quantile-Quantile-Plot durchzuführen, wobei die Werte dort durch den Koordinatenursprung und mit einem Anstieg von 1 verlaufen müssen.

In der wikipedia steht näheres dazu, aber wie gesagt: das funktioniert nur, wenn es wirklich zufallsverteilt ist.

Eine andere Variante ist auf Basis der Linearkongruenzmethode. Du plottest zuerst deine Messwerte in einem Diagramm. Mithilfe eines Zufallszahlengenerators kannst du nun eine Zahl erzeugen und die auf dein Diagramm abbilden und dort den entsprechenden Zufallswert ablesen.

pest
2009-04-03, 13:28:53
das ist ne Normalverteilung, logischerweise
zumindest 100%ig sicher wenn die Anzahl der Läufer gegen unendlich geht :D

wry
2009-04-03, 13:39:50
Danke erstmal! Werd mich mal in der Wiki umsehn.

Ich hatte da allerdings gerade selber noch eine Idee, wenn ich z.b. die erhobenen Läuferzeiten (Daten) in ein Array speichere und dann per Zufallsvariable ein Feld anspreche, sollte das nicht auf das Selbe rauslaufen, sprich mein Ziel erfüllen?

Die Daten in meinem Array folgen der Verteilung und die Zufallsvariable wählt alle Felder aus dem Array mit gleicher Wahrscheinlichkeit aus. Oder mache ich hier einen Denkfehler?

Edit:
Hmm, meine Idee scheint ähnlich der von Senior Sanchez genannten Linearkongruenzmethode zu sein, wenn ich das richtig verstehe.

Edit 2:
@pest, danke für den Hinweis. Aber ich möchte es gerne so haben, dass die Methode auch Funktioniert, wenn keine Normalverteilung in den beobachteten Daten vorliegt.

pest
2009-04-03, 13:44:51
PRNGs sind gleichverteilt

du willst außerdem (glaube ich) nicht wissen, welche verteilung das ist

was du willst ist die werte dazwischen interpolieren, oder?

Spasstiger
2009-04-03, 13:45:38
das ist ne Normalverteilung, logischerweise
Eine echte Normalverteilung kann man ziemlich sicher ausschließen.
Denn dann müsste eine relativ kurze Zeit genauso einfach erreichbar sein wie eine relativ lange Zeit. Das widerspricht aber der Physik. Für eine Zeit gegen null müsste die Geschwindigkeit gegen unendlich gehen. Eine Zeit gegen unendlich ist dagegen problemlos machbar, dazu muss der Läufer sich nur im Schneckentempo vorwärts bewegen.
Man könnte höchstens das Durchschnittstempo als normalverteilt annehmen.

Die Verteilung der Zeiten entspricht dann einer inversen Normalverteilung (http://de.wikipedia.org/wiki/Inverse_Normalverteilung).
Diese könnte man dann über die Bestimmung des Mittelwerts und der Standardabweichung aus der Stichprobe abschätzen.
Bestmöglich ist das Ergebniss dann aber nicht.

wry
2009-04-03, 13:52:27
@pest
Ich weiß nicht ob ich die Verteilung wissen muss. Was ich möchte ist nur eine Zufallsvariable die Zahlen ausspuckt die der Verteilung der beobachteten Daten folgt.

Mit der gesuchten Zufallszahl möchte ich dann quasi Läufer simulieren.

pest
2009-04-03, 13:52:30
Eine echte Normalverteilung kann man ziemlich sicher ausschließen.
Denn dann müsste eine relativ kurze Zeit genauso einfach erreichbar sein wie eine relativ lange Zeit.

nicht so vorschnell, ok an die grenzen der physik habe ich nicht gedacht
aber das auftreten einer zeit, muss nur gleichwahrscheinlich sein ;)

ich glaube trotzdem nicht das der ts wissen will welche verteilung er da hat
vielleicht kannst du das ja nochmal kurz erläutern, was du wirklich machen willst

pest
2009-04-03, 13:53:59
Mit der gesuchten Zufallszahl möchte ich dann quasi Läufer simulieren.

also brauchbare ergebnisse bekommst du auch einfacher,
dazu musst du die verteilung nicht wissen, du wählst eine zufallszahl zwischen 1 und 15 min. und berechnest die zeit
mittels linearer interpolation wenn du für die entsprechende zeit keine stützstelle hast

Senior Sanchez
2009-04-03, 13:56:15
PRNGs sind gleichverteilt

du willst außerdem (glaube ich) nicht wissen, welche verteilung das ist

was du willst ist die werte dazwischen interpolieren, oder?

Deswegen bildet man ja darüber auch in eine andere Verteilung ab. ;) Der PRNG dient ja nur der Auswahl eines Parameters.

wry
2009-04-03, 13:58:48
Ich möchte eben auch einen Lerneffekt haben, also je mehr Daten ich habe, desto besser soll dann meine Simulation, bzw. desto bessere Werte soll die Zufallsvariable liefern.

Die Linearkongruenzmethode, die Senior Sanchez genannt hat scheint mir vielversprechend und recht einfach zu sein.

Edit:
@pest
Danke, ja an sowas hab ich auch gedacht!


Super, danke euch für die schnelle Hilfe!

pest
2009-04-03, 15:37:49
also nur noch mal zum verständniss,

es ist relativ unwichtig welcher exakten verteilung die läufer haben,
denn unter der annahme das es sich bei den läufern
auch um zufallsprozesse handelt bildet die (unendliche) überlagerung von beliebigen zufallsverteilungen wieder eine normalverteilung

das andere ist, das mein vorschlag nicht wirklich was bringt, denn was hat man
als ergebniss? man hat die wahrscheinlichkeit dafür das ein zufälliger läufer eben die ausgewählte zeit braucht, man hat damit aber noch keinen läufer simuliert.

wry
2009-04-03, 17:39:48
@pest

Ich verstehe jetzt nicht ganz was du meinst. Die Verteilung sollte doch erhalten bleiben?

Ich mach ein einfacheres Beispiel, sagen wir wir haben einen normalen Wüfel (1,..,6).

Ich lasse jemanden 3 mal Würfeln, er wirft 3,4,3.

Ok, das sind meine Daten die ich festgehalten hab. Jetzt will ich eine Zufallsvariable die, dieses Verhalten möglichst gut nachspielt.

Die Zufallsvariable macht nun folgendes:
Jedesmal wenn sie jemand abfrägt, wählt sie über einen PRNG aus der gesammelten Datenmenge(Würfe: 3,4,3) einen Wurf aus und gibt diese zurück.

Da der PRNG gleichverteilt ist, sollte er die Verteilung meiner kleinen Datenmenge erhalten.

Z.B. wenn ich meine Zufallsvariable 6 mal befrage, würde idealerweise sowas rauskommen: 3,4,4,3,3,3

Edit:
Wegen deinem Vorschlag: ist mir im Nachhinein auch klar geworden. Durch die Interpolation hätte ich dann zwar eine Verteilungsfunktion, aber wie man daraus eine Zufallsvariable konstruiert, die dieser folgt.. :confused:

pest
2009-04-03, 17:53:53
der witz ist doch aber, das die verteilung deiner läufer anders ist, als die der prngs, d.h. du musst über die prngs deine verteilung simulieren,
und wenn du eine normalverteilung annimmst, geht das z.b. über die Box-Muller-Methode (http://de.wikipedia.org/wiki/Box-Muller-Methode)

wry
2009-04-03, 18:04:18
Ja, ok, da stimm ich dir zu, ich simuliere über den PNGR die Verteilung meiner Läufer.

Wenn ich jetzt allerdings gleich eine (normalverteilte) Zufallszahl hernehme, dann nehme ich aber automatisch an, dass meine Läufer auch dieser folgen.

Ich möchte aber mein Simulationsprogramm nicht nur auf normalverteilte Ereignisse einschränken, es sollte auch für andere Verteilungen (halbwegs) funktionieren :smile:

hmx
2009-04-03, 18:14:52
Eine echte Normalverteilung kann man ziemlich sicher ausschließen.
Denn dann müsste eine relativ kurze Zeit genauso einfach erreichbar sein wie eine relativ lange Zeit. Das widerspricht aber der Physik. Für eine Zeit gegen null müsste die Geschwindigkeit gegen unendlich gehen. Eine Zeit gegen unendlich ist dagegen problemlos machbar, dazu muss der Läufer sich nur im Schneckentempo vorwärts bewegen.
Man könnte höchstens das Durchschnittstempo als normalverteilt annehmen.

Die Verteilung der Zeiten entspricht dann einer inversen Normalverteilung (http://de.wikipedia.org/wiki/Inverse_Normalverteilung).
Diese könnte man dann über die Bestimmung des Mittelwerts und der Standardabweichung aus der Stichprobe abschätzen.
Bestmöglich ist das Ergebniss dann aber nicht.

Es geht ja nicht um die physikalischen Gesetze sondern nur darum wie Wahrscheinlich eine besonders gute bzw eine besonders schlechte Zeit ist. Sonst könnte ich ich ja bei einem Intelligenztest auch sagen dass ein niedriger Wert einfacher zu erreichen ist, bei Aktien und der Verteilung der Rendite ebenso.

Spasstiger
2009-04-03, 18:59:56
Es geht ja nicht um die physikalischen Gesetze sondern nur darum wie Wahrscheinlich eine besonders gute bzw eine besonders schlechte Zeit ist.
Die Verteilung der Rundenzeit von Läufern unterliegt aber physikalischen Gesetzen. Die Verteilung kann schlichtweg nicht normalverteilt sein, weil es ein unteres Limit für die Rundenzeit gibt. Ein oberes Limit dagegen gibt es nicht. Eine inverse Normalverteilung ist schon realistischer.

Wenn man z.B. beim 100-m-Lauf eine Normalverteilung der Rundenzeiten mit Erwartungswert 11,5 Sekunden annimmt (im Schnitt 31,3 km/h), wäre eine Rundenzeit von 10 Sekunden (im Schnitt 36 km/h) genauso wahrscheinlich wie eine Rundenzeit von 13 Sekunden (im Schnitt 27,7 km/h). D.h. es ist genauso wahrscheinlich, dass jemand 4,7 km/h schneller als der Durchschnitt läuft wie dass jemand 3,6 km/h langsamer als der Durchschnitt läuft. Eine Normalverteilung der Rundenzeiten legt also nahe, dass Ausreißer der Rundenzeiten eher durch extrem schneller Läufer als durch ungewöhnlich langsame Läufer kommen. Im Schnitt der Bevölkerung trifft das aber wohl kaum zu.

A.Dupin
2009-04-03, 19:49:44
das ist ne Normalverteilung, logischerweise
zumindest 100%ig sicher wenn die Anzahl der Läufer gegen unendlich geht :D

sicher nicht.

Also die Lösung ist eigentlich sehr einfach. Wenn du keine Annahme über die Warscheinlichkeitsverteilung tätigen willst, betrachte einfach deine Zufallsstichprobe (bzw. die empirische Verteilungsfunktion dieser) als die Warscheinlichkeitsverteilung aus der du ziehen möchtest.
Ziehe dann einfach eine zufällige Zahl (oder mehrere mit Zurücklegen) aus deiner Stichprobe. Dies ist eine sehr einfache Form des Bootstrap/Jacknife Verfahrens. Wenn du "glatte" Zahlen vermeiden möchtest addiere einfach einen normal oder gleichverteilten Zufallsfehler mit sehr kleiner Varianz hinzu.

Falls du doch eine Warscheinlichkeitsverteilung annehmen möchtest, eignen sich hierbei die Gammaverteilung, die schon angesprochene inverse Normalverteilung und evtl. log-Normalverteilung oder die Weibullverteilung.

wry
2009-04-04, 12:19:16
@A.Dupin

Danke für die Tips!