Dolocitev najboljsega ujemanja med meritvami in numeriko

Ko tudi učitelj ne more pomagati...
mike133
Prispevkov: 6
Pridružen: 3.11.2011 23:35

Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a mike133 »

Opravil sem meritve v katerih so se izmerjena vrednost y in vhodni parametri x1, x2, x3 spreminjali s časom, nekateri vhodni parametri x4, x5, x6... pa so bili konstantni. Rezultate meritev imam seveda le za nekatere diskretne časovne trenutke. Nato sem opravil serijo numeričnih simulacij, pri katerih sem prav tako v diskretnih točkah (časovni trenutki numerično določenih rezultatov niso enaki kot pri meritvah) določal y', torej numerično določen približek y. Pri tem so bili nestacionarni vhodni parametri x1, x2, x3 enaki kot pri meritvah, prav tako so bili enaki konstantni vhodni parametri x5, x6, x7..., vrednost vhodnega parametra 4x pa sem spreminjal.

Na osnovi primerjave meritev in opravljenih num. simulacij bi rad določil pri kateri vrednosti vhodnega parametra x4 je ujemanje med y in y' najboljše.

Ideja je naslednja:
1. Interpoliram med numerično izračunanimi vrednostmi tako, da določim numerične vrednosti y' za trenutke v katerih imam meritve.
2. v nekaterih časovnih trenutkih, za katere imam merilne razultate, za vse primere simulacij določim (y-y')^2
3. za vsak primer simulacij določim: sum((y-y')^2)/n
4. ujemanje med meritvami in simulacijami je najboljše pri tistem x4, kjer je sum((y-y')^2)/n najmanjša.

Vprašanja:
Kako se ta metoda imenuje?
-metoda najmanjših kvadratov? Ne vem če, ker smo simulacije naredili samo za nekatere izbrane x4 in sum((y-y')^2)/n je najmanjši le za primerjane vrednosti x4
-s sum((y-y')^2)/n sicer določamo varianco, a mislim, da v mojem primeru ne gre za varianco, ker mislim, da glede na to da se y nestacionarno (sinusno) spreminja nimamo gausove porazdelitve
-inverzni problem"?

Ali obstaja kakšna drugačna - ustreznejša (standardizirana) metoda vrednotenja?
Hvala za odgovore.
LP

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

Ja, to je metoda najmanjsih kvadratov oziroma fitanje. Ali je funkcija na katero fitas numericno izracunana ali analiticno podana ne igra vloge. Metoda najmanjsih kvadratov (minimizacija hi-kvadrat funkcionala) predpostavlja Gaussovo porazdeljene meritve pri enem izbranem parametru (ce veckrat ponovis meritev pri istem casu in istih zacetnih pogojih). Dobro je imeti tudi nedolocenosti (napake) meritev, ker potem lahko pravilno utezis meritve (tiste ki so natancnejse bolj upostevas). Minimiziras
\(\chi^2=\sum\frac{(y_i-y_i')^2}{\sigma_i^2}\)
Skoraj vedno lahko predpostavis da so napake meritev Gaussove, pa tudi ce niso ne bo pretirano hudo narobe. Ce je porazdelitev res hudo drugacna, se pa se vedno lahko posluzis metode maksimalne entropije, ki je splosnejsa in iz katere za Gaussovo porazdelitev pride metoda najmanjsih kvadratov.

mike133
Prispevkov: 6
Pridružen: 3.11.2011 23:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a mike133 »

Meritve sem za dane vhodne parametre izvršil samo enkrat, ker je vhodna spremenljivka x1 naključna. Moja predpostavka je, da je izmerjena vrednost y v vseh časovnih trenutkih točna (kakšna je torej vrednost variance v tvoji enačbi? 0???). Torej rad bi rad poiskal numerično simulacijo v kateri je vsota (y(t(i))-y'(t(i)))^2 za vse i najmanjši (i je # obravnavanega časovnega trenutka).
Btw: merim tudi vrednosti vseh vhodnih spremenljivk, kar omogoča izvedbo numerične simulacije.

Vem da Gausovo porazdelitev lahko predpostavimo v vsaki točki y(t(i)) posebej, nisem pa prepričan da jo lahko tudi za vse i skupaj.

Aniviller, te lahko prosim za malo obširnejši odgovor...
Hvala..

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

Metoda najmanjsih kvadratov zahteva samo neodvisne podatkovne tocke kjer je vsaka porazdeljena Gaussovo. O sami funkciji in izbiri merskih tock ne zahteva popolnoma nic (fitas lahko karkoli na karkoli). Tvoj primer je najbolj tipicen za uporabo metode najmanjsih kvadratov. Nasploh se itak vedno uporabi ta metoda ker kaksne pametne alternative itak ni.

Variance ki nastopajo v enacbi so variance Gaussovih porazdelitev. Ce samo enkrat izmeris to se ne pomeni da so variance kaj drugacne, samo dolocit jih ne mores (ceprav prakticno vedno lahko ocenis natancnost iz lastnosti merilne naprave, motenj iz okolice,...). \(\chi^2\) ima zelo lepe statisticne lastnosti, ce so variance pravilno dolocene. Ce te zanima samo rezultat fitanja, potem njihova velikost niti ni vazna, samo razmerje med njimi, pa bo rezultat isti (skupni faktor itak lahko izpostavis). Torej, ce lahko trdis da so vse meritve enako natancne, potem variance lahko izpustis (postavis na 1) in samo minimiziras vsoto kvadratov odmikov.

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Kako se z metodo najmanjših kvadratov reši tale sistem:

y = a0 + a1*x^(b1) + a2*x^(b2) + ...

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

Z numerično minimizacijo. Linearizirat se ne da, tako da z eno potezo z matrikami ne prideš skozi.

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Numerična minimizacija, katero je najboljše orodje za to? Koliko časa bi sploh trajalo, da bi rešil problem, kjer bi iskal funkcijo, ki bi sprejela skoraj tisoč spremenljivk, iskal pa bi še nekajkrat toliko parametrov.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

To je običajno fitanje, vsak spodoben program za analizo podatkov ima to (opravljanje minimizacije je potem njihova stvar, ker stvari so že prav za fitanje narejene). Fitaš lahko z gnuplotom, matlabom, Mathematico, octave, root,... pač katerokoli okolje ti ustreza.
Koliko parametrov pa iščeš? Fit je smiseln, če je parametrov bistveno več kot podatkovnih točk, sicer imaš kup sklopitev: velike nedoločenosti parametrov, saj imaš kup kombinacij, ki ima skoraj enako dober rezultat. Sploh pa, če imaš same potenčne zveze, bo stvar se veselo razsula zelo kmalu. Že tole, kar si napisal, boš moral zelo dobro inicializirat, saj ti bo sicer hitro našel b1=b2, in ti torej grupiral v (a1+a2)*x^(b1) kar bo potem kot da imaš en parameter manj, pa a1 in a2 lahko poljubno mešaš. Že če stopnje fiksiraš, več kot kakšne 3 ali 4 nima smisla dat, saj so preveč podobne funkcije, in ti fitanje ne more objektivno povedat, katerega vidiš... malo moraš razmislit o smiselnosti problema - če je problem slabo zastavljen in zahtevaš preveč, ti bo algoritem upravičeno zaribal.

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Aja no, tam je mišljeno x1 in x2 in ne x. Gre za funkcijo \(f(x_1, x_2, ..., x_N)\), kjer je N lahko tudi tisoč.

Kaj ni fit smiseln, če je ravno obratno, torej podatkovnih točk kot parametrov?

Misliš ta ROOT?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

Ja ta root.

No če imaš parametrov več kot točk, potem jih itak ne moreš določit. Imaš nedoločen sistem. Sicer je to ravno tako minimizacija kvadratov, samo druga skrajnost, tako da niso isti algoritmi optimalni (marsikakšen program ti bo protestiral, saj nedoločeni parametri niso nekaj kar hočeš od fitanja), pa ogromna količina parametrov tudi ni dobra ideja. Fitanje bazira na principu, da je funkcija izmerjena v več točkah, in najdeš funkcijo, ki se najbolje prilega. Če imaš a*x^b, potem bi rabil vsaj ene 4 pare (x,y), da bi lahko vsaj približno našel krivino krivulje (b).

Je to kar počneš sploh smiselno? Funkcija več spremenljivk v splošnem načeloma lahko vključuje tudi vse sklopitve med posameznimi x-i. Če so to sploh res spremenljivke. Ker to kar si zdaj povedal izgleda, kot da imaš neodvisne spremenljivke in vsaka nastopa v svoji potenčni zvezi... a potem je pri vsaki meritvi cel nabor [x1,x2,x3,....] na razpolago? Ker meni zelo smrdi, da je to slabo zastavljeno. Po drugi strani, če je to res, in ti razpade zveza na vsoto koščkov, kjer je vsak odvisen samo od ene spremenljivke, pa je najbolje, da razbiješ na enodimenzionalne primere, saj nima smisla fitat vsega skupaj, če je neodvisno.

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Huh, se mi je zdelo, da sva se narobe sva se razumela. Brez skrbi, imamo izmerke \(y_1, y_2, ..., y_M\) in seveda velja \(M > N\), lahko bi rekel kar \(M >> N\). Pa že N je veliko število, reda 1000.

Ja, lahko bi seveda imeli sklopitve, tudi take z različnimi potenčnimi utežmi, samo kaj ko je potem vseh teh kombinacij \(2^N\). Parametrov pa še več. Morda bi vzel le sklopitve sosednjih x-ov.

Kaj ta ROOT je res kaka čudežna funkcija in najde globalni minimum in ne le nekega lokalnega?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

No ROOT je eno izmed programskih okolij za obdelavo podatkov. Fitanje je pač fitanje, ponavadi se za namene fitanja uporablja posebne verzije minimizacijskih algoritmov, ki so prilagojeni posebno za minimizacijo kvadratnih funkcionalov, in čim bolj robustni na ujetje v lokalne minimume. Eden izmed primerov takega algoritma je Levenberg-Marquard: http://en.wikipedia.org/wiki/Levenberg_Marquardt

Torej, funkcije za fitanja načeloma že ponujajo najboljše rešitve, ki so na razplogo... seveda pa vedno obstaja možnost ujetja v lokalni ekstrem, globalna minimizacija za nelinarne primere ne obstaja (ni algoritma, ki bi garantiral globalni minimum). Kako dobro najdeš stvar, je odvisno tudi od izbire začetnega približka za vse te parametre.

Moja skrbi so naslednje:
* N=1000 bo ubilo večino minimizacijskih algoritmov - to je preveč. To je že za linearen fit ogromno.
* Potenčne funkcije so skorajda worst-case fitanja, saj so vse enake. Tako da sklopitve z različnimi potencami ne priporočam.
* Potence (b-ji) bodo zelo slabo določene, če nimaš dovolj točk za vsak x, ali če so ti x preveliki (če imaš zmerjeno pri x=100,101,102 potem to ne bo dobra ideja). Več potenc pa nikakor ne.
...

Jaz bi se lotil na naslednje načine:
1) Ker nimaš sklopitev (če to verjameš da jih ni), potem lahko za vsak x iz nabora [x1,x2,...] fitaš posebej potenčno funkcijo v obliki a*x^b+c, pri čemer je ta "c" tam zato, da pobere noter vse ostale člene, ki jih ne gledaš.
2) Če imaš sklopitve, lahko potem te dodaš naknadno - mogoče celo iterativno. Uporabiš zgornji rezultat za začetni približek, in potem za vsakega posebej fitaš kombinacijo tako, da sosede držiš konstantne, v stilu a*x^b+c+d*x*sosed1+e*x*sosed2, pri čemer vidiš, da nisem predpostavil hkratne optimizacije člena a2*sosed^b2 in podobno. To torej vzame v poštev MAJHEN popravek (za velike ne bo konvergiralo) zaradi sklopitve, eno po eno... seveda je d*x*sosed1 še vedno skupen, tako da če zaporedoma ta korak ponoviš večkrat (večkrat skozi vse x1,x2,x3...) se bodo d,e spreminjali. Verjetno bo pa vseeno skonvergiralo. To je najbrž rešitev, če bi se za tisoče parametrov stvar sesula, če bi vse dal noter naenkrat. Ker s tem da je lokalno, ti veš nekaj več kot algoritem - ti veš, da ni daljnosežnih sklopitev.
3) Če gre to za meritve, ki so (prostorsko/sosedsko) sklopljeni, bo verjetno obnašanje po vrsti po x dokaj zvezno. Recimo če narišeš [a1,a2,a3,a4,...] najbrž želiš dokaj zvezno obnašanje. Če je to res, potem lahko namesto 1000 parametrov parametriziraš zadeve kot funkcije. Recimo a(i), pri čemer je i indeks x-a, lahko zapišeš mogoče kot a(i)=vsota potenc, kosinusov,... i-ja. Če imaš seveda kak model za to stvar. Če veš kaj želiš videt.

Ne vem točno, kaj iščeš, ampak imam občutek, da se tvoj problem da zapisat drugače in bolj kompaktno.

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Imam nek black box problem. Imam ogromno tabelo podatkov, dolgo čez 100 tisoč vrstic. V vsaki vrstici so neke vrednosti, te imenujem \(x_1, x_2, ..., x_N\). Teh je malo pod tisoč. Na koncu je vrednost y. Rad bi skonstruiral funkcijo \(y = f(x_1, x_2, ...,x_N)\). Pojma nimam, ali so si ti x-i kaj korelirani, sklopljeni, ipd. Funkcija je lahko karkoli, potence, vsote, eksponenti, sinusi, itd.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Aniviller »

Aha... direktnega fitanja ne priporočam. V takih primerih je treba malo bolj pametno pristopat, več človeškega faktorja, manj avtomatike. Indirektno sem se s takim primerom že soočil. Predlogi:
1) Če ne veš nič o odvisnosti, potem definitivno ne začneš s potenco. V bistvu se skoraj nikoli ne obravnava primera s splošno potenco (^b), greš že raje v potenčno vrsto a+b*x+c*x*x+(višje zelo redko, ker dobiš isti problem, da imajo vse skoraj isto obliko in fitanje crkne, posebej če nimaš 50 točk).
2) Najprej bi pofital linearno - če so sploh kakšne odvisnosti. Nelinearno ni nujno da sploh rabiš.
3) Izračunaj parske korelacije za vse pare (x_i,y), in poglej kateri sploh vplivajo na y. Lahko večino parametrov takoj stran vržeš, skoraj ziher ne vplivajo vsi, noben sistem ni tako kompliciran. Če si jih narišeš ali uporabiš kakšno drugo vrsto korelacije, lahko tudi takoj si zaznamuješ kakšne, ki imajo nemonotono obnašanje (funkcija z vrhovi in dolinami). Za te bo treba najbrž posebej modelirat, ročno poiskat model (Gauss, Lorentz, x*(1-x), sinusi,...).
4) Izvržeš lahko tudi parametre, ki imajo šuma toliko, da se nič ne vidi.
5) Nasploh lahko tudi po 3) inkrementalno dodajaš x-e dokler ne opišeš večine relevantnih efektov.
6) Parske korelacje (x_i,x_j) povedo, katere lahko grupiraš. Če sta dva x-a taka, da se skoraj vedno spreminjata skupaj, tvorita en sam parameter.
7) Na podoben način potem skupaj z y tudi pogledaš, kateri imajo mešane sklopitvene člene. Tega načeloma nočeš ampak žal najbrž obstaja.
8) Če je sistem pretežno linearen ali vsaj monoton, mogoče lahko pogledaš avtomatske klasifikacije, ki bazirajo na linearni regresiji (dokler si v linearnem je vse enostavno): principal component analysis (sistematično najde parametre, ki vplivajo, in tiste, ki ne) [lahko tudi pod imenom faktorska analiza - factor analysis]. Stvar najde linearne kombinacije x-ov, ki dajo večinski prispevek k obnašanju y.
9) V skrajnem primeru, če rabiš model, ne briga te pa v kakšni obliki je (hočeš simulator black-boxa), greš lahko z neparametrično regresijo: http://en.wikipedia.org/wiki/Nonparametric_regression
Ta stvar v bistvu nabije točke noter in dela tako, kot ti delaš na papirju - potegne čim bolj gladko krivuljo skozi točke, ne da bi oponašal katerokoli obstoječo funkcijo. Če rabiš samo napoved, je to izjemno močna metoda.
10) Res pazi na šum. Efekti, manjši od šuma, niso smiselni v obravnavi.

Upam da bo to kaj pomagalo...

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Dolocitev najboljsega ujemanja med meritvami in numeriko

Odgovor Napisal/-a Popotnik »

Super, hvala!

Odgovori