Die Frage oben sagt alles. Grundsätzlich ist meine Frage nach einer generischen Anpassungsfunktion (die beliebig kompliziert sein kann), die in den Parametern, die ich abzuschätzen versuche, nichtlinear ist. Wie wählt man die Anfangswerte aus, um die Anpassung zu initialisieren? Ich versuche, nichtlineare kleinste Quadrate zu erstellen. Gibt es eine Strategie oder Methode? Wurde das untersucht? Referenzen? Sonst noch etwas, außer Ad-hoc-Vermutungen? Insbesondere ist eine der Anpassungsformen, mit denen ich gerade arbeite, eine Gaußsche plus lineare Form mit fünf Parametern, die ich zu schätzen versuche, wie
Dabei ist (Abszissendaten) und (Ordinatendaten), was bedeutet, dass meine Daten im log-log-Raum wie eine gerade Linie plus eine Erhebung aussehen, die ich mit einem Gaußschen approximiere. Ich habe keine Theorie, nichts, was mich anleiten könnte, wie die nichtlineare Anpassung zu initialisieren ist, außer vielleicht grafische Darstellungen und Augapfelungen wie die Neigung der Linie und die Mitte / Breite der Erhebung. Aber ich habe mehr als hundert dieser Anpassungen, anstatt zu zeichnen und zu raten, würde ich einen Ansatz bevorzugen, der automatisiert werden kann.
Ich kann keine Referenzen in der Bibliothek oder online finden. Das einzige, was mir einfällt, ist, die Anfangswerte zufällig auszuwählen. MATLAB bietet an, Werte zufällig aus [0,1] gleichmäßig verteilt auszuwählen. Also führe ich mit jedem Datensatz die zufällig initialisierte Anpassung tausendmal aus und wähle dann die mit der höchsten ? Irgendwelche anderen (besseren) Ideen?
Anhang Nr. 1
Hier sind zunächst einige visuelle Darstellungen der Datensätze, um Ihnen zu zeigen, über welche Art von Daten ich spreche. Ich poste beide Daten in ihrer ursprünglichen Form ohne irgendeine Umwandlung und dann ihre visuelle Darstellung im Log-Log-Raum, da sie einige der Merkmale der Daten verdeutlichen und andere verzerren. Ich poste eine Stichprobe von sowohl guten als auch schlechten Daten.
Jedes der sechs Felder in jeder Abbildung zeigt vier Datensätze, die zusammen rot, grün, blau und cyan dargestellt sind, und jeder Datensatz hat genau 20 Datenpunkte. Ich versuche, jeden von ihnen mit einer geraden Linie und einem Gaußschen zu versehen, da die Daten Unebenheiten aufweisen.
Die erste Abbildung zeigt einige der guten Daten. Die zweite Abbildung ist das Log-Log-Diagramm der gleichen guten Daten aus Abbildung 1. Die dritte Zahl sind einige der schlechten Daten. Die vierte Abbildung ist das Log-Log-Diagramm von Abbildung drei. Es gibt viel mehr Daten, das sind nur zwei Teilmengen. Die meisten Daten (ungefähr 3/4) sind gut, ähnlich den guten Daten, die ich hier gezeigt habe.
Nun einige Kommentare, bitte nehmen Sie Kontakt mit mir auf, da dies lange dauern könnte, aber ich denke, all diese Details sind notwendig. Ich werde versuchen, so kurz wie möglich zu sein.
Ich hatte ursprünglich ein einfaches Potenzgesetz erwartet (dh eine gerade Linie im Log-Log-Raum). Als ich alles im Log-Log-Raum plottete, sah ich die unerwartete Beule bei etwa 4,8 MHz. Die Beule wurde gründlich untersucht und auch in anderen Arbeiten entdeckt, so dass wir es nicht vermasselt haben. Es ist physisch dort und andere veröffentlichte Werke erwähnen dies auch. Also habe ich meiner linearen Form einfach einen Gaußschen Term hinzugefügt. Beachten Sie, dass diese Anpassung im Protokoll-Protokoll-Bereich erfolgen sollte (daher meine beiden Fragen, einschließlich dieser).
Nachdem ich nun die Antwort von Stumpy Joe Pete auf eine andere Frage von mir gelesen habe (die überhaupt nicht mit diesen Daten zusammenhängt) und dies und das und die darin enthaltenen Verweise gelesen habe (Zeug von Clauset), wurde mir klar, dass ich nicht in Log-Log passen sollte Raum. Jetzt möchte ich alles im vortransformierten Raum tun.
Frage 1: Wenn ich mir die guten Daten anschaue, denke ich immer noch, dass ein linearer plus ein Gaußscher Wert im vortransformierten Raum immer noch eine gute Form ist. Ich würde gerne von anderen hören, die mehr Erfahrung mit Daten haben, was sie denken. Ist Gauß + linear sinnvoll? Soll ich nur einen Gauß machen? Oder eine ganz andere Form?
Frage 2: Was auch immer die Antwort auf Frage 1 sein mag, ich benötige (höchstwahrscheinlich) nichtlineare Fehlerquadrate und benötige daher weiterhin Hilfe bei der Initialisierung.
Bei den Daten, bei denen wir zwei Sätze sehen, ziehen wir es sehr stark vor, die erste Erhebung bei etwa 4-5 MHz zu erfassen. Ich möchte also keine weiteren Gauß-Terme hinzufügen, und unser Gauß-Term sollte sich auf die erste Erhebung konzentrieren, bei der es sich fast immer um die größere Erhebung handelt. Wir wollen "mehr Genauigkeit" zwischen 0,8 MHz und etwa 5 MHz. Wir interessieren uns nicht zu sehr für die höheren Frequenzen, wollen sie aber auch nicht völlig ignorieren. Also vielleicht eine Art Wiegen? Oder kann B immer um 4.8mHz initialisiert werden?
Die Abszissendaten sind die Frequenz in Einheiten von Millihertz, bezeichnen sie mit . Die Ordinate Daten ist ein Koeffizient , wir sind Rechen, bezeichnen sie mit L . Also keine Protokolltransformation, und das Formular ist
- ist Frequenz, ist immer positiv.
- ist ein positiver Koeffizient. Wir arbeiten also im ersten Quadranten.
Frage 3: Was denken Sie, wie Sie dies in diesem Fall extrapolieren können? Irgendwelche Vor- / Nachteile? Irgendwelche anderen Extrapolationsideen? Auch hier kümmern wir uns nur um die niedrigeren Frequenzen, die zwischen 0 und 1 MHz extrapoliert werden ... manchmal sehr, sehr kleine Frequenzen, die nahe bei Null liegen. Ich weiß, dass dieser Beitrag bereits gepackt ist. Ich habe diese Frage hier gestellt, weil die Antworten möglicherweise in Beziehung stehen, aber wenn ihr es vorzieht, kann ich diese Frage trennen und später eine andere stellen.
Abschließend noch zwei Beispieldatensätze auf Anfrage.
0.813010000000000 0.091178000000000 0.012728000000000
1.626000000000000 0.103120000000000 0.019204000000000
2.439000000000000 0.114060000000000 0.063494000000000
3.252000000000000 0.123130000000000 0.071107000000000
4.065000000000000 0.128540000000000 0.073293000000000
4.878000000000000 0.137040000000000 0.074329000000000
5.691100000000000 0.124660000000000 0.071992000000000
6.504099999999999 0.104480000000000 0.071463000000000
7.317100000000000 0.088040000000000 0.070336000000000
8.130099999999999 0.080532000000000 0.036453000000000
8.943100000000001 0.070902000000000 0.024649000000000
9.756100000000000 0.061444000000000 0.024397000000000
10.569000000000001 0.056583000000000 0.025222000000000
11.382000000000000 0.052836000000000 0.024576000000000
12.194999999999999 0.048727000000000 0.026598000000000
13.008000000000001 0.045870000000000 0.029321000000000
13.821000000000000 0.041454000000000 0.067300000000000
14.633999999999999 0.039596000000000 0.081800000000000
15.447000000000001 0.038365000000000 0.076443000000000
16.260000000000002 0.036425000000000 0.075912000000000
Die erste Spalte enthält die Frequenzen in mHz, die in jedem einzelnen Datensatz identisch sind. Die zweite Spalte ist ein guter Datensatz (gute Daten, Ziffer eins und zwei, Feld 5, rote Markierung) und die dritte Spalte ist ein schlechter Datensatz (schlechte Daten, Ziffer drei und vier, Feld 5, rote Markierung).
Hoffe, dies ist genug, um eine aufschlussreichere Diskussion anzuregen. Danke euch allen.