Powyższe pytanie mówi wszystko. Zasadniczo moje pytanie dotyczy ogólnej funkcji dopasowania (może być arbitralnie skomplikowane), która będzie nieliniowa w parametrach, które próbuję oszacować, w jaki sposób wybrać wartości początkowe, aby zainicjować dopasowanie? Próbuję robić nieliniowe najmniejsze kwadraty. Czy jest jakaś strategia lub metoda? Czy zostało to zbadane? Jakieś referencje? Czy jest coś poza zgadywaniem ad hoc? Konkretnie, obecnie jedną z form dopasowania, z którymi pracuję, jest forma Gaussa plus forma liniowa z pięcioma parametrami, które próbuję oszacować, takie jak
gdzie (dane odciętych) iy = log 10 (dane rzędnych), co oznacza, że w przestrzeni log-log moje dane wyglądają jak linia prosta plus wybrzuszenie, które aproksymuję gaussowskim. Nie mam teorii, nic, co by mnie poprowadziło o tym, jak zainicjować dopasowanie nieliniowe, z wyjątkiem być może wykresów i gałek ocznych, takich jak nachylenie linii i jaki jest środek / szerokość wypukłości. Ale mam do wyboru ponad sto takich dopasowań zamiast grafowania i zgadywania, wolałbym jakieś podejście, które można zautomatyzować.
Nie mogę znaleźć żadnych odniesień w bibliotece ani w Internecie. Jedyne, co mogę wymyślić, to po prostu losowe wybranie wartości początkowych. MATLAB oferuje losowe wybranie wartości z [0,1] równomiernie rozłożonych. Więc z każdym zestawem danych uruchamiam losowo zainicjowane dopasowanie tysiąc razy, a następnie wybieram ten z najwyższym ? Jakieś inne (lepsze) pomysły?
Dodatek nr 1
Po pierwsze, oto kilka wizualnych reprezentacji zestawów danych, aby pokazać wam, o jakich danych mówię. Publikuję zarówno dane w oryginalnej postaci bez jakiejkolwiek transformacji, a następnie ich wizualną reprezentację w przestrzeni dziennika, ponieważ wyjaśnia niektóre cechy danych, a inne zniekształcają. Zamieszczam próbkę zarówno dobrych, jak i złych danych.
Każdy z sześciu paneli na każdej figurze pokazuje cztery zestawy danych naniesione razem na czerwono, zielono, niebiesko i cyjanowo, a każdy zestaw danych ma dokładnie 20 punktów danych. Staram się dopasować do każdego z nich linię prostą plus gaussa z powodu nierówności widocznych w danych.
Pierwsza cyfra to niektóre z dobrych danych. Druga cyfra to wykres log-log tych samych dobrych danych z rysunku 1. Trzecia liczba to niektóre złe dane. Czwarta cyfra jest logarytmicznym wykresem z figury trzeciej. Jest o wiele więcej danych, to tylko dwa podzbiory. Większość danych (około 3/4) jest dobra, podobnie jak dobre dane, które pokazałem tutaj.
Teraz kilka komentarzy, proszę o wyrozumiałość, ponieważ może to potrwać długo, ale myślę, że wszystkie te szczegóły są konieczne. Spróbuję być możliwie zwięzły.
Pierwotnie spodziewałem się prawa prostej mocy (co oznacza linię prostą w przestrzeni log-log). Kiedy narysowałem wszystko w przestrzeni dziennika, zobaczyłem nieoczekiwany wzrost przy około 4,8 MHz. Guz został dokładnie zbadany i odkryto go również w innych pracach, więc nie zawiedliśmy go. Jest tam fizycznie i wspominają o tym także inne opublikowane prace. Więc właśnie dodałem termin gaussowski do mojej formy liniowej. Zauważ, że to dopasowanie miało być wykonane w przestrzeni log-log (stąd moje dwa pytania łącznie z tym).
Teraz, po przeczytaniu odpowiedzi przez stumpy Joe Pete'a do innej kwestii kopalni (niezwiązane z tych danych w ogóle) i czytając to i to i odniesienia w nim (stuff Clauset), zdaję sobie sprawę, że nie powinien zmieścić się w logarytmiczny przestrzeń. Więc teraz chcę robić wszystko w przestrzeni przekształconej.
Pytanie 1: Patrząc na dobre dane, nadal uważam, że liniowy plus gaussowski w przestrzeni wstępnie przetworzonej jest nadal dobrą formą. Chciałbym usłyszeć od innych, którzy mają większe doświadczenie w zakresie danych, co myślą. Czy gaussowski + liniowy jest rozsądny? Czy powinienem robić tylko gaussa? A może zupełnie inna forma?
Pytania 2: Niezależnie od odpowiedzi na pytanie 1 nadal potrzebowałbym (najprawdopodobniej) nieliniowego dopasowania najmniejszych kwadratów, więc nadal potrzebuję pomocy przy inicjalizacji.
Dane, w których widzimy dwa zestawy, bardzo wolimy uchwycić pierwszy guz przy częstotliwości około 4-5 MHz. Więc nie chcę dodawać więcej terminów gaussowskich, a nasz termin gaussowski powinien być wyśrodkowany na pierwszym guzie, który prawie zawsze jest większy. Chcemy „większej dokładności” między 0,8 MHz a około 5 MHz. Nie zależy nam zbytnio na wyższych częstotliwościach, ale nie chcemy też ich całkowicie ignorować. Więc może jakieś ważenie? Czy B może być zawsze inicjowany w okolicach 4,8 MHz?
Pytania 3: Co według was ekstrapolujesz w ten sposób w tym przypadku? Jakieś zalety / wady? Jakieś inne pomysły na ekstrapolację? Ponownie dbamy tylko o niższe częstotliwości, dlatego ekstrapolujemy między 0 a 1 MHz ... czasami bardzo małe częstotliwości, zbliżone do zera. Wiem, że ten post jest już zapakowany. Zadałem to pytanie tutaj, ponieważ odpowiedzi mogą być powiązane, ale jeśli wolicie, mogę oddzielić to pytanie i zadać kolejne pytanie później.
Na koniec oto dwa przykładowe zestawy danych na żądanie.
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
Pierwsza kolumna to częstotliwości w MHz, identyczne w każdym zestawie danych. Druga kolumna to dobry zestaw danych (dobre dane pierwszy i drugi, panel 5, czerwony znacznik), a trzecia kolumna to zły zestaw danych (złe dane trzeci i czwarty, panel 5, czerwony marker).
Mam nadzieję, że to wystarczy, aby zachęcić do bardziej oświeconej dyskusji. Dziękuję wszystkim.