Regressionskurven < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
weiß jemand, wo ich in Mathematica 5 die Befehle für Regressionskurven finde, bzw. was ich da eingeben muss? Ich möchte zwei Reihen von x- und y-Meßwerten verschiedene Regressionskurven anpassen.
Ich finde nämlich in der Hilfe nichts.
Vielen Dank im voraus.
LG, Martinius
|
|
|
|
Hallo,
such doch mal in der Hilfe nach "LinearRegression" und "NonlinearFit". Das dürften die Befehle sein.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:06 Mi 26.09.2007 | Autor: | Martinius |
Hallo Martin,
danke für den Tipp; ich hab's gefunden. Jetzt muss ich nur noch probieren.
LG, Martin
|
|
|
|
|
Hallo,
da funktioniert bei mir ein Befehl von Mathematica, der genau so in der Hilfe steht, nicht:
(regress = Regress[data, {1, [mm] x^2}, [/mm] x];Chop[regress, 10^(-6)])
, auch wenn ich ihn in der Hilfe in eine neue Zeile kopiere und ausführen lassen will, geht es nicht.
Weiß jemand, wie der Befehl funktionieren würde?
LG, Martinius
|
|
|
|
|
Hallo,
das Problem ist, dass der Funktionsname Regress mit einer bereits standardmäßig vorhandenen Funktion kollidiert. Warum das in der Hilfe kein Problem ist, weiß ich nicht. Vielleicht war das andere Regress da noch nicht vorhanden?
Du hast jetzt zwei Möglichkeiten:
1. Du schreibst beim Funktionsaufruf den vollen Namen, inklusive Package:
regress = Statistics'LinearRegression'Regress[data, {1, x}, x];
oder
2. Du entfernst vor dem Laden des Packages den(uns eh unbekannte) Befehl Regress, indem du ganz am Anfang einfügst:
Unprotect[Regress]; Remove[Regress];
Dann kannst du den Rest so lassen wie im Beispiel.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:51 Do 27.09.2007 | Autor: | Martinius |
Hallo Martin,
vielen Dank für deine Hinweise. Ich habe sie gleich ausprobiert, war aber leider nicht erfolgreich.
LG, Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:00 Do 27.09.2007 | Autor: | Martin243 |
Hallo,
was ist denn das Problem? Fehlermeldung?
Ich hänge mal mein Notebook an.
Regress
Gruß
Martin
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:23 Do 27.09.2007 | Autor: | Martinius |
Hallo,
jetzt funktioniert's; ich war nur zu schusselig, die Zeilen vor das Loaden des packages zu setzen.
Vielen Dank für deine Hilfe!
LG, Martin
|
|
|
|
|
Hallo,
ich versuche gerade, dass mir Mathematica eine Exponentialfunktion zu einem gegebenen Datensatz liefern soll. Wie stellt man das an? Ich habe versucht:
NonlinearFit[data, Exp[x], {x}]
func = Fit[data, {Exp[x]}, x]
(regress = Regress[data, {Exp[x]}, x]; Chop[regress, [mm] 10^{-6}])
[/mm]
, aber alle drei gehen nicht.
Vielen Dank im voraus,
Martinius
|
|
|
|
|
Hallo,
es gibt ja nicht nur Regress, sondern auch NonlinearRegress bzw. NonlinearFit, das sich besonders für solche Aufgaben eignet.
Ich hänge einfach mal ein Notebook mit einfachem Beispiel an.
Viel Erfolg,
Peter
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich]
|
|
|
|
|
Hallo Peter,
vielen Dank für dein notebook. Es hat funktioniert, will sagen, Mathematica gibt eine Funktion heraus...
Leider kommt auch eine Fehlermeldung, dass significant numerical errors darin enthalten sein können, was auch der Fall ist.
Also ich habe eingegeben:
<< Statistics`
data = {{0, 14}, {15, 8}, {30, 10}, {45, 27}, {60, 30}, {75, 46}, {90,71}, {105, 75}, {120, 99}};
NonlinearRegress[data, a*Exp[b*x], x, {a, b}]
Tja, und dann kommt die Fehlermeldung mit der Funktion
$y(x) = 7,59097 * [mm] 10^{-51} [/mm] * [mm] e^{x}$
[/mm]
wohingegen mir mein Taschenrechner folgende Funktion liefert:
$y(x) = 8,5631 * [mm] e^{0,021076*x}$
[/mm]
Woran könnte das liegen ?
LG, Martinius
|
|
|
|
|
Hallo Martinius,
vermutlich liegt das an der verwendeten Methode. In Numerik war ich nie gut, kann Dir also auch nicht erklären, wie der von Mathematica standardmäßig benutzte Levenberg-Marquadt Algorithmus funzt. Dein Taschenrechner nutzt wahrscheinlich die Methode der kleinsten Summe der Fehlerquadrate, denn damit komme ich auf Werte für a und b, die in der Größenordnung Deiner Lösung liegen. Dass sie nicht genau übereinstimmen könnte daran liegen, dass sich einer von uns vertippt hat, oder dass der Taschenrechner einen irgendwie modifizierten Algorithmus benutzt.
Bei Mma heißt dieses Verfahren schlicht Gradient und wird als Option Method übergeben.
Viel Erfolg,
Peter
ein Notizbüchlein
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:13 Di 02.10.2007 | Autor: | Peter_Pein |
Ich hab raus, wie der TR das gemacht haben muss:
Zuerst werden die Logarithmen der Funktionswerte berechnet und durch die dadurch entstandenen Wertepaare wird eine Ausgleichsgerade gezogen. Anschließend muss noch die Exponentialfunktion darauf losgelassen werden und schon (hier mit Mma):
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:04 Di 02.10.2007 | Autor: | Martinius |
Hallo Peter,
vielen Dank für deine Mühe.
Schade, dass Mathematica in diesem Fall nicht so einfach ist.
LG, Martinius
|
|
|
|