Friday, 24 November 2017

Kalman Filter Moving Average Matlab


Denne tråden spør når et diskret tids Kalman filter er bedre enn et enkelt bevegelige gjennomsnitt av observasjonene: det er ikke et definitivt svar. kan noen gi et definitivt eksempel der kalmanfilteret, ideelt sett i enkle 1D-tilfelle, gjør noe annerledes (og bedre) enn å holde et glidende gjennomsnitt, og angi forholdene når kalmanfilteret ville redusere til et enkelt bevegelige gjennomsnitt en tanke er at kalman filter ville ikke veie alle datapunktene like fordi dets varians er i utgangspunktet mindre og blir bedre med tiden. men det høres ut som om det bare ville ha betydning i forhold til de første observasjonene, og at når variansen kom sammen, ville kalmanfilteret veie hver observasjon like mye som et bevegelige gjennomsnitt, så ikke se når de to er forskjellige og hvorfor når filteret ville gjøre det bedre. spurte 17 februar klokken 23:52 som det første svaret (med flest stemmer) sier kalman-filteret er bedre i alle fall når signalet endrer seg. Legg merke til problemstillingen Disse bruker algoritmen til å anslå noen konstant spenning. Hvordan kunne et Kalman filter for dette være bedre enn bare å holde et løpende gjennomsnitt? Er disse eksemplene bare forenklet bruk tilfeller av filteret ved hjelp av et kalmanfilter for å estimere en konstant spenning er definitivt overkill. I det spesifikke problemet er det bedre å bruke løpende gjennomsnittet, som vi vet er den beste estimatoren for Gauss-distribusjoner. I dette eksemplet er den målte spenningen den faktiske spenningen V, men med litt støy typisk modellert som 0 betyr Gaussisk (hvit støy). slik at våre målinger er gaussiske med meanV og sigmasigma støy. Kalman-filteret er bedre egnet til å estimere ting som endrer seg over tid. Det mest konkrete eksemplet er sporing av bevegelige objekter. La oss forestille oss å kaste en ball, vi vet at det vil gjøre en parabolbue, men hva vil våre estimatorer vise. Et Kalman filter vil være svært nær den faktiske bane fordi det står at den siste måling er viktigere enn de eldre (når kovariansen er lav det er). Det løpende gjennomsnittet tar alle målinger like blåballbane, røde løpende gjennomsnitt (beklager, ikke kalman hvis jeg har syk tid kaster den inn der hvis jeg har tid, men det ville meg mye nærmere den blå linjen hvis du modellerte systemet godt ) Kalman-filteret sier derimot at hvis vår konvergens og rest var liten (det betyr at vi hadde et godt estimat), så skal vi holde fast ved tidligere estimater og justere det en liten bit basert på resten (eller vår estimering feil). Nå siden vår xhat kk ligger svært nær den faktiske tilstanden, vil vi bruke en systemtilstand som nære samsvarer med den faktiske tilstanden når vi utarbeider neste oppdatering. Ved x30, det løpende gjennomsnittet sier, den opprinnelige tilstanden y (0) er like viktig som y (29), det er det, og du får en stor feil. Kalman-filteret sto for dette. Det er sagt siden feilen vår siste gangen var stor, la oss gjøre en drastisk endring i vårt estimat (vår xhat), så når vi bruker den til neste oppdatering, vil den komme nærmere hva som faktisk skjer. Jeg håper det gir mening jeg bare la merke til Spørsmålet ditt spørre om et bevegelige gjennomsnitt mot Kalman. Jeg svarte å kjøre avg vs kalman (det er emnet for lenken du oppgav) Bare for å legge litt mer info spesifikt til det bevegelige (windowed) gjennomsnittet. Det bevegelige gjennomsnittet er en bedre estimator for endrede verdier. Siden det bare tar hensyn til nyere prøver. Dessverre har det et lag i tilknytning til det, spesielt ved å endre derivater (Bare se nær t30, hvor derivatet går fra positivt til negativt). Dette skyldes at gjennomsnittet er sakte for å se svingninger. Det er vanligvis hvorfor vi bruker det, for å fjerne svingninger (støy). Vinduestørrelsen spiller også en rolle. Et mindre vindu er vanligvis nærmere de målte verdiene, noe som gir mening og høres bra ut. Ulempen av dette er at hvis du har støyende målinger, betyr et lite vindu at mer støy vises mer i utgangen. La oss se på det andre spørsmålet igjen målinger med gjennomsnittlig .5, sigma .1 z 0,3708435, 0,4985331, 0,4652121. gjennomsnittet av de tre første prøvene er 0,44448629, ikke akkurat i nærheten av .5 forventet verdi. Dette viser igjen at med det mindre vinduet har støy en dypere effekt på utgangen. Så så logisk er vårt neste skritt å ta større vinduer for å forbedre støyimmuniteten vår. Vel, det viser seg at større vinduer er enda tregere for å gjenspeile de faktiske endringene (igjen se på t30 i grafen min) og det ekstreme tilfellet med windowing er i utgangspunktet det løpende gjennomsnittet (som vi allerede vet er dårlig for å endre data) Nå tilbake til den magiske kalman filter. Hvis du tenker på det, det ligner på et 2-utvalgsvinduet gjennomsnitt (tilsvarende ikke det samme). Se på X kk i oppdateringstrinnet, det tar forrige verdi, og legger til en vektet versjon av gjeldende utvalg. Du kan tenke, vel hva med støy Hvorfor er det ikke utsatt for det samme problemet som vinduet gjennomsnitt med en liten prøvetakestørrelse Fordi kalmanfilteret tar hensyn til usikkerheten til hver måling. Vektningsverdien K (kalman gain) kan være omtalt som et forhold mellom kovariansen (usikkerheten) av ditt estimat og kovariansen (usikkerheten) av det nåværende estimatet (faktisk er det resterende, men det er lettere å tenke på det på denne måten) . Så hvis den siste måling har mye usikkerhet K, reduseres, og dermed spiller den nyeste prøven en mindre rolle. Hvis den siste måling har mindre usikkerhet enn prediksjonen, øker k, og nå spiller den nye informasjonen et større rolle i neste estimat. Så selv med en liten utvalgsstørrelse blokkerer kalmanfilteret fortsatt mye av støyen. Uansett håper jeg det svarer vinduet avg vs kalman spørsmålet nå besvart feb 18 15 kl 03:34 En annen gang: Kalman-filteret lar deg legge til mer informasjon om hvordan systemet du filtrerer. Med andre ord kan du bruke en signalmodell for å forbedre filterets utgang. Visst, et glidende gjennomsnittsfilter kan gi svært gode resultater når du forventer en nær-konstant utgang. Men så snart signalet du har modellert er dynamisk (tenk tale eller posisjon målinger), vil det enkle, glidende gjennomsnittlige filteret ikke endres raskt nok (eller i det hele tatt) i forhold til hva Kalman Filter vil gjøre. Kalman-filteret bruker signalmodellen, som fanger din kunnskap om hvordan signalet endres, for å forbedre sin produksjon i forhold til variansen fra sannheten. besvart feb 18 15 kl 13: 11 Jeg har forsøkt å forstå Kalman-filtre. Her er noen eksempler som har hjulpet meg så langt: Disse bruker algoritmen til å anslå noen konstant spenning. Hvordan kan et Kalman-filter for dette være bedre enn bare å holde et løpende gjennomsnitt? Er disse eksemplene bare forenklet brukstilfeller av filteret. (Hvis ja, hva er et eksempel der et løpende gjennomsnitt ikke er tilstrekkelig?) For eksempel, vurder følgende Java-program og utdata . Kalman-utgangen samsvarer ikke med gjennomsnittet, men de er veldig nært. Hvorfor plukke en over den andre JA det er oversimplified eksempel, mer misvisende enn utdannelse. I så fall, hva er et eksempel der et løpende gjennomsnitt ikke er tilstrekkelig Uansett når signalet endres. Tenk deg å flytte kjøretøy. Beregning av gjennomsnitt betyr at vi antar signalverdi fra et øyeblikk til å være like viktig. Tydeligvis er det feil. Intuisjon sier, den siste måling er mer pålitelig enn den fra en time før. Et veldig godt eksempel på å eksperimentere med er av form frac. Den har en stat, slik at ligningene ikke blir kompliserte. På diskret tid kan det se slik ut: Det er koden som bruker den (jeg beklager sin Matlab, jeg brukte ikke Python nylig): Det er noen tips: Still alltid Q og R større enn null. Case Q 0 er veldig dårlig eksempel. Du sier til filteret: det er ingen forstyrrelse som virker på anlegget, så etter en stund vil filteret bare tro på sine spådommer basert på modell, i stedet for å se på målinger. Matematisk sett Kk til 0. Som vi kjenner modeller, beskrives ikke virkeligheten perfekt. Eksperimenter med noen modell unøyaktighet - modelError Endre første gjetning av staten (xpost (1)) og se hvor raskt den konvergerer for forskjellige Q, R og innledende Ppost (1) Kontroller hvordan filteret får K endringer over tid, avhengig av Q og R svarte Okt 3 12 kl 22:37 Faktisk er de samme i viss forstand, jeg vil vise noe bak Kalman filteret og du vil bli overrasket. Vurder følgende enkleste estimeringsproblemet. Vi får en rekke målinger z1, z2, cdots, zk, av en ukjent konstant x. Vi antar at additivmodellen begynner zi x vi, i1,2, cdots, k (1) slutten der vi er målerlyder. Hvis ingenting annet er kjent, vil alle være enige om at et rimelig estimat på x gitt k-målene kan gis ved å begynne hatten k frac sum zi Nå kan vi skrive om over ekv. (2) ved enkel algebraisk manipulering for å få begynnelsen hue k hat frac (zk-hat) (3) ende ekv. (3) som ganske enkelt er ekv. (2) uttrykt i rekursiv form har en interessant tolkning. Det står at det beste estimatet av x etter k måling er det beste estimatet av x etter k-1 målinger pluss en korreksjonsperiode. Korrigeringsperioden er forskjellen mellom det du forventer å måle basert på k-1-måling, dvs. og hva du faktisk måler zk. Hvis vi merker korrigeringsfrekvensen som Pk, kan det igjen bare algebraisk manipulasjon skrive rekursiv form av Pk som begynnelse PkP-P (P 1) P Tro det eller ei, Eqs. (3-4) kan gjenkjennes som Kalman-filtreringen ligninger for dette enkle tilfellet. Eventuell diskusjon er velkommen. For å gi litt smak, se denne listen over bøker: Jeg har GrewalAndrews med MatLab, også GrewalWeillAndrews om GPS. Det er det grunnleggende eksemplet, GPS. Her er et forenklet eksempel, jeg intervjuet for en jobb hvor de skrev programvare for å holde oversikt over alle lastebiler som går inn og ut av et stort leveringssted, for Walmart eller lignende. De hadde to typer informasjon: Basert på å sette en RFID-enhet i hver lastebil, hadde de ganske god informasjon om hvilken retning hver lastebil gikk med målinger mulig mange ganger per sekund, men til slutt vokser i feil, slik som en hvilken som helst vesentlig ODE-tilnærming. På en mye lengre tidskala kunne de ta GPS-posisjonen til en lastebil, noe som gir en veldig god, upartisk plassering, men har en stor varianse, du får posisjon innen 100 meter eller noe. Hvordan kombinere disse Det er hovedbruken av Kalman-filteret, når du har to kilder til informasjon som gir omtrent motsatte feiltyper. Min ide, som jeg ville ha fortalt dem om de hadde betalt meg, var å plassere en enhet på hver semi hvor førerhuset møter tilhengeren, og gir den nåværende svingradiusen. Dette kunne ha vært integrert for å gi veldig god korttidsinformasjon om hvilken retning lastebilen var på vei. Vel, det er det de gjør med nesten alt som beveger seg i dag. Den jeg trodde var søt var gårder i India, og holdt oversikt over hvor traktorer var. Den bevegelige kroppen trenger ikke å bevege seg raskt for å få de samme spørsmålene. Men selvfølgelig var den første store bruken NASA Apollo-prosjektet. Min far møtte Kalman på et tidspunkt. Pappa jobbet for det meste på navigasjon, i utgangspunktet raketter for hæren, senere ubåter for marinen. svarte 22. juli kl. 19: 25 Kalman-filteret for økonomisk tidsserie. Nå og da kommer jeg over et verktøy som er så skrudd ned i esoteriske matematiske beregninger, det blir vanskelig å få en enkel forståelse av hvordan eller hvorfor de kanskje vær brukbar. Enda verre, du søker utstrakt på Internett for å finne et enkelt bilde som kan uttrykke tusen ligninger, men finner ingenting. Kalman-filteret er et av verktøyene. Ekstremt nyttig, men likevel veldig vanskelig å forstå konseptuelt på grunn av det komplekse matematiske jargong. Nedenfor er et enkelt plott av en kalmanfiltrert versjon av en tilfeldig tur (for nå vil vi bruke det som et estimat av en økonomisk tidsserie). Fig. 1. Kalman Filter estimater av gjennomsnitt og kovarians av Tilfeldig Walk Kf er et fantastisk eksempel på en adaptiv modell, nærmere bestemt en dynamisk lineær modell som kan tilpasse seg et stadig skiftende miljø. I motsetning til et enkelt bevegelige gjennomsnitt eller FIR som har et fast sett med vinduer for vinduer, oppdaterer kalman-filteret kontinuerlig informasjonen for å produsere adaptiv filtrering i fly. Selv om det er noen TA-baserte adaptive filtre, som Kaufman Adaptive Moving Average og variasjoner av det eksponentielle glidende gjennomsnittet, fanger ikke den optimale estimeringen av serien på samme måte som KF gjør. I plottet i figur 1. Vi har en blå linje som representerer det estimerte gjennomsnittet av de underliggende tidsseriene, hvor den røde linjen representerer tidsseriene selv, og til slutt representerer de stiplede linjene kovariansestimatet av tidsseriene mot estimert gjennomsnitt. Legg merke til at i motsetning til mange andre filtre, er det anslåtte gjennomsnittet et veldig godt mål på tidsseriens sanne flyttesenter. Uten å dykke i for mye matematikk er følgende den velkjente tilstandsavstandsekvasjonen til kf: xtAxt-1 w ztHxt v Selv om disse ligningene ofte uttrykkes i statlig plass eller matrise representasjon, gjør dem noe komplisert til lekmannen, hvis du er kjent med enkel lineær regresjon, kan det være mer fornuftig. La oss definere variablene: xt er den skjulte variabelen som anslås, i dette tilfellet representerer den det beste estimatet av middel eller midtpunkt i tidsserien A er tilstandsovergangsmatrisen, eller jeg tenker ofte på den som lik den autoregressive koeffisienten i en AR-modell tenker på det som Beta i en lineær regresjon her. w er støyen fra modellen. Så vi kan tenke på ligningen xAx-1 w som å være svært lik den grunnleggende lineære regresjonsmodellen, som den er. Hovedforskjellen er at kf kontinuerlig oppdaterer estimatene ved hver iterasjon i en online mote. De som er kjent med styringssystemer, kan forstå det som en tilbakemeldingsmekanisme som justerer for feil. Siden vi faktisk ikke kan se det sanne senteret i fremtiden, bare estimere det, tenker vi på x som en skjult variabel. Den andre ligningen er koblet direkte til den første. ztHxtv zt er estimatet av det faktiske signalkovarians med hensyn til estimert senter, x. xt vi gjenkjenner som estimatet av tidsseriens bevegelige senter. v er støyen fra modellen. Igjen er det en lineær modell, men denne gangen inneholder ligningen noe vi kan observere: zt er verdien av tidsseriene vi prøver å fange og modellere med hensyn til xt. Nærmere bestemt er det et estimat av kovariansen, eller sambevegelsen mellom den observerte variabelen, tidsseriensverdien og estimatet av senteret x. Du kan også tenke på konvolutten det skaper som ligner på et standardavviksbånd som forutsier den fremtidige variansen av signalet med hensyn til x. De som er kjent med skjulte markov-modeller, kan gjenkjenne konseptet av skjulte og observerte tilstandsvariabler som vises her. I utgangspunktet begynner vi å estimere vårt gjetning av x og y, gjennomsnittet og kovariansen til serien basert på målinger av den underliggende serien, som i dette tilfellet bare er de normale parametrene N (middel, std) som brukes til å generere tilfeldige gange. Derfra benyttes de lineære matrise-ligningene til å estimere verdiene til z og x, ved hjelp av lineære matriksoperasjoner. Nøkkelen er at når et estimat er gjort, blir verdien av kovariansen av y deretter kontrollert mot den faktiske tidsserieverdien, og en parameter kalt K er justert for å oppdatere tidligere estimater. Hver gang K oppdateres, er verdien av estimatet for x oppdatert via: xtnewestxtest K (zt Hxest). Verdien av K konvergerer vanligvis til en stabil verdi, når den underliggende serien er virkelig gaussisk (se figur 1 under starten av serien, lærer den). Etter noen iterasjoner er den optimale verdien av K ganske stabil, så modellen har lært eller tilpasset seg den underliggende serien. Noen fordeler med kalman-filteret er at det er forutsigbart og adaptivt, da det ser frem til et estimat av kovariansen og tidsserienes betydning for et trinn inn i fremtiden, og i motsetning til et Neural Network, krever det IKKE stillestående data. De som jobber med opplæringen til det neurale nettverket, håper å se en stor fordel her. Den har en meget nær glatt representasjon av serien, mens den ikke krever å kikke inn i fremtiden. Ulempene er at filtermodellen antar lineære avhengigheter, og er basert på lydvilkår som er gaussiske generert. Som vi vet, er finansmarkedene ikke nøyaktig gaussiske, siden de har en tendens til å ha fete haler oftere enn vi forventer, ikke-normale høyere øyeblikk, og serien utviser heteroskedastisitetsklynging. Et annet mer avansert filter som adresserer disse problemene er partikkelfilteret, som bruker prøvetakingsmetoder for å generere de underliggende distribusjonsparametrene. Her er noen referanser som kan bidra til å forstå kalmanfilteret. I tillegg er det en kalman jevnere i R-pakken, DLM. Hvis du er interessert i en Python-basert tilnærming, anbefaler jeg på det sterkeste følgende bookMachine Learning et algoritmisk perspektiv Ikke bare er det en fantastisk writeup på skjulte markov-modeller og kalman-filtre, men det er ekte kode du kan replikere. Det er en av de beste praktiske bøkene om maskinlæring jeg har kommet over perioden. Kalman Filterpakke Denne pakken implementerer følgende Kalman-filtre: 1) Standard Kalman Filter 2) Utvidet Kalman Filter 3) Dual Kalman Filter 4) Firkantrot Kalman Filter Dette Pakken inneholder også lærerikt eksempler for hver filtertype som demonstrerer deres praktiske anvendelse. I alle 4 tilfeller aksepterer KF-funksjonene som inngående støyende prøver av et flerdimensjonalt system og produserer KF-estimatet av den sanne systemtilstanden basert på de tidsvarierende processnoise-kovariansene som ligger i de støyende prøvene. Eksponentielt vektede (eller uveide) bevegelige gjennomsnittsverdier brukes til å estimere tidsvarierende systemkovariater fra støyende målinger. Standard Kalman-filteret er den mest grunnleggende KF-implementeringen. Det antas en modell at de støyende målingene inneholder den sanne systemtilstanden pluss hvit støy. Det utvidede Kalman-filteret er en generalisering av Standard Kalman-filteret som gjør at brukeren kan spesifisere en ikke-lineær systemmodell, som deretter iterativt lineariseres under EKF-kjøring. Dual Kalman-filteret løser samtidig to standard Kalman filterproblemer: 1) Tilpasser en automatisk regresjonsmodell til dataene og bruker et Kalman-filter for å oppdatere AR-modellen 2) Bruker AR-modellen ved hver iterasjon før du utfører Standard KF-oppdateringen Square Root Kalman-filtre er en robust og numerisk stabil metode for å utføre StandardDual Kalman Filtrering, spesielt når kovariansmatriser av interesse er dårlig betinget eller nesten ikke positiv bestemt. Firkantrot Kalman Filtrering ideen er å formidle prosessfeilkovariansen P i kvadratroten form P U D U, hvor U og D er iterativt oppdatert og P ikke eksplisitt beregnes. Å gjøre det vil garantere at P er positiv bestemt og dermed øke den numeriske stabiliteten til KF.

No comments:

Post a Comment