Funktionsgleichung berechnen mittels Annäherung?
Hallo Mathematiker.
Da ich mich momentan etwas eingehender mit Data Science und KI beschäftige möchte ich gerade auf Jux mal ein Wettervorhersage-Programm schreiben welches mir basierend auf den vorangegangenen Tagen/Wochen, das Wetter von morgen und übermorgen vorhersagt.
Bevor jetzt wissenschaftliche Einwände kommen, dass dies kaum zu seriösem Erfolg führen wird. Es geht hierbei nur um den Lerneffekt!
Dabei wollte ich jetzt erst einmal mit den Temperaturen anfangen. Also einfach die maximalen Tagestemperaturen.
Aber hier kam dann bei mir die Frage auf: Wie stellt man eigentliche eine entsprechende Funktionsgleichung auf? Diese wird ja keiner wirklichen Funktion entsprechen, zumindest keiner offensichtlichen, sondern dürfte sehr viele Grade haben.
Auch das x ist ja im Grunde halb-flexible. Ob die Punkte jetzt x=1,2,3,4,... oder x=20,27,34,41,... folgen ist mir einerlei, so lange ich weiß welches x den nächsten und übernächsten Tag darstellt.
Angenommen ich hätte jetzt ein paar Beispieldaten von einer Woche (die stimmen nicht, sind nur schnell hingetippt):
(15/13), (16/9), (17/7), (18/12), (19/14), (20/22), (21/15)
und wollte mir damit nun per Annäherung die Funktionsgleichung ermitteln, wie ginge das?
Mit OpenOffice und Excel kann man sich ja z. B. in einem Diagramm die berechnete Funktionsgleichung mit Bestimmtheitsmaß anzeigen lassen. Allerdings nur für lineare oder exponentielle Gleichungen usw., aber nichts was für meine Zwecke zu gebrauchen wäre.
Wie macht man sowas? Gibt es online vielleicht bereits einen Rechner dafür? Oder kennt jemand eine Bibliothek (bestenfalls Python) wo sowas integriert ist?
Vielen Dank für hilfreiche Antworten.
2 Antworten
siehe Interpolationspolynom, z.B. nach Newton
gibt es auch als Online-Rechner:
Die Abweichung kommt mir extrem groß vor (Eingabedaten richtig? Klick auf Button Datenübernahme? ...), dennoch sollte man auf Basis eines solchen einfachen Modells keine Extrapolationen vornehmen.
Ja, wobei ich für x=15, 16, ... etc. eingetragen habe. Dafür spuckte mir das Modell:
f(x) = 13+-4*(x-15)+1*(x-15)*(x-16)+0,8333333*(x-15)*(x-16)*(x-17)+-0,625*(x-15)*(x-16)*(x-17)*(x-18)+0,2833333*(x-15)*(x-16)*(x-17)*(x-18)*(x-19)+-0,1152778*(x-15)*(x-16)*(x-17)*(x-18)*(x-19)*(x-20)
Wenn ich x dann mit 22 ersetze, bekomme ich -190 raus. In der grafischen Darstellung werden auch alle Punkte geschnitten, der Graph sinkt dann aber direkt wieder ins Bodenlose.
An dem Verlauf wird deutlich, dass man nicht extrapolieren darf. Nimmt man den letzten Punkt heraus, steigt der Graph extrem nach oben und man könnte den herausgenommenen Punkt nicht näherungsweise anhand der übrigen Punkte prognostizieren.
Okay, aber wie komme ich dann auf den 8ten Wert der sich irgendwie an den 7 Werten davor richten soll? :)
Könnte eine deutlich größere Menge an Werten dieses Problem beheben?
Das Interpolationspolynom integriert die Messwerte exakt. Das geht zu Lasten des Verlaufes des Graphen außerhalb des Intervalls der Messwerte. Deshalb sind Extrapolationen hier nicht zu empfehlen.
Alternativ könnte man eine aus physikalischen Gründen zu erwartende Funktion zugrunde legen, denen die Messwerte nicht exakt, sondern näherungsweise entsprechen, die aber Prognosen für Bereiche außerhalb der Messwerte zulässt. Die Messwerte sollten dann die unbekannten Parameter der Funktion liefern.
Wenn ich z.B. einen linearen Verlauf erwarte, lege ich eine lineare Funktion zugrunde und bestimme aus den Messwerten die Parameter m und b. Wenn ich einen Parabelverlauf erwarte, bestimme ich aus den Messwerten die Parameter a, b und c. Entsprechendes gilt für einen elliptischen Verlauf, einen sinusförmigen Verlauf, einen exponentiellen Verlauf etc. In derartigen Fällen sind Prognosen möglich. Es liegen im Hinblick auf den "einfachen" Funktionsverlauf Überbestimmungen vor, die in die Berechnung einfließen.
Das dürfte bei Wetterprognosen aber schwierig sein, weil extrem viele Parameter zu berücksichtigen sind. Sicherlich gibt es signifikante Abweichungen zwischen Tag und Nacht oder zwischen Sommer und Winter, die man vielleicht modellieren könnte, aber eine Temperaturmessreihe über 14 Tage dürfte im Hinblick auf Prognosen äußerst unsicher sein.
Neben linearen und exponentiellen Funktionien benutzt man für sowas häufig Polynomfunktionen.
Hier gibt's dafür etwas in Python:
Vielen Dank dafür! Aber wenn ich die Daten so einsetze, mir die Funktionsgleichung ermitteln lasse und dann x=22 einsetze (für heute), dann bekomme ich -190°C angezeigt.
Ich schätze mal das ist der geringen Datenlage geschuldet?