Monday 6 November 2017

Flytte Gjennomsnittet Prognose Sas


Eksempelkoden på kategorien Fullkode illustrerer hvordan du beregner det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N observasjonene i et datasett eller over de siste N-observasjonene i en BY-gruppe. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Beregn det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N-observasjonene i et datasett, eller over de siste N-observasjonene i en BY-gruppe. Jeg vil bygge en prognoseverdi-rapport, i rapporten jeg bruker en naiv prognose (MA3, 3 måneders glidende gjennomsnitt) som utgangspunkt. Nå er jeg i november, jeg vil ha min prognose fra desember og dekke 12 måneder. Jeg har fullstendig forespørselshistorie frem til september. For MA3, vil jeg ha prognosen å bli bygget som under Des prognose summen av juli, august og september forespørsel 3 jan prognose (summen av aug og sep forspørsel av prognose) 3 feb værvarsel (sep prognose sum av des og jan prognose) 3 mar prognose sum av desember, jan og feb prognose utgifter til 12 måneder min datalager i understruktur (for alle mangler måned, forespørsel kvantitet er 0) ProductArea ProductLevel1 RequestPeriodDT RequestQuantity AAA bbb nov-2010 100 AAA bbb mar-2011 80 AAA bbb apr -2011 100 AAA bbb mai-2011 90 AAA bbb sep-2011 200 AAA ccc juni 2011 100 AAA ccc jul-2011 50 AAA ccc aug-2011 80 AAA ccc sep-2011 90 BBB ddd jul-2011 100 BBB eee mar-2011 80 BBB eee apr-2011 100 BBB eee mai-2011 90 Hvordan kan jeg programmere for å bygge MA3-prognose for 5 sykluser: smileyconfused: Som en del av prognosen min (for eksempel fra juni 2011 til okt-2011) Jeg bruker et glidende gjennomsnitt basert på tre observasjoner. Beregning av dette i SAS Jeg har klart å gjøre det bare for utfallsdata og klarte ikke å gjøre det for prognosedata. Det glidende gjennomsnittet for en bestemt måned bør være gjennomsnittet for de samme månedene tre år tilbake. Jeg har prøvd forskjellige slags syntaks, men jeg har ikke funnet noe som gjør en riktig beregning for verdier etter mai 2014 (mitt siste utfall). Denne syntaksen skaper korrekte verdier fram til mai 2014. Etter at alt er tomt (jeg har laget MA etter det på flere måter, men aldri rett). proc expand dataQQQ outQQQQ transformout (reverse movave 3 reverse) Eventuelle ideer jeg tror det skal fungere fra dette oppsettet. Proc expand er ganske vanlig å transformere data enn å bruke den til prognoser. Hvis du faktisk ser etter enkle bevegelige gjennomsnitt (ikke eksponentielt vektede), kan du bruke et datastrinn. Kanskje noe som dette: Data AForecast (Dropdummy) Behold dummy Set A dummySum (dummy, ACTUAL, - Lag3 (ACTUAL)) MovAve3GDdummy3 Run p. s. kreditt går til SAS :-) Jeg har sett den typen løsning. Problemet er imidlertid at min MA ikke er så enkelt som den (de er fortsatt enkle, men ikke nok ..). For juni 2014 vil jeg ha gjennomsnittet i juni 2011-2013. Og så videre, derfor vil jeg ikke bare ha gjennomsnittet av de tre siste månedene. Hvordan kan jeg legge til en ved setning og en ID-variabel i løsningen Gi oss et eksempel for å illustrere problemet ditt. Jeg kan være helt feil, men jeg tror: La Periods3 La Lead5 La Multiplier12 12 måneder Data A (Dropi j k) Format Date Date9. Gjør k1 til 3 Gjør j1 til 5 Gjør i1 til 12 DateMDY (i, 1, j2000) ACTUALRound (Normal (1) k20) k som Standard Avvik IDk Utgang End End End End Kjør enkelt sesongmessig () Flytende gjennomsnitt Data AForecast (KeepID Date ACTUAL MovAve) Set A By ID Array dummy dummy1-dummy12 Array dummysum dummysum1-dummysum12 Array dummydrop dummydrop1-dummydrop12 Behold dummysum1-dummysum12 Gjør I1 til 12 Hvis Måned (Dato) eq Jeg Gjør dummy ACTUAL dummydrop LagampCombLag..ID Så Teller0 Gjør I1 Til 12 dummysum 0 End End Count1 Hvis teller gt ampCombLag. Så gjør jeg i1 til 12 dummysum Sum (dummysum, dummy, - dummydrop) End End Else Do I1 til 12 dummysum Sum (dummysum, dummy) End End Hvis teller ge ampCombLag. Så gjør jeg1 til 12 hvis ikke mangler (dummy) Så dummysumactdummysum End MovAvedummysumactampPeriods. Avslutt Kjør fyll inn bly Data AForecastLead (Dropi) Behold dato-ID MveAve Set AForecast Med ID Hvis Last. ID Utfør deretter I1 til ampLead. DateIntNX (måned, dato, 1, samme) ACTUAL. Output End End Output Kjør Takk Utosas. Jeg kunne egentlig ikke starte med dette etter retur fra ferien, men nå kan jeg finne litt tid, og jeg har allerede funnet litt bruk av svaret ditt. Men jeg er ikke der ennå. Jeg tror jeg trenger ikke din datatrinn fordi jeg allerede har en datavariabel manad (YYMMN6. 200801-201812) og selvfølgelig min variabel av interesse SGIRODFPANDEL (med verdier fra 200801 til 201405). Når jeg skriver min tidsregistreringstid, gjør jeg det slik: Forutsetninger for datahave utelukkende utadvendt id manadintervallMONTH gjør 1 til LENGTH movavg (SGIRODFPANDELt-12SGIRODFPANDELt-24SG IRODFPANDELt-36) 3 Da fikk jeg movavg-verdier fra 201101 til 201505. Mitt mål er imidlertid å få verdier fra 201406 til 201812. Derfor vil jeg flytte gjennomsnittsverdier som er avhengige av en blanding av SGIRODFPANDEL-verdier og movavg-verdier og noe som bare avhenger av movavg-verdier. Er det mulig Når jeg erstatter LENGTH for noe annet, virker det bare ikke. Hva gjør jeg galt? Gjennomgang av gjennomsnittlig prognose Innledning. Som du kanskje tror vi ser på noen av de mest primitive tilnærmingene til prognoser. Men forhåpentligvis er disse minst en verdig innføring i noen av databehandlingsproblemene knyttet til implementering av prognoser i regneark. I denne veinen vil vi fortsette med å starte i begynnelsen og begynne å jobbe med Moving Average prognoser. Flytte gjennomsnittlige prognoser. Alle er kjent med å flytte gjennomsnittlige prognoser, uansett om de tror de er. Alle studenter gjør dem hele tiden. Tenk på testresultatene dine i et kurs der du skal ha fire tester i løpet av semesteret. La oss anta at du fikk en 85 på din første test. Hva vil du forutsi for din andre testscore Hva tror du at læreren din ville forutse din neste testscore Hva tror du dine venner kan forutsi for neste testresultat Hva tror du at foreldrene dine kan forutsi for neste testresultat uansett alt det du kan gjøre med dine venner og foreldre, de og din lærer er veldig sannsynlig å forvente deg å få noe i området av 85 du nettopp har fått. Vel, nå kan vi anta at til tross for selvforfremmelse til vennene dine, overestimerer du deg selv og figurerer du kan studere mindre for den andre testen, og så får du en 73. Nå er det alle de bekymrede og ubekymrede går til Forvent deg at du kommer på den tredje testen. Det er to svært sannsynlige tilnærminger for dem å utvikle et estimat, uansett om de vil dele det med deg. De kan si til seg selv, at denne fyren alltid blåser røyk om hans smarts. Hes kommer til å få en annen 73 hvis han er heldig. Kanskje foreldrene vil prøve å være mer støttende og si, quote, så langt har du fått en 85 og en 73, så kanskje du burde finne på å få en (85 73) 2 79. Jeg vet ikke, kanskje hvis du gjorde mindre fest og werent vevet vasselen over alt, og hvis du begynte å gjøre mye mer å studere, kan du få en høyere score. quot Begge disse estimatene flytter faktisk gjennomsnittlige prognoser. Den første bruker bare din siste poengsum for å prognose din fremtidige ytelse. Dette kalles en flytende gjennomsnittlig prognose ved hjelp av en periode med data. Den andre er også en flytende gjennomsnittlig prognose, men bruker to perioder med data. La oss anta at alle disse menneskene bråser på ditt store sinn, har slags pisset deg av og du bestemmer deg for å gjøre det bra på den tredje testen av dine egne grunner og for å sette en høyere poengsum foran din quotalliesquot. Du tar testen og poengsummen din er faktisk en 89 Alle, inkludert deg selv, er imponert. Så nå har du den endelige testen av semesteret som kommer opp, og som vanlig føler du behovet for å få alle til å gjøre sine spådommer om hvordan du skal gjøre på den siste testen. Vel, forhåpentligvis ser du mønsteret. Nå, forhåpentligvis kan du se mønsteret. Hvilke tror du er den mest nøyaktige fløyten mens vi jobber. Nå går vi tilbake til vårt nye rengjøringsfirma som startes av din fremmedgjorte halv søster, kalt Whistle While We Work. Du har noen tidligere salgsdata som er representert av følgende del fra et regneark. Vi presenterer først dataene for en tre-års glidende gjennomsnittlig prognose. Oppføringen for celle C6 skal være Nå kan du kopiere denne celleformelen ned til de andre cellene C7 til C11. Legg merke til hvordan gjennomsnittet beveger seg over de nyeste historiske dataene, men bruker nøyaktig de tre siste perioder som er tilgjengelige for hver prediksjon. Du bør også legge merke til at vi ikke virkelig trenger å gjøre spådommene for de siste perioder for å utvikle vår siste prediksjon. Dette er definitivt forskjellig fra eksponentiell utjevningsmodell. Ive inkluderte quotpast predictionsquot fordi vi vil bruke dem på neste nettside for å måle prediksjonsgyldigheten. Nå vil jeg presentere de analoge resultatene for en to-års glidende gjennomsnittlig prognose. Oppføringen for celle C5 skal være Nå kan du kopiere denne celleformelen ned til de andre cellene C6 til C11. Legg merke til hvordan nå bare de to siste bitene av historiske data blir brukt for hver prediksjon. Igjen har jeg tatt med quotpast predictionsquot for illustrative formål og for senere bruk i prognose validering. Noen andre ting som er viktig å legge merke til. For en m-periode som beveger gjennomsnittlig prognose, brukes bare de nyeste dataverdiene for å gjøre prognosen. Ingenting annet er nødvendig. For en m-periode som beveger gjennomsnittlig prognose, legger du merke til at den første prediksjonen forekommer i periode m 1. Begge disse problemene vil være svært viktige når vi utvikler koden vår. Utvikle den bevegelige gjennomsnittsfunksjonen. Nå må vi utvikle koden for den bevegelige gjennomsnittlige prognosen som kan brukes mer fleksibelt. Koden følger. Legg merke til at inngangene er for antall perioder du vil bruke i prognosen og rekke historiske verdier. Du kan lagre den i hvilken arbeidsbok du vil ha. Funksjon MovingAverage (Historical, NumberOfPeriods) Som Single Deklarering og Initialisering av variabler Dim Item Som Variant Dim Counter Som Integer Dim Akkumulering Som Single Dim HistoricalSize Som Integer Initialiserende variabler Teller 1 Akkumulering 0 Bestemme størrelsen på Historical array HistoricalSize Historical. Count For Counter 1 To NumberOfPeriods Akkumulere riktig antall siste tidligere observerte verdier Akkumulasjonsakkumulering Historisk (HistoricalSize - NumberOfPeriods Counter) MovingAverage AkkumuleringsnummerOfPeriods Koden vil bli forklart i klassen. Du vil plassere funksjonen på regnearket slik at resultatet av beregningen vises der det skal like det følgende.

No comments:

Post a Comment