|
Motu |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 15.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 00:38
Titel: Nichtlineare Regression
|
 |
Hallo Zusammen,
Ich arbeite mit der Funktion fitnlm, um nichtlineare Regression zu ermöglichen.
Um fitnlm nutzen zu können, muss man als Inputparameter sog. modelfun definieren.
- Was gebe ich als modelfun an?
- Gibt es "Standardfunktionen", die man für solche Zwecken nutzen kann?
- Oder existieren gewisse Regeln, die man beim Aufbauen der modelfun-Fkt beachten muss?
Im Beispiel der Matlab-Doku wird leider nicht erklärt, wie sie auf diese Funktion kommen.
Danke und Grüße
Motu
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 10:52
Titel:
|
 |
Hallo,
Zitat: |
- Was gebe ich als modelfun an? |
Die Funktion, deren Parameter angepasst werden sollen.
Zitat: |
- Gibt es "Standardfunktionen", die man für solche Zwecken nutzen kann? |
Gibt es in der Curve Fitting Toolbox. Man sollte das aber schon bewusst wählen.
Z.B. die Daten plotten und anhanddessen entscheiden, welche Funktionen in Betracht kommen.
Grüße,
Harald
|
|
|
Motu |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 15.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 11:48
Titel:
|
 |
Hallo Harald,
danke für die Antwort.
Ich muss für die Funktion
eine Schätzung finden mit Hilfe der nichtlinearen Regression.
Wenn ich diese Funktion als modelfun angebe, ist es ja keine Schätzung mehr, sondern die exakte Funktion. Das macht aus meiner Sicht keinen Sinn. Meine Überlegung wäre jetzt statt dieser Fkt. Smoothing spline zu nutzen und diesen als modelfun anzugeben. Wäre das als modelfun geeignet?
Gibt es in Curve Fitting Toolbox smoothing spline oder Ähnliches, was ich als modelfun nutzen kann?
Danke und Grüße
Motu
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 11:59
Titel:
|
 |
Hallo,
typischerweise sieht ein Modell eher so aus:
m(x1,x2,x3)=a*x1^2+b*x2^2+c*x3^2
wobei die optimalen a, b, c zu bestimmen sind. Dieses Modell wäre im übrigens linear, weil linear in den Parametern.
Grüße,
Harald
|
|
|
Motu |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 15.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 12:30
Titel:
|
 |
Hier ist das, was ich als Parameter übergeben habe:
Die Parameter b(1), b(2) und b(3) sind immer 1 und diese ändern sich auch nicht. Somit ist es keine Regression mehr, sondern die exakte Funktion.
Deswegen suche ich nach den Alternativen und dachte, dass statt der angegebenen Modell-Funktion smoothing spline genutz werden kann, der dann auch als Modell benutzt wird.
fitnlm werden die Inputparameter X, Y, modelfun und beta übergeben.
X ist in meinem Fall eine nx3 Matrix, Y ist ein nx1 Vektor, modelfun soll die Funktion m(x1,x2,x3)=x1^2+x2^2+x3^2 approximieren und beta ist ein Vektor mit Parametern b(1), b(2) und b(3). Nun ist die Frage - was kann als modelfun hier explizit genutzt werden?
Das Ziel ist nachher predict(mdl,Xnew) machen zu können.
Gruß
Motu
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 13:05
Titel:
|
 |
Hallo,
was übergibst du denn als X und Y? Wenn diese genau die Modellgleichung erfüllen, dann ist es doch kein Wunder, dass für die Parameter 1 herauskommt, im Gegenteil.
Tatsächlicher, reproduzierbarer Code ist meist hilfreicher als Beschreibung des Codes.
Grüße,
Harald
|
|
|
Motu |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 15.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2015, 23:59
Titel:
|
 |
|
 |
|
Hi Harald:
ich habe noch kein Code, den ich hier vorzeigen könnte, da ich nicht weiß, wie ich an das Problem rangehen soll...
Ich habe eine Matrix aus Vektoren Xi, jeweils mit drei Komponenten, die mit randn(n,3) konstruiert werden. Somit ist X=Matrix nx3, n ist Anzahl der Zeilen, 3 ist die Anzahl der Spalten.
Basierend auf jeder Zeile der obigen Matrix wird ein Wert Yi berechnet und zwar so: Yi=xi1^2+xi2^2+xi3^2=m(x1,x2,x3)
Diese Yi werden in einem Vektor Y (nx1) gespeichert.
Nun muss ich für den weiteren Codeverlauf statt der vorgegebenen Funktion, die Yi berechnet, eine Regressionsfunktion benutzen. Diese Regressionsfunktion muss zunächst mit Hilfe des Smoothing splines konstruiert werden.
Da die Funktion Yi=xi1^2+xi2^2+xi3^2=m(x1,x2,x3) nicht linear ist, dachte ich an fitnlm:
Dieser Funktion würde ich dann die Matrix X, sowie den Vektor Y übergeben. Die Anzahl der Zeilen in Matrix X ist die gleiche wie die Anzahl der Zeilen im Vektor Y, nämlich n. beta0 ist folgendes Array: [-50 500 -1], somit habe ich drei Parameter: b(1), b(2) und b(3).
Nun zur modelfun: Mir ist nichts anderes eingefallen, als die Funktion, die ich hatte, um die Parameter beta zu ergänzen und somit kam
zustande.
Somit müssen die b(1), b(2) und b(3) jeweils 1 sein, aber es erscheint mir wenig Sinn an so einer Regressionsfunktion zu geben.
Deswegen dachte ich daran, statt die originale Funktion um die Beta-parameter zu ergänzen den Smoothing spline zu nutzen. Nun weiß ich nicht, wie ich diesen konsturieren kann, damit er die Funktion Yi=xi1^2+xi2^2+xi3^2=m(x1,x2,x3) schätzt.
Ich hoffe es jetzt besser erklärt zu haben.
Danke und Grüße
Motu
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.05.2015, 09:07
Titel:
|
 |
Hallo,
wenn die Y aus den X errechnet werden, dann verstehe ich nicht den Sinn von Regression oder Spline.
Regression ergibt keinen Sinn, weil du die Kurve (wie du sagst) ja schon hast. Spline ergibt ebensowenig Sinn, weil es ja eine quadratische Kurve ist. Man hat den Spline also quasi schon zusätzlich.
Zudem frage ich mich, wozu das predict gut sein soll. Man muss doch nur in die Funktion einsetzen?
Grüße,
Harald
|
|
|
Motu |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 15.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.05.2015, 23:49
Titel:
|
 |
Hi Harald,
ich habe eine ähnliche Aufgabe gefunden:
Wir setzen X=(X1;X2) mit standard nomal verteilten ZV X1 und X2
m(x1;x2)=2*x1+x2+ 2
Y=m(X) normalverteilt.
Wir schätzen die Dichte von Y durch eine Schätzung, die einen "fully data- driven smoothing spline estimate" benutzt, um die lineare Funktion m zu schätzen.
Ich habe das gleiche nur mit einer Dimension mehr:
X=(X1,X2,X3)
m(x1,x2,x3)=x1^2+x2^2+x3^2
Y=m(X)
und soll nun die nicht mehr lineare Funktion durch "fully data- driven smoothing spline estimate" schätzen.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|