Friday 1 September 2017

Exponential Glidande-Medelvärde Oregelbunden


Exponentiella rörliga medelvärden för oregelbundna tidsserier. I tidsserieanalysen är det ofta ett behov av utjämningsfunktioner som reagerar snabbt på förändringar i signalen. I den typiska applikationen kan du bearbeta en insignal i realtid och vill beräkna sådana saker Som det senaste genomsnittliga värdet eller få en momentan lutning för det Men reala världssignaler är ofta bullriga Ett par bullriga prover gör det nuvarande värdet av signalen, eller dess lutning varierar mycket. Medelvärdena. Den enklaste utjämningsfunktionen är en windowed Glidande medelvärde Medan proven går in tar du i genomsnitt de senaste N-värdena. Detta släpper ut spikar, men introducerar en fördröjning eller latens. Medelvärdet kommer alltid att fördröjas med bredden på ditt glidande medelvärde. Exemplet ovan är relativt dyrt att beräkna För varje prov måste du iterera över hela storleken på fönstret Men det finns billigare sätt att hålla summan av alla prover i fönstret i en buffert och justera summan som nya prover com E in. Another typ av rörligt medelvärde är det viktade glidande medlet som vikter för varje position i provfönstret Innan medelvärdet multiplicerar du varje prov med vikten av den här fönsterpositionen Tekniskt kallas detta en konvolvering. En typisk viktningsfunktion tillämpar en klockkurva Till provfönstret Detta ger en signal som är mer avstämd till mitten av fönstret och fortfarande något tolerant för bullriga prover I finansiell analys använder du ofta en viktningsfunktion som värderar de senaste proverna för att ge ett glidande medelvärde som närmare spårar Nya prover Äldre prover ges gradvis mindre vikt. Detta minskar någonting av latens, samtidigt som det ger en rimligt bra utjämning. Med ett vägt genomsnitt måste du alltid iterera över hela fönsterstorleken för varje prov om du inte kan begränsa tillåtna vikter till Vissa funktioner. Exponentiell rörlig Average. Another typ av genomsnitt är exponentiell glidande medelvärde, eller EMA Detta är ofta du Sed där latens är kritisk, som i realtid finansiell analys I detta genomsnitt minskar vikterna exponentiellt Varje prov värderas en del procent mindre än nästa senaste prov Med denna begränsning kan du beräkna det rörliga genomsnittet mycket effektivt. Var alpha är en Konstant som beskriver hur fönsterviktarna minskar över tiden Till exempel om varje prov skulle vägas till 80 av värdet av föregående prov, skulle du ställa alfa 0 2 Den mindre alfabetet blir desto längre blir ditt glidande medelvärde, t ex blir det glattare, Men mindre reaktiva på nya prover. Vikten för en EMA med alfa 0 20. Som du kan se, för varje nytt prov behöver du bara genomsnitts det med värdet av föregående genomsnitt. Så beräkningen är väldigt mycket snabb. I teorin är alla tidigare Prover bidrar till det nuvarande genomsnittet, men deras bidrag blir exponentiellt mindre över tiden. Det här är en mycket kraftfull teknik, och förmodligen det bästa om du vill få ett glidande medelvärde som svarar qui Ckly till nya prover, har bra utjämningsegenskaper och är snabb att beräkna. Koden är trivial. EMA för oregelbunden tidsserie. Standard EMA är bra när signalen samplas med regelbundna tidsintervaller Men vad händer om dina prover kommer i oregelbundna intervaller. Föreställ dig en kontinuerlig signal som samplas med oregelbundna intervaller Detta är den vanliga situationen i finansiell analys I teorin finns det en kontinuerlig funktion för värdet av något finansiellt instrument, men du kan bara prova denna signal när någon faktiskt driver en handel. Så din dataström Består av ett värde plus tiden då den observerades. Ett sätt att hantera detta är att omvandla den oregelbundna signalen till en vanlig signal, genom att interpolera mellan observationer och resampling. Men det här förlorar data och det introducerar latens igen. Det är möjligt att beräkna en EMA för en oregelbunden tidsserie direkt. I den här funktionen passerar du i det aktuella provet från din signal och det föregående provet och hur länge tiden förflutit En de två och det tidigare värdet som returneras av den här funktionen. Så bra fungerar det För att demonstrera att jag har genererat en sinusvåg, samplades den med oregelbundna intervaller och introducerade omkring 20 ljud. Det är signalen varierar slumpmässigt - 20 från Den ursprungliga sanna sinus-signalen. Hur bra återfår det oregelbundna exponentiella glidande medlet. Den röda linjen är den ursprungliga sinusvågen samplad med oregelbundna intervaller Den blå linjen är signalen med det tillförda bruset Den blå linjen är den enda signalen som EMA ser Den gröna linjen är den smidiga EMA Du kan se att den återställer signalen ganska bra Lite wobbly, men vad kan du förvänta dig från en så högljudd källsignal. Den flyttas ungefär 15 till höger, eftersom EMA introducerar viss latens. Mjuktare Du vill ha det, desto mer latens kommer du att se Men från det här kan du till exempel beräkna en momentan sluttning för en bullrig oregelbunden signal. Vad kan du göra med det Hmm. Jag har ett kontinuerligt värde som jag gillar att beräkna en expo Normalt rörande medel Normalt använder jag bara standardformeln för this. where Sn är det nya genomsnittet, är alfabetet, Y är provet och Sn-1 är föregående genomsnitt. Tyvärr beror på olika problem inte jag Ha ett konsekvent provtid jag kanske vet att jag kan prova mest, säg en gång per millisekund, men på grund av faktorer som jag inte kan ta ett prov i flera millisekunder åt gången Ett troligt vanligare fall , Men det är att jag enkelt provar lite tidigt eller sent istället för provtagning vid 0, 1 och 2 ms jag provar på 0, 0 9 och 2 1 ms Jag förutser att, oavsett förseningar, kommer min samplingsfrekvens vara långt, Långt över Nyquistgränsen, och jag behöver därför inte oroa mig för aliasing. Jag tror att jag kan hantera detta på ett mer eller mindre rimligt sätt genom att variera alfabetet på lämpligt sätt, baserat på hur länge tiden har gått sedan det sista provet. Av mina resonemang att detta kommer att fungera är att EMA interpolerar linjärt mellan föregående datapunkt och den nuvarande If Vi överväger att beräkna en EMA av följande lista av prover med intervaller t 0,1,2,3,4 Vi borde få samma resultat om vi använder intervall 2t, där ingångarna blir 0,2,4, höger om EMA hade Antog att vid t 2 hade värdet varit 2 sedan t 0 som skulle vara detsamma som intervallet t beräkningen beräknat på 0,2,2,4,4, vilket det inte gör eller gör det meningslöst alls. Kan Någon berätta för mig hur man varierar alfabetiskt. Vänligen visa ditt arbete. Jag visar mig matematiken som visar att din metod verkligen gör rätt sak. Skriven 21 juni 09 kl 13 05. Du borde inte få samma EMA för olika inmatningar Tänk Av EMA som ett filter, är provtagningen vid 2t ekvivalent med nedprovtagning och filtret kommer att ge en annan effekt. Det här klara för mig eftersom 0,2,4 innehåller högre frekvenskomponenter än 0,1,2,3,4, om inte Frågan är hur jag byter filter i flygningen för att få det att ge samma resultat Kanske saknar jag något fritt utrymme 21 juni 09 kl 15 52. Men ingången är inte annorlunda Det är bara samplas mindre ofta 0,2,4 med intervaller 2t är som 0, 2, 4 i intervaller t, där indikerar att provet ignoreras Curt Sampson 21 juni 09 vid 23 45. Detta svar baseras på Min goda förståelse för lågpassfiltrets exponentiella glidande medelvärde är egentligen bara ett enkelpoligt lågpassfilter, men min dumma förståelse för vad du letar efter. Jag tror att följande är vad du vill. Först kan du förenkla din ekvation lite Ser mer komplicerat men det är enklare i kod jag mår att använda Y för utgång och X för inmatning istället för S för utgång och Y för inmatning, som du har gjort. För det andra är värdet här här lika med 1-e-t Där t är tiden mellan proverna och är tidskonstanten för lågpassfiltret säger jag lika med citat eftersom det fungerar bra när t är liten jämfört med 1 och 1-e-tt men inte för liten du kommer att springa in i Kvantisera problem, och om du inte tillgriper några exotiska tekniker behöver du vanligtvis en extra N bitars upplösning i din tillståndsvariabel S, wh Ere N - log 2 För större värden på t börjar filtreringseffekten att försvinna tills du kommer till den punkt där det är nära 1 och du ger i grund och botten bara inmatningen till utgången. Detta ska fungera korrekt med olika värden på t Variation av t är inte så viktigt så länge som alfa är liten, annars kommer du att springa på några ganska konstiga Nyquist-frågor aliasing etc, och om du arbetar på en processor där multiplikation är billigare än division eller problem med fast punkt är viktiga, Precalculate 1, och överväga att försöka approximera formeln för. Om du verkligen vill veta hur man härleder formeln. Ta hänsyn till dess differentialekvationskilde. När X är en enhetsstegfunktion, har lösningen Y 1 - e - t För små värden av t kan derivatet approximeras med Y t, vilket ger. Och extrapoleringen av 1-e-t kommer från att försöka matcha beteendet med funktionen för enhetens stegfunktion. Kan du snälla utarbeta försök att matcha Upp beteende delen jag unders Tand din kontinuerliga tidslösning Y 1 - expt och dess generalisering till en skalad stegfunktion med magnitud x och initialtillstånd y 0 men jag kan inte se hur man sammanför dessa idéer för att uppnå ditt resultat Rhys Ulerich 4 maj kl 22 34. Det här är inte ett komplett svar, men kan vara början på en. Det är så långt jag kom med det i en timme att spela. Jag skickar det som ett exempel på vad jag letar efter, och kanske en inspiration Till andra som arbetar med problemet. Jag börjar med S 0 som är det genomsnittliga resultatet från föregående medel S -1 och provet Y 0 som tas vid t 0 t 1 - t 0 är mitt provintervall och är inställt på vad som är lämpligt för Det provintervallet och den period över vilken jag önskar att bli genomsnittlig. Jag funderade på vad som händer om jag saknar provet på t 1 och istället måste göra med provet Y 2 taget vid t 2. Vi kan börja med att expandera ekvationen till Se vad som skulle ha hänt om vi hade Y 1. Jag märker att serien verkar sträcka sig oändligt på det här sättet, För att vi kan ersätta Sn i högra sidan på obestämd tid. Okej, så det är inte riktigt ett polynomiskt dumt, men om vi multiplicerar den första termen av en så ser vi ett mönster. Det är en exponentiell serie Quelle Överraskning Föreställ dig det som kommer ut från ekvationen för ett exponentiellt rörligt medelvärde. Men i alla fall har jag x x x x x x x sak och jag är säker på att jag luktar e eller en naturlig logaritm som sparkar här, men jag kan Jag kommer inte ihåg var jag gick på väg nästa gång jag sprang ur tiden. Ett svar på denna fråga eller något bevis på att ett sådant svar är korrekt beror högt på de data du mäter. Om dina prov togs vid t 0 0ms t 1 0 9ms och t 2 2 1ms men ditt val av är baserat på 1-ms-intervaller och därför vill du ha en lokalt justerad n beviset på valets rätthet skulle innebära att du vet att provvärdena är t 1ms och t 2ms. På frågan Kan du interpolera dina data resonably för att ha fina gissningar om vilka mellanliggande värden som kan ha varit Or c En du interpolerar även medlet själv. Om ingen av dessa är möjliga, så är det logiska valet av ett mellanvärde Y t det senaste beräknade medelvärdet, dvs Y t S n där n är maximal sådan Det tn t. Detta val har en enkel konsekvens Lämna ensam, oavsett vad tidsskillnaden var. Om det å andra sidan är det möjligt att interpolera dina värden, då kommer detta att ge dig medelvärde för konstantintervall Slutligen, om det S till och med möjligt att interpolera medlet självt, det skulle göra frågan meningslöst. Svarade 21 juni 09 på 15 08.balpha 27 2k 10 87 118. Jag skulle tro att jag kan interpolera mina data, eftersom jag m samplar den med diskreta intervaller, jag M gör det redan med en standard EMA Hur som helst, antar att jag behöver ett bevis som visar att det fungerar såväl som en standard EMA som också kommer att ge ett felaktigt resultat om värdena inte förändras relativt jämnt mellan provperioderna Curt Sampson 21 juni 09 på 15 21. Men det är vad jag säger jag F anser du att EMA är en interpolering av dina värden. Du görs om du lämnar alfabetet eftersom det är för att infoga det senaste genomsnittet eftersom Y inte ändrar genomsnittet. Om du säger att du behöver något som fungerar såväl som en vanlig EMA - Vad är fel med originalet Om du inte har mer information om de data du mäter kommer eventuella lokala justeringar av alpha vara bäst godtyckliga balpha 21 jun 09 vid 15 31. Jag skulle lämna alfavärdet ensam och fylla i de saknade uppgifterna . Eftersom du inte vet vad som händer under tiden du kan t prov kan du fylla i dessa prov med 0s eller hålla det föregående värdet stabilt och använda dessa värden för EMA eller någon bakåtinterpolering när du har ett nytt prov, fyll I de saknade värdena och recompute EMA. What jag försöker få på är du har en ingång xn som har hål Det finns inget sätt att komma runt faktumet du saknar data Så du kan använda en nollorderhållare eller ställa in Det till noll eller någon form av interpolation mellan xn och x N M där M är antalet saknade prover och n början på klyftan. Möjligen även med värden före n. answered 21 juni 09 på 13 35. Från att spendera en timme eller så mucking lite om matematiken för detta tror jag Det som helt enkelt varierar alfabetet kommer egentligen att ge mig en korrekt interpolering mellan de två punkterna som du pratar om men på ett mycket enklare sätt Vidare tror jag att det varierande alfabetet också kommer att hantera de prover som tas mellan standardprovtagningsintervallet Med andra ord , Jag letar efter vad du beskrivit men försöker använda matte för att ta reda på det enkla sättet att göra det Curt Sampson 21 Jun 09 vid 14 07. Jag tror inte att det finns ett sådant odjur som korrekt interpolation Du vet helt enkelt inte vad Hände i den tid du inte provtagning Bra och dålig interpolering innebär viss kunskap om vad du saknade, eftersom du måste mäta mot det för att bedöma om en interpolering är bra eller dålig. Även om det sägs kan du placera begränsningar, dvs med maximal acceleration, fart Osv. Jag tror att om du vet hur man modellerar de saknade dataen, då skulle du bara modellera de saknade dataen och sedan tillämpa EMA-algoritmen utan förändring, snarare än att ändra alfa. Bara min 2c freespace 21 juni 09 på 14 17.Detta är Exakt vad jag fick på i min redigering till frågan 15 minuter sedan Du vet helt enkelt inte vad som hände i den tid du inte provtagning, men det är sant även om du provar vid varje bestämt intervall. Således är min Nyquist kontemplation så länge du Vet vågformen ändrar inte riktningar mer än varje par prover, det verkliga provintervallet borde inte betyda och bör kunna variera. EMA-ekvationen verkar mig exakt att beräkna som om vågformen ändrats linjärt från det sista provvärdet till Den nuvarande Curt Sampson 21 juni 09 på 14 26. Jag tror inte det är helt sant Nyquist s sats kräver att minst 2 prover per period för att kunna identifiera signalen unikt. Om du inte gör det får du alias Skulle vara detsamma som sa Mpling som fs1 för en tid sedan fs2 och sedan tillbaka till fs1 och du får alias i data när du provar med fs2 om fs2 ligger under Nyquist-gränsen. Jag måste också bekänna att jag inte förstår vad du menar med att vågformen ändras linjärt från Sista provet till nuvarande Kan du tacka Cheers, Steve freespace 21 juni 09 på 14 36. Det här liknar ett öppet problem på min todo-lista Jag har ett system som utarbetats i viss utsträckning men har ingen matematisk funktion för att återställa detta förslag Yet. Update summary Vill du hålla utjämningsfaktorn alpha oberoende av den kompensationsfaktor som jag refererar till som beta här Jason s utmärkt svar som redan accepterats här fungerar bra för mig. Om du också kan mäta tiden sedan det sista provet togs i avrundat Multiplar av din konstanta provtagningstid - så 7 8 ms sedan senaste provet skulle vara 8 enheter, som kan användas för att applicera utjämningen flera gånger. Använd formeln 8 gånger i det här fallet. Du har effektivt gjort en utjämning inriktad mer mot S det nuvarande värdet. För att få en bättre utjämning måste vi tweak alfanumeriska samtidigt som vi använder formeln 8 gånger i föregående fall. Vad kommer denna utjämning approximation miss. It har redan missat 7 prover i exemplet ovan. Detta approximerades i Steg 1 med en utplattad omfördelning av nuvärdet ytterligare 7 gånger. Om vi ​​definierar en approximationsfaktor beta som kommer att appliceras tillsammans med alfa som alfa beta istället för bara alfa, antar vi att de 7 missade proverna bytte Smidigt mellan de föregående och nuvarande provvärdena. Svarade 21 juni 09 på 13 35. Jag tänkte på det här, men lite mucking om med matematiken fick mig till den punkt där jag tror det, snarare än att använda formeln åtta gånger med Provvärdet kan jag göra en beräkning av en ny alfa som tillåter mig att använda formeln en gång och ge mig samma resultat Vidare skulle detta automatiskt hantera frågan om prover som är förskjutna från exakta provtider Curt Sampson Jun 21 0 9 på 13 47. Enstaka ansökningar är bra Vad jag inte är säker på ännu är hur bra approximationen av de 7 saknade värdena är. Om kontinuerlig rörelse gör värdet jitter mycket över 8 millisekunder kan approximationerna vara ganska av Verkligheten Men om du är provtagning med 1ms högsta upplösning, med undantag för de fördröjda proverna du redan har funnit jitteren inom 1ms är inte relevant. Fungerar denna resonemang för dig Jag försöker fortfarande övertyga mig själv 21 juni 09 kl 14 08. Rätt att Är faktorn beta från min beskrivning En beta-faktor skulle beräknas baserat på skillnadsintervallet och nuvarande och tidigare prover. Den nya alfasen kommer att vara alfa-beta men den kommer endast att användas för det provet medan du verkar flytta alfabetet i Formel, tenderar jag mot konstant alfa-utjämningsfaktor och en självständig beräknad beta en avstämningsfaktor som kompenserar för prover som saknas just nu nik 21 juni 09 vid 15 23. Exponentialfilter. Denna sida beskriver exponentiell fi Ltering, det enklaste och mest populära filtret Detta är en del av avsnittet Filtrering som ingår i En guide till feldetektering och diagnos. Överblick, tidskonstant och analogt motsvarighet. Det enklaste filtret är exponentiellt filter Det har bara en inställningsparameter Än provintervallet Det krävs att endast en variabel lagras - den tidigare utsignalen. Det är ett IIR-autoregressivt filter. Effekterna av en ingångsändring sönderfaller exponentialt tills gränserna för bildskärmar eller datorräkningar döljer sig. I olika discipliner används detta Filtret kallas också exponentiell utjämning I vissa discipliner som investeringsanalys kallas exponentiellt filter en exponentiellt vägt rörlig genomsnittlig EWMA eller bara exponentiell rörlig genomsnittlig EMA. Detta missbrukar den traditionella ARMA-glidande genomsnittliga terminologin för tidsserieanalys eftersom det finns Ingen inmatningshistorik som används - bara den aktuella ingången. Det är den diskreta tidsekvivalenten för den första ordenslag som vanligtvis används i Analog modellering av kontinuerliga styrsystem I elektriska kretsar är ett RC-filterfilter med ett motstånd och en kondensator en första ordningens lags. När man betonar analogi med analoga kretsar, är singeljusteringsparametern tidskonstanten, vanligtvis skriven som den lägre Fall grekiskt brev Tau Faktum är att värdena vid de enskilda provtiderna exakt matchar den ekvivalenta kontinuerliga tidsfördröjningen med samma tidskonstant. Relationen mellan den digitala implementeringen och tidskonstanten visas i ekvationerna nedan. Exponentiella filterekvationer och initialisering. Exponentiellt filter är en viktad kombination av föregående uppskattningsutgång med den nyaste inmatningsdata, med summan av vikterna lika med 1 så att utmatningen matchar ingången vid steady state. Följande filternotering är redan införd. ykay k-1 1-axel K. where xk är den råa ingången vid tiden steg kyk är den filtrerade utgången vid tiden steg ka är en konstant mellan 0 och 1, normalt mellan 0 8 och 0 99 A-1 eller a kallas ibland utjämningskonstanten. För system med ett bestämt tidssteg T mellan proverna beräknas konstanten a och lagras för enkelhets skull endast när applikationsutvecklaren anger ett nytt värde av den önskade tidskonstanten. Filtertidskonstanten i samma tidsenheter som T. For system med dataprovtagning vid oregelbundna intervall måste exponentiell funktion ovan användas med varje tidsteg, där T är tiden sedan föregående prov. Filterutmatningen är vanligtvis Initialiseras för att matcha den första ingången. När tidskonstanten närmar sig 0, a går till noll, så det finns ingen filtrering av utgången är lika med den nya ingången. Eftersom tidskonstanten blir väldigt stor, ett tillvägagångssätt 1, så att den nya ingången nästan ignoreras mycket Tung filtrering. Filtreringens ekvation ovan kan omordnas i följande prediktorkorrigeringsekvivalent. Denna form gör det tydligare att variabelestimatutmatningen för filtret förutspås som oförändrad från föregående uppskattning y K-1 plus en korrigeringsperiod baserad på den oväntade innovationen - skillnaden mellan den nya ingången xk och förutsägelsen y k-1 Denna form är också resultatet av att det exponentiella filtret härledas som ett enkelt speciellt fall av ett Kalman-filter som är Den optimala lösningen på ett uppskattningsproblem med en viss uppsättning antaganden. Step-svar. Ett sätt att visualisera driften av det exponentiella filtret är att plotta sitt svar över tiden till en stegingång. Det vill säga från och med filteringången och utgången vid 0 , Ändras ingångsvärdet plötsligt till 1 De resulterande värdena anges nedan. I ovanstående diagram delas tiden upp med filtertidskonstanten tau så att du lättare kan förutsäga resultaten under en viss tidsperiod, för vilket värde som helst av filtret Tidskonstant Efter en tid som är lika med tidskonstanten stiger filterutgången till 63 21 av sitt slutvärde Efter en tid som motsvarar 2 tidskonstanter stiger värdet till 86 47 av sitt slutvärde. Utgångarna efter tider är lika med 3,4 , Och 5 timmars nackdelar Tants är 95 02, 98 17 och 99 33 av det slutliga värdet. Eftersom filtret är linjärt betyder det att dessa procentandelar kan användas för vilken storleksform av stegändringen, inte bara för värdet av 1 som används här. Även om Stegsvaret i teorin tar en oändlig tid, från en praktisk synpunkt, tänk på det exponentiella filtret som 98 till 99 gjort svarande efter en tid som motsvarar 4 till 5 filtertidskonstanter. Variationer på exponentiellt filter. Det finns en variation av Exponentiellt filter kallas ett icke-linjärt exponentiellt filter Weber, 1980 är avsedd att kraftigt filtrera buller inom en viss typisk amplitud, men svara sedan snabbare på större förändringar. Copyright 2010 - 2013, Greg Stanley. Share this page.

No comments:

Post a Comment