Monday 9 October 2017

Moving Genomsnittet Aggregering


Neil-lunn Jag ville beräkna ett rullande medelvärde så i 3 månaders intervaller Jag vill ta en dag och medeltalet den dagen med de senaste 3 månaderna data och sedan göra det genomsnittet för varje dag i 50 år de närmaste 50 åren Så Jag tror att vissa värden skulle överlappa för medeltal. Hur skulle du göra det med kartaReduce istället kan du inte göra det med aggregeringsramen Jag tror att du har rätt, jag måste jämföra separata dokument Tack mc Aug 6 14 på 12 53. Jag don T tror att aggregeringsramen kan göra detta för flera datum i den nuvarande versionen 2 6, eller det kan i alla fall inte göra det utan någon seriös gymnastik. Anledningen är att aggregationsrörledningen behandlar ett dokument åt gången och endast ett dokument, så det skulle vara nödvändigt att på något sätt skapa ett dokument för varje dag som innehåller de föregående 3 månaderna av relevant information. Detta skulle vara som en gruppstadium som skulle beräkna medelvärdet, vilket innebär att det tidigare skedet skulle ha producerat ca 90 kopior av varje dag s rec ord med någon särskiljande nyckel som kan användas för gruppen. Så jag kan inte se detta för mer än en dag i taget i en enda aggregering, jag är glad att vara fel och måste redigera ta bort detta svar om någon hittar ett sätt att göra det även om det är så komplicerat det är inte praktiskt En PostgreSQL PARTITION-typfunktion skulle göra jobbet här kanske den funktionen kommer att läggas en dag. ansvarig 7 aug 14 kl 17 49.så då måste du antingen fråga för delar av detta och beräkna det rörliga genomsnittet i något språk rubin, python, nod eller kör en aggregatfråga för varje intervall är det verkligen den bästa lösningen Har det bara fel, finns det ett bättre sätt att göra detta med kart - Minska att jag inte kan tänka på mc 7 augusti 14 på 18 41. Jag har inte tänkt på karta-minska. I allmänhet försöker jag undvika att använda karta-reducera eftersom det har en betydande prestationsstraff och är inte lika säker eftersom du kör custom kodserver-sida Jag försöker att tänka på det, eller kanske någon annan kommer att laga mat upp en mr lösning wdberkeley Aug 7 14 på 18 44. Jag tror att jag kan ha ett svar på min egen fråga Karta Reducera skulle göra det Första gången avge att kartlägga varje dokument till det s grannar att det borde vara medeltal med, använd sedan minska till Avg varje array och att nya array av medelvärden ska vara det glidande medelvärdet tomt övertid eftersom det skulle vara det nya datumintervallet du bryr dig om. Jag antar att jag behövde förstå karta-minska bättre. Till exempel om vi ville göra det I minnet senare kan vi skapa samlingar. Det ser rätt ut. Den här funktionen är experimentell och kan ändras eller tas bort helt i en framtida version. Elastic kommer att göra ett bra sätt att lösa några problem, men experimentella funktioner är inte föremål för stöd SLA Av de officiella GA-funktionerna. Ge en ordnad serie data, Flyttande medelaggregatet kommer att glida ett fönster över data och avge det genomsnittliga värdet för det här fönstret. Till exempel, med tanke på data 1, 2, 3, 4, 5, 6, 7 , 8, 9, 10 kan vi beräkna en enkel movin g medelvärde med Windows-storlek på 5 enligt följande. Flyttande medelvärden är en enkel metod för att släta sekventiella data. Flyttande medel tillämpas vanligtvis på tidsbaserade data, såsom aktiekurser eller servervärden. Utjämningen kan användas för att eliminera högfrekventa fluktuationer eller slumpmässiga buller, vilket gör att lägre frekvenstrender lättare kan visualiseras, såsom säsonglighet. Den linjära modellen tilldelar linjär viktning till punkter i serien, så att äldre datapoäng, t. ex. de i början av fönstret, bidrar med en linjärt mindre mängd till Totalt medelvärde Den linjära viktningen bidrar till att minska fördröjningen bakom data s, eftersom äldre punkter har mindre inflytande. En linjär modell har inga speciella inställningar att konfigurera. Liksom den enkla modellen kan fönsterstorleken ändra det rörliga genomsnittets beteende. Till exempel, Ett litet fönsterfönster 10 kommer noggrant att spåra data och bara släta ut småskaliga fluktuationer. Figur 3 Linjärt glidande medelvärde med fönster av storlek 10. Däremot en linjär rörelse Medelvärdet med större fönsterfönster 100 släpper ut alla högre frekvensfluktuationer och lämnar endast lågfrekventa och långsiktiga trender. Det tenderar också att ligga bakom de faktiska data med en betydande mängd, men oftast mindre än den enkla modellen. Figur 4 Linjär rörelse medelvärde med fönster av storlek 100.Multiplicativ Holt-Wintersedit. Multiplicative anges genom inställningstyp mult Denna variation är att föredra när säsongsmässig påverkan multipliceras med din data E g om säsongspåverkan är x5 data, istället för att helt enkelt lägga till den. Standardvärdena för alfa och gamma är 0 3 medan beta är 0 1 Inställningarna accepterar alla float från 0-1 inklusive Standardvärdet för perioden är 1.Multiplicativ Holt-Winters-modell kan minimeras. Multiplicativ Holt-Winters fungerar genom att dela varje datapunkt med säsongsvärdet Det här är problematiskt om någon av dina data är noll eller om det finns luckor i data eftersom det resulterar i en skillnad mot noll. För att bekämpa detta, stöder mult Holt-Winters alla värderingar Es med en mycket liten mängd 1 10 -10 så att alla värden är icke-noll. Detta påverkar resultatet, men endast minimalt Om dina data är noll eller om du föredrar att se NaN när noll s uppstår kan du inaktivera detta beteende med pad false. All den rörliga genomsnittsmodellen stöder ett prediktionsläge som kommer att försöka extrapolera in i framtiden med tanke på det nuvarande släta, glidande medlet Beroende på modell och parameter kan dessa förutsägelser vara eller inte vara korrekta. Förutsättningar aktiveras av lägger till en förutsägbar parameter för varje glidande genomsnittlig aggregering, med angivande av antalet förutsägelser som du vill lägga till i slutet av serien. Dessa förutsägelser kommer att fördelas ut i samma intervall som dina skopor. De enkla linjära och ewma-modellerna ger alla platta förutsägelser Huvudsakligen konvergerar på medelvärdet av det sista värdet i serien, vilket ger en platt. Figur 11 Enkelt glidande medelvärde med fönster av storlek 10, förutsäga 50. I motsats kan holtmodellen extrapolera baserat på lokal eller glo Bal konstanta trender Om vi ​​ställer in ett högt betavärde kan vi extrapolera baserat på lokala konstanta trender, i det här fallet kommer förutsägningarna att gå ner, eftersom data i slutet av serien var på väg nedåt. Figur 12 Hålllinjär glidande medelvärde med fönster av storlek 100, förutsäga 20, alfa 0 5, beta 0 8.An kontrast, om vi väljer en liten beta är förutsägelserna baserade på den globala konstanta trenden. I denna serie är den globala trenden något positiv, så förutsägelsen gör en skarp u-sväng och börjar en positiv lutning. Figur 13 Dubbel Exponentiell glidande medelvärde med fönster av storlek 100, förutsäga 20, alfa 0 5, beta 0 1.The holtwinters-modellen har potential att leverera de bästa förutsägelserna, eftersom den också innehåller Säsongssvängningar i modellen. Figur 14 Holt-Winters glidande medelvärde med fönster av storlek 120, förutsäga 25, alfa 0 8, beta 0 2, gamma 0 7, period 30.A sedan jag skrev om att beräkna glidande medelvärde av levande data med hjälp av Buffertmetoden i reaktiva tillägg Ethod skapar en buffert med uppdateringar vars gränser du, som utvecklaren anger, ger dig denna körbuffert med varje efterföljande uppdatering. Den nuvarande uppdateringen skulle vara sist i bufferten, vilket gör det möjligt att beräkna det inklusiva glidande medlet, en där den sista faktorn ingår i resultaten. När jag var tvungen att göra något liknande med statisk data i en applikation som inte använde RX, hade bud en väldefinierad LINQ-baserad dataleverantör Till min förvåning fann jag att LINQ inte ger en buffring metod ur lådan Till min större överraskning fann jag att det var lätt att implementera en Koden är nedan. Jag ville inte anta att vi bara skulle utföra genomsnittliga aggregeringar, därför höll jag min lösning ganska generisk. Det skulle vara uppe till användaren av min funktion för att koda upp aggregeringslogiken I det här inlägget skulle jag visa genomsnittliga aggregeringar, men användaren av denna funktion skulle kunna göra vad som helst med en viss uppsättning objekt. Först, låt s definiera en datastruktur, ring upp ed Aggregation som skulle användas för att paketera originalet och lägga till en ny AggregatedValue-egenskapslinje 16 som vi skulle vara befolkade under aggregeringsprocessen. Då definierar jag ett urval TimedDataPoint som skulle användas för att hålla aktiekurserna i mitt exempel. Låt oss definiera en LINQ-funktion som skulle buffra en uppsättning objekt i den ursprungliga uppsättningen och skulle returnera en modifierad uppsättning med färre objekt, där varje objekt skulle innehålla ett aggregeringsvärde för den buffrade uppsättningen. För att påstå framgång måste jag testa funktionen Att spela med riktiga siffror, låt oss få historien om varje vecka MSFT-avkastning från yahoo Låt oss exportera dessa data för att utmärka och skapa uppsättning glidande medelvärden av Stäng pris för att testa våra data Här är vad kalkylbladet ska se ut. Vi kan sedan skapa ett provdataset För att representera de ursprungliga slutkurserna Vi kan sedan testa vår funktion, så att jag skapar en glidande medelberäkning på datasetet Koden är nedan. Först skapar jag datasetet, sedan jag itererar genom datasetet, pipar d Ata i min aggregatfunktion som i sin tur kallar mig tillbaka och ber mig att göra 2 viktiga beslut. 1 Skulle det fortsätta att buffra linjerna 60 och 71 2 Givet en buffert ger en aggregering Linje 61 i det första exemplet och raderna 74-82 i Sekund. Utgången i urvalet borde matcha 6-dagars Avg-kolumnen i bifogade kalkylblad. Jag hittade denna aggregatfunktion väldigt användbar. Hoppas du kommer också.

No comments:

Post a Comment