'N tyd-reeks is 'n reeks waarnemings van 'n periodieke ewekansige veranderlike. Voorbeelde hiervan is die maandelikse vraag na 'n produk, die jaarlikse eerstejaars inskrywing in 'n departement van die Universiteit en die daaglikse vloei in 'n rivier. Tydreeks is belangrik vir operasionele navorsing, want hulle is dikwels die bestuurders van beslissing modelle. 'N inventaris model ramings van toekomstige eise vereis, 'n kursus skedulering en personeel model vir 'n universiteit departement vereis ramings van toekomstige student invloei, en 'n model vir die verskaffing van waarskuwings aan die bevolking in 'n rivier bekken vereis skattings van riviervloei vir die onmiddellike toekoms. Tydreeksanalise bied gereedskap vir die kies van 'n model wat die tydreeks beskryf en met behulp van die model om toekomstige gebeure te voorspel. Modellering van die tydreeks is 'n statistiese probleem omdat waargeneem data word gebruik in berekeningsprosedures die koëffisiënte van 'n vermeende model skat. Modelle aanvaar dat waarnemings wissel lukraak oor 'n onderliggende gemiddelde waarde wat 'n funksie van tyd. Op hierdie bladsye beperk ons aandag aan die gebruik van historiese tydreeksdata 'n tyd afhanklik model skat. Die metodes is geskik vir 'n outomatiese, korttermyn voorspelling van dikwels gebruik inligting waar die onderliggende oorsake van tyd variasie is nie merkbaar verander in die tyd. In die praktyk word die voorspellings afgelei deur hierdie metodes daarna gewysig deur menslike ontleders wat inligting nie beskikbaar by die historiese data te inkorporeer. Ons primêre doel van hierdie artikel is om die vergelykings te bied vir die vier voorspelling metodes gebruik in die vooruitskatting add-in: bewegende gemiddelde, eksponensiële gladstryking, regressie en dubbel eksponensiële gladstryking. Dit is genoem glad metodes. Metodes nie oorweeg sluit kwalitatiewe vooruitskatting, meervoudige regressie, en outoregressiewe metodes (ARIMA). Diegene wat belangstel in meer uitgebreide dekking moet die voorspelling Beginsels webwerf te besoek of lees een van die verskeie uitstekende boeke oor die onderwerp. Ons gebruik die boek vooruitskatting. deur Makridakis, wielmaker en McGee, John Wiley amp Sons, 1983. Om die Excel Voorbeelde werkboek gebruik, moet jy die vooruitskatting add-in geïnstalleer. Kies die opdrag Herskakel om die skakels na die add-in te stel. Hierdie bladsy beskryf die gebruik van eenvoudige voorspelling en die notasie wat gebruik word vir die analise modelle. Dit eenvoudigste vooruitskatting metode is die bewegende gemiddelde skatting. Die metode eenvoudig gemiddeldes van die laaste m waarnemings. Dit is nuttig vir tydreekse met 'n stadig veranderende gemiddelde. Hierdie metode van mening dat die hele verlede in sy voorspelling, maar weeg onlangse ervaring swaarder as minder onlangse. Die berekeninge is eenvoudig omdat slegs die raming van die vorige tydperk en die huidige data die nuwe skatting bepaal. Die metode is nuttig vir tydreekse met 'n stadig veranderende gemiddelde. Die bewegende gemiddelde metode nie goed reageer op 'n tydreeks wat die styging of daling met tyd. Hier sluit ons 'n lineêre tendens term in die model. Die regressie benaderde model deur die bou van 'n lineêre vergelyking wat die kleinste kwadrate geskik is om die laaste m observations. I 'n wetenskaplike data logging program wat ek ontwikkel vir 'n aantal jare nou bied. Ons moet nou 'n paar funksies by te voeg, sodat dit produseer 'n bewegende gemiddelde van die data wat ingesamel. Ek kan 'n tou van myDataClass om die EIEU buffer doen skep, maar ek het gewonder wat die beste manier doen die gemiddelde kan wees. Soos jy kan sien uit die kode voorbeeld hieronder myDataClass bevat verskeie datastrukture waarvan sommige kan gemiddeld en 'n paar wat nie kan (bv die string). Die groot vraag is of daar 'n maklike manier om dit reg te kry of moet ek-kode vir elke item gemiddeld binne myDataClass skryf of moet ek herontwerp myDataClass Dankie. Dinsdag, 12 Julie, 2011 09:14 Antwoorde self aan, Ek sal 'n Klas quotDataQueue (van MyDataClass) wat homself dequeue indien die telling in die tou pas 10 items te skep. Op hierdie manier, sal jy nooit weer hoef te sorg van die aantal item in die tou van jou kode is, sal dit sorg vir word vanaf die binnekant van die tou klas gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 01:56 Dinsdag, 12 Julie, 2011 09:40 na 'n bietjie meer ondersoek, ek dink ek het gevind dat die oplossing vir jou. Jy kan die CopyTo metode gebruik om die linker items in die tou om 'n skikking te kopieer. Wees bedag Ek het die gemiddelde bereken nie, ek het net hoe jy die basis van jou berekeninge kan kry, maar dit is net die toevoeging van jou eie berekeninge gebaseer rondom jou besigheid reël vir daardie. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:56 Vrydag, 15 Julie, 2011 05:16 Op grond van my verstand, jou eis is iets soos hierdie: Dit is die data in die tou: myDataClass1. datadbl 2.1 datastr quotsomeString1quot dataarraydbl n dubbele verskeidenheid myDataClass2. datadbl 3.5 datastr quotsomeString2quot dataarraydbl n dubbele verskeidenheid myDataClass10. datadbl 9.1 datastr quotsomeString10quot dataarraydbl n dubbele verskeidenheid Nou, jy wil die gemiddelde aantal datadbl feild in elke myDataClass voorwerp te bereken, en kry die gemiddelde aantal dataarraydbl feild. Indien wel, sal ek stel voor dat jy om dieselfde ding te doen as Crazypenie voorgestel: die bou van 'n nuwe klas met die naam DataQueue: Ek hoop dit sal nuttig wees, as ek iets verkeerd verstaan, voel asseblief vry om my te laat weet. Mike Feng MSFT MSDN Community Support Terugvoer om ons te kry of Versoek Kode Voorbeeld van Microsoft Onthou asseblief om die antwoorde as antwoorde te merk as hulle help en gemorspos of hulle bied geen hulp. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:55 Vrydag, 15 Julie, 2011 03:33 Dankie Cor, kon ek dit doen soos dit maar myDataClass is eintlik baie groot en die meld stelsel kan hardloop vir 'n lang tyd so dit is meer doeltreffend vir my om rommel afskrifte van die klas I dont werklik nodig het vir die berekening van die gemiddelde. Tou lyk die maklikste manier om dit te bereik. My groot vraag is egter, hoe gemiddeld 'n klas soos hierdie Ek kry die gevoel dat ek nodig het om kode wat dit spesifiek nie vir elke tipe data in myDataClass skryf. Openbare Klas myDataClass Dinsdag, Julie 12, 2011 10:40 Op grond van my verstand, jou eis is iets soos hierdie: Dit is die data in die tou: myDataClass1. datadbl 2.1 datastr quotsomeString1quot dataarraydbl n dubbele verskeidenheid myDataClass2. datadbl 3.5 datastr quotsomeString2quot dataarraydbl n dubbele verskeidenheid myDataClass10. datadbl 9.1 datastr quotsomeString10quot dataarraydbl n dubbele verskeidenheid Nou, jy wil die gemiddelde aantal datadbl feild in elke myDataClass voorwerp te bereken, en kry die gemiddelde aantal dataarraydbl feild. Indien wel, sal ek stel voor dat jy om dieselfde ding te doen as Crazypenie voorgestel: die bou van 'n nuwe klas met die naam DataQueue: Ek hoop dit sal nuttig wees, as ek iets verkeerd verstaan, voel asseblief vry om my te laat weet. Mike Feng MSFT MSDN Community Support Terugvoer om ons te kry of Versoek Kode Voorbeeld van Microsoft Onthou asseblief om die antwoorde as antwoorde te merk as hulle help en gemorspos of hulle bied geen hulp. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:55 Vrydag, 15 Julie, 2011 03:33 AMI 'n wetenskaplike data logging program wat ek ontwikkel vir 'n aantal jare nou. Ons moet nou 'n paar funksies by te voeg, sodat dit produseer 'n bewegende gemiddelde van die data wat ingesamel. Ek kan 'n tou van myDataClass om die EIEU buffer doen skep, maar ek het gewonder wat die beste manier doen die gemiddelde kan wees. Soos jy kan sien uit die kode voorbeeld hieronder myDataClass bevat verskeie datastrukture waarvan sommige kan gemiddeld en 'n paar wat nie kan (bv die string). Die groot vraag is of daar 'n maklike manier om dit reg te kry of moet ek-kode vir elke item gemiddeld binne myDataClass skryf of moet ek herontwerp myDataClass Dankie. Dinsdag, 12 Julie, 2011 09:14 Antwoorde self aan, Ek sal 'n Klas quotDataQueue (van MyDataClass) wat homself dequeue indien die telling in die tou pas 10 items te skep. Op hierdie manier, sal jy nooit weer hoef te sorg van die aantal item in die tou van jou kode is, sal dit sorg vir word vanaf die binnekant van die tou klas gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 01:56 Dinsdag, 12 Julie, 2011 09:40 na 'n bietjie meer ondersoek, ek dink ek het gevind dat die oplossing vir jou. Jy kan die CopyTo metode gebruik om die linker items in die tou om 'n skikking te kopieer. Wees bedag Ek het die gemiddelde bereken nie, ek het net hoe jy die basis van jou berekeninge kan kry, maar dit is net die toevoeging van jou eie berekeninge gebaseer rondom jou besigheid reël vir daardie. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:56 Vrydag, 15 Julie, 2011 05:16 Op grond van my verstand, jou eis is iets soos hierdie: Dit is die data in die tou: myDataClass1. datadbl 2.1 datastr quotsomeString1quot dataarraydbl n dubbele verskeidenheid myDataClass2. datadbl 3.5 datastr quotsomeString2quot dataarraydbl n dubbele verskeidenheid myDataClass10. datadbl 9.1 datastr quotsomeString10quot dataarraydbl n dubbele verskeidenheid Nou, jy wil die gemiddelde aantal datadbl feild in elke myDataClass voorwerp te bereken, en kry die gemiddelde aantal dataarraydbl feild. Indien wel, sal ek stel voor dat jy om dieselfde ding te doen as Crazypenie voorgestel: die bou van 'n nuwe klas met die naam DataQueue: Ek hoop dit sal nuttig wees, as ek iets verkeerd verstaan, voel asseblief vry om my te laat weet. Mike Feng MSFT MSDN Community Support Terugvoer om ons te kry of Versoek Kode Voorbeeld van Microsoft Onthou asseblief om die antwoorde as antwoorde te merk as hulle help en gemorspos of hulle bied geen hulp. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:55 Vrydag, 15 Julie, 2011 03:33 Dankie Cor, kon ek dit doen soos dit maar myDataClass is eintlik baie groot en die meld stelsel kan hardloop vir 'n lang tyd so dit is meer doeltreffend vir my om rommel afskrifte van die klas I dont werklik nodig het vir die berekening van die gemiddelde. Tou lyk die maklikste manier om dit te bereik. My groot vraag is egter, hoe gemiddeld 'n klas soos hierdie Ek kry die gevoel dat ek nodig het om kode wat dit spesifiek nie vir elke tipe data in myDataClass skryf. Openbare Klas myDataClass Dinsdag, Julie 12, 2011 10:40 Op grond van my verstand, jou eis is iets soos hierdie: Dit is die data in die tou: myDataClass1. datadbl 2.1 datastr quotsomeString1quot dataarraydbl n dubbele verskeidenheid myDataClass2. datadbl 3.5 datastr quotsomeString2quot dataarraydbl n dubbele verskeidenheid myDataClass10. datadbl 9.1 datastr quotsomeString10quot dataarraydbl n dubbele verskeidenheid Nou, jy wil die gemiddelde aantal datadbl feild in elke myDataClass voorwerp te bereken, en kry die gemiddelde aantal dataarraydbl feild. Indien wel, sal ek stel voor dat jy om dieselfde ding te doen as Crazypenie voorgestel: die bou van 'n nuwe klas met die naam DataQueue: Ek hoop dit sal nuttig wees, as ek iets verkeerd verstaan, voel asseblief vry om my te laat weet. Mike Feng MSFT MSDN Community Support Terugvoer om ons te kry of Versoek Kode Voorbeeld van Microsoft Onthou asseblief om die antwoorde as antwoorde te merk as hulle help en gemorspos of hulle bied geen hulp. Gemerk as antwoord deur Mike Feng Moderator Woensdag, Julie 20, 2011 13:55 Vrydag, 15 Julie, 2011 03:33 AMAverages / Eenvoudige bewegende gemiddelde Gemiddeldes / Eenvoudige bewegende gemiddelde U word aangemoedig om hierdie taak op te los volgens die taakbeskrywing, met behulp van enige taal wat jy kan weet. Berekening van die eenvoudige bewegende gemiddelde van 'n reeks van getalle. Skep 'n Stateful funksie / klas / instansie wat 'n tydperk neem en gee 'n roetine dat 'n aantal neem as argument en gee 'n eenvoudige bewegende gemiddelde van sy argumente tot dusver. 'N Eenvoudige bewegende gemiddelde is 'n metode vir die berekening van 'n gemiddelde van 'n stroom van getalle met slegs gemiddeld die afgelope 160 P 160 nommers van die stroom, 160 waar 160 P 160 is bekend as die tydperk. Dit kan toegepas word deur die roeping van 'n parafering roetine met 160 P 160 as sy argument, 160 I (P), 160 wat dan 'n roetine dat wanneer geroep met individuele, opeenvolgende lede van 'n stroom van getalle, bere die gemiddelde van sou terugkeer (up om), die laaste 160 P 160 van hulle, kan noem dit 160 SMA (). Die woord 160 Stateful 160 in die taak beskrywing verwys na die behoefte aan 160 SMA () 160 om sekere inligting tussen oproepe onthou om dit: 160 Die tydperk, 160 P 160 N bestel houer van ten minste die laaste 160 P 160 nommers uit elk van sy individuele oproepe. Stateful 160 beteken ook dat opeenvolgende oproepe na 160 I (), 160 die initializer, 160 moet afsonderlike roetines wat doen 160 nie 160 aandele gered staat sodat hulle kan gebruik word op twee onafhanklike strome van data terugkeer. Pseudo-kode vir die implementering van 160 SMA 160 is: Hierdie weergawe maak gebruik van 'n aanhoudende tou om die mees onlangse p waardes hou. Elke funksie teruggekeer van init-bewegende-gemiddelde het sy toestand in 'n atoom met 'n tou waarde. Dit implementering gebruik 'n omsendbrief lys van die nommers in die venster op te slaan aan die begin van elke iterasie wyser verwys na die lys sel wat hou die waarde net beweeg by die venster uit en vervang moet word met die net toegevoegde waarde. Met behulp van 'n afsluiting wysig Tans hierdie SMA cant nogc wees omdat dit 'n sluiting op die wal ken. Sommige ontsnapping analise kan die hoop toekenning te verwyder. Met behulp van 'n struct wysig Hierdie weergawe vermy die hoop toekenning van die sluiting behoud van die data in die stapel raamwerk van die hooffunksie. Dieselfde uitset: Om te verhoed dat die drywende punt benaderings hou opstapel en groei, kan die kode 'n periodieke som uit te voer op die hele ronde tou skikking. Dit implementering produseer twee (funksie) voorwerpe deel staat. Dit is idiomatiese in E te skei insette van uitset (lees en skryf) eerder as om dit kombineer in een voorwerp. Die struktuur is dieselfde as die implementering van Standard DeviationE. Die onderstaande elikser program genereer 'n anonieme funksie met 'n ingeboude tydperk p, wat gebruik word as die tydperk van die eenvoudige bewegende gemiddelde. Die aanloop funksie lees numeriese insette en gee dit aan die nuutgeskepte anonieme funksie, en dan inspekteer die resultaat te STDOUT. Die uitset word hieronder getoon, met die gemiddelde, gevolg deur die gegroepeer insette, wat die basis vorm van elke bewegende gemiddelde. Erlang het sluitings, maar onveranderlike veranderlikes. 'N Oplossing is dan om prosesse en 'n eenvoudige boodskap verby gebaseer API te gebruik. Matrix tale roetines om die sweef avarages vir 'n gegewe volgorde van items bereken. Dit is minder doeltreffend te loop as in die volgende opdragte. Voortdurend gevra vir 'n inset ek. wat by die einde van 'n lys T1. T1 kan gevind word deur te druk 2ND / 1, en gemiddelde kan gevind word in Lys / OPS druk op die program te beëindig. Funksie wat 'n lys met die gemiddeld data van die verskaf argument program wat 'n eenvoudige waarde terug by elke aanroeping terug: lys is die lys word gemiddeld: p is die tydperk: 5 opbrengste die gemiddeld lys: Voorbeeld 2: Die gebruik van die program movinav2 (i , 5) - Inisialiseer bewegende gemiddelde berekening, en definieer tydperk van 5 movinav2 (3, x): x - nuwe data in die lys (waarde 3), en gevolg sal word gestoor op veranderlike x, en vertoon movinav2 (4 x) : x - nuwe data (waarde 4), en die nuwe gevolg sal gestoor word op veranderlike x, en vertoon (43) / 2. Beskrywing van die funksie movinavg: veranderlike r - is die gevolg (die gemiddeld lys) wat veranderlike sal teruggestuur word ek - is die indeks veranderlike, en dit dui op die einde van die sub-lys die lys word gemiddeld. veranderlike Z - 'n helper veranderlike Die funksie gebruik veranderlike i om vas te stel watter waardes van die lys sal in die volgende gemiddelde berekening in ag geneem word. By elke iterasie, veranderlike i dui op die laaste waarde in die lys wat gebruik sal word in die gemiddelde berekening. So ons moet net om uit te vind wat die eerste waarde in die lys sal wees. Gewoonlik goed moet p elemente oorweeg, sodat die eerste element sal die een geïndekseer deur (i-P1) te wees. Maar op die eerste iterasies wat berekening gewoonlik negatief sal wees, sodat die volgende vergelyking negatiewe indekse sal vermy: Max (i-p1,1) of, reël die vergelyking, Max (i-p, 0) 1. of, die reël van die vergelyking, (i - (Max (IP, 0) 1) 1), en dan - maar die aantal elemente op die eerste iterasies sal ook kleiner wees, sal die korrekte waarde (begin indeks 1 einde indeks) wees , (i-Max (IP, 0)). Veranderlike Z hou die algemene waarde (maksimum (IP), 0) sodat die beginindex sal wees (Z1) en die numberofelements sal wees (iz) die middel (lys, Z1, iz) sal die lys van waarde wat sal gemiddeld som terugkeer ( .) sal hulle som som (.) / (iz) ri hulle sal gemiddeld en stoor die resultaat in die toepaslike plek in die lys gevolg behulp van 'n sluiting en die skep van 'n functionI nodig om tred te hou van die laaste 7 dae werksure in 'n woonstel te hou lêer lees lus. Die gebruik om fatigueability werk roosters te meet. Op die oomblik het ek iets wat werk, maar dit lyk eerder uitgebreide en Ek is nie seker of Theres 'n patroon dis meer bondige. Op die oomblik het ek 'n Java klas met 'n statiese skikking na die laaste x dae data te hou, en dan as ek deur die lêer te lees, ek afkap die eerste element en beweeg die ander 6 (vir 'n week aan die rol totaal) terug vir een. Die verwerking van hierdie statiese skikking word gedoen in sy eie metode dws. My vraag: is dit 'n redelike ontwerp benadering, of is daar iets verblindend duidelik en eenvoudig om hierdie taak Dankie ouens gevra 30 Augustus 11 van die 14:33 Dankie baie ouens doen: I39ve het die boodskap gekry: gebruik 'n hoër vlak voorwerp en ontgin die relevante metodes of 'n omsendbrief buffer. Groot antwoorde, almal van hulle. As jy daaroor dink, wat jy altyd toegang tot die hele skikking nodig sodat jy ontslae te raak van daardie eerste inskrywing kan kry - wat ek wasn39t 100 seker van my eie. I39m verlig dat ek hadn39t gemis sowat 1 sak en was basies op 'n redelike, indien nie doeltreffende en kortaf spoor Dit is wat ek graag oor hierdie webwerf: hoë-gehalte, relevante antwoorde van mense wat hul SHT weet. â € Pete855217 30 Augustus 11 by 15:05 Hoekom doen jy inisialiseer runningTotal om nul Wat is die tipe Waar verklaar Dit sal goed doen as jy 'n paar kode monsters wat werklike Java-kode lyk. jou funksie nie te veel: aanbeweeg, sal my kritiek op die volgende wees. 'N funksie, of metode, moet samehangende wees. Meer toepaslik, moet hulle een ding en net een ding om te doen. Erger nog, wat gebeur in jou lus wanneer x 5 Jy runningTotal6 kopieer na runningTotal5. maar dan het jy twee kopieë van dieselfde waarde by posisie 5 en 6. In jou ontwerp, jou funksie beweeg / skud die items in jou reeks word bereken dat die totale druk dinge om standaardfout die totale Dit maak te veel terug. My eerste voorstel is nie om dinge rond te beweeg in die skikking. In plaas daarvan, te implementeer 'n omsendbrief buffer en gebruik dit in plaas van die skikking. Dit sal jou ontwerp te vereenvoudig. My tweede voorstel is dinge af te breek in funksies wat samehangende is: 'n datastruktuur ( 'n omsendbrief buffer) wat jou toelaat om by te voeg om dit (en dat druppels die oudste inskrywing wanneer dit sy kapasiteit bereik.) Het die data struktuur te implementeer 'n interator het 'n funksie wat die totale bereken op die iterator (jy dont care as jy die totale uit 'n skikking, lys of omsendbrief bufer is bereken.) hoef noem dit totaal. Noem dit som, en dit is wat jy berekening. Dis wat id doen :) That39s groot inligting Luis egter onthou dit funksie is 'n klein deel van die funksie van die klas, en dit sou overkill wees om te veel kode te voeg om dit perfek te maak. Jy is tegnies korrek, en ek verstaan my kode nie 39too much39 maar terselfdertyd soms it39s beter om te dwaal op die kant van kleiner, duideliker kode as gaan na perfeksie. Gegewe my Java vaardighede, selfs die maak van die pseudokode jy beskryf saamstel sou my blaas my begroting op hierdie (), maar dankie vir die duidelike beskrywing. â € Pete855217 31 Augustus 11 by 02:23 Hmmm, it39s nie oor perfeksie nie, maar oor gevestigde industriële praktyke wat ons het geweet vir die laaste 3 dekades. Skoon-kode is altyd een wat verdeel. Ons het dekades van bewyse wat daarop dui dit is die pad om te gaan in die algemene geval (in terme van koste-effektiwiteit, defek vermindering, begrip, ens). tensy dit 'weggooi-kode vir 'n eenmalige soort ding. Dit is nooit duur om dit te doen wanneer 'n mens 'n probleem-analise op hierdie wyse begin. Kodering 101, breek die probleem en die kode volg, nie overkill of moeilik) uitvoering maak luis. espinal 31 Augustus 11 by 15:55 Jou taak is te eenvoudig en die hoek te benader jy aangeneem is beslis goed vir die werk. Maar, as jy wil 'n beter ontwerp gebruik, jy moet ontslae raak van al dat die getal beweging kry jy 'n beter gebruik 'n EIEU tou en maak goeie gebruik van druk en pop metodes wat manier die kode gewoond te besin enige data verkeer, net die twee logika aksies van nuwe data en verwyder data ouer as 7 dae. antwoord 30 Augustus 11 van die 14:49
No comments:
Post a Comment