Glidande Medelvärde Missing Värden


En enkel och generell metod för att fylla i saknade data, om du har körningar med fullständiga data, är att använda linjär regression. Säg att du har 1000 körningar på 5 i rad utan att någon saknas. Ställ in 1000 x 1-vektorn y och 1000 x 4-matrisen X: Regression ger dig 4 nummer a b c d som ger bäst match för dina 1000 rader data mdash olika data, olika a b c d. Då använder du dessa a b c d för att uppskatta (förutsäga, interpolera) saknar wt0. (För mänskliga vikter, förväntar jag mig abcd att vara runt 14.) (Det finns zillioner av böcker och papper om regression, på alla nivåer. För anslutningen med interpolering vet jag inte om en bra introduktion någon) Stata: Data Analys och statistisk programvara Nicholas J. Cox, Durham University, Storbritannien Christopher Baum, Boston College egen, ma () och dess begränsningar Statarsquos mest uppenbara kommando för att beräkna glidande medelvärden är ma () funktionen av egen. Med tanke på ett uttryck skapar det ett periodiskt rörligt medelvärde för detta uttryck. Som standard tas det som 3. måste vara udda. Men som den manuella inmatningen indikerar kan egen ma () kanske inte kombineras med varlist:. och av den anledningen är det inte tillämpligt på paneldata. I vilket fall som helst står den utanför uppsättningen kommandon som är specifikt skrivna för tidsserier, se tidsserier för detaljer. Alternativa metoder För att beräkna glidande medelvärden för paneldata finns det minst två val. Båda är beroende av att datasetet tidigare har ställts in. Det här är väldigt mycket värt att göra: inte bara kan du spara dig själv upprepade gånger med att ange panelvariabel och tidsvariabel, men Stata beter sig smart med några luckor i data. 1. Skriv din egen definition med hjälp av generera Använda tidsserier operatörer som L. och F. Ge definitionen av det rörliga genomsnittsvärdet som argumentet för ett genereringsuttag. Om du gör det här är du naturligtvis inte begränsad till lika viktiga (obevätade) centrerade rörliga medelvärden beräknade av egen ma (). Till exempel skulle lika viktiga treårs glidande medelvärden ges av och vissa vikter kan enkelt specificeras: Du kan givetvis ange ett uttryck som logg (myvar) istället för ett variabelt namn som myvar. En stor fördel med detta tillvägagångssätt är att Stata automatiskt gör det rätta för paneldata: ledande och försvagade värden utarbetas inom paneler, precis som logiken dikterar att de borde vara. Den mest anmärkningsvärda nackdelen är att kommandoraden kan bli ganska lång om det rörliga genomsnittet innefattar flera termer. Ett annat exempel är ett ensidigt rörligt medelvärde baserat endast på tidigare värden. Detta kan vara användbart för att generera en adaptiv förväntning av vilken variabel som kommer att baseras uteslutande på information till dags dato: vad kan någon förutspå för den aktuella perioden baserat på de fyra senaste värdena, med hjälp av ett fast viktningsschema (en 4-tidsperiod kan vara speciellt vanligt förekommande med kvartalsvisa tidsserier.) 2. Använd eget filter () från SSC Använd det användarskrivna egenfunktionsfiltret () från egenmore-paketet på SSC. I Stata 7 (uppdaterad efter 14 november 2001) kan du installera det här paketet efter vilket hjälp egenmore pekar på detaljer på filteret (). De två ovanstående exemplen skulle göras (I denna jämförelse är genereringsmetoden kanske mer genomskinlig, men vi kommer att se ett exempel på motsatsen i ett ögonblick.) Lags är en numlist. Lederna är negativa lags: i det här fallet -11 expanderar till -1 0 1 eller led 1, lag 0, lag 1. Koef-ficienterna, en annan numlist, multiplicera motsvarande släpande eller ledande objekt: i det här fallet är dessa föremål F1.myvar . Myvar och L1.myvar. Effekten av normaliseringsalternativet är att skala varje koefficient med summan av koefficienterna så att koefficienten (1 1 1) normaliserar motsvarar koefficienterna 13 13 13 och koefficienten (1 2 1) normaliserar motsvarar koefficienterna 14 12 14 Du måste ange inte bara lags men även koefficienterna. Eftersom egen, ma () ger det lika viktiga fallet är huvudrincipen för egen, filter () att stödja det ojämnt viktiga fallet, för vilket du måste ange koefficienter. Det kan också sägas att förplikta användarna att specificera koefficienter är ett litet extra tryck på dem för att tänka på vilka koefficienter de vill ha. Den huvudsakliga motiveringen för lika vikter är, vi antar, enkelhet, men lika vikter har äckliga frekvensdomänegenskaper, för att bara nämna ett övervägande. Det tredje exemplet ovan kan vara vilket är ungefär lika komplicerat som genereringsmetoden. Det finns fall där egen, filter () ger en enklare formulering än att generera. Om du vill ha ett nio-termins binomialfilter, vilka klimatologer tycker är användbara ser det ut att det kanske är mindre hemskt än, och lättare att få rätt än, precis som med genereringsmetoden, fungerar egen, filter () ordentligt med paneldata. Faktum är att det som sagt ovan beror på att datasetet tidigare har ställts in. En grafisk spets Efter att du har beräknat dina glidande medelvärden kommer du förmodligen att se på en graf. Det användarskrivna kommandot tsgraph är smart om tsset dataset. Installera den i en uppdaterad Stata 7 av ssc inst tsgraph. Vad sägs om delning med om ingen av ovanstående exempel använder sig av om begränsningar. Faktum är att egen, ma () inte tillåter om det ska anges. Ibland vill folk använda om man beräknar glidande medelvärden, men användningen är lite mer komplicerad än det vanligtvis är. Vad förväntar du dig av ett glidande medelvärde beräknat med if. Låt oss identifiera två möjligheter: Svag tolkning: Jag vill inte se några resultat för de uteslutna observationerna. Stark tolkning: Jag vill inte ens att du ska använda värdena för de uteslutna observationerna. Här är ett konkret exempel. Antag som en följd av vissa om villkor ingår observationer 1-42 men inte observationer 43 på. Men det rörliga genomsnittsvärdet för 42 beror bland annat på värdet för observation 43 om medelvärdet sträcker sig bakåt och framåt och är av längd åtminstone 3, och det kommer också att bero på några av observationerna 44 under vissa omständigheter. Vår gissning är att de flesta skulle gå för den svaga tolkningen, men om det är korrekt, kan inte filter () heller stödja om. Du kan alltid ignorera vad du donrsquot vill eller ens ställa in oönskade värden att sakna efteråt genom att använda ersättare. En anteckning om saknade resultat i slutet av serierna Eftersom rörliga medelvärden är funktioner av lags och leads, producerar egen, ma (), där lags och leads inte existerar, i början och slutet av serien. Ett alternativ nomiss tvingar beräkningen av kortare, ocenterade glidmedel för svansarna. Däremot, varken generera eller egna, filter () gör, eller tillåter, något speciellt för att undvika att sakna resultat. Om något av värdena som behövs för beräkning saknas, saknas det resultatet. Det är upp till användarna att bestämma om och vilken korrigering som krävs för sådana observationer, förmodligen efter att ha tittat på datasetet och med tanke på vilken underliggande vetenskap som kan bäras. Beräkning av rörliga medelvärden med saknade värden satte obs 10 obs var 0, nu 10 tsset t-tidsvariabel: t, 1 till 10 delta: 1 enhet tssmooth ma y3 y, w (1 1 1) Ju mjukare pålagd var (13) x (t-1) 1x (t) x (t1) x (T1) x (t-1) 1x (t) x (t1) x (t2) x (t) y - TSSmooth fyller så mycket som möjligt i slutet av serierna (vilket inte är detsamma som att behandla missningar som 0s, annars skulle resultaten ovan inte erhållas). Jeff kan åsidosätta resultatet av - tssmooth-om han inte vill ha det. Ersätt y3. Om saknas (L1.y, F1.y) ersätt y5. om saknas (L1.y, L2.y, F1.y, F2.y) Till exempel saknas L1.y i början av en serie y och F1.y i slutet. Detta fungerar även med paneldata. Ett användardeskrivet alternativ till - tssmooth-är - egen - funktion - filteret () - från - egenmore-. Alternativt, stav ut vad som helst för att hantera ändar du föredrar. När jag använder funktionen tssmooth för att skapa 2 eller 5 års glidande medelvärden beräknar Stata dessa glidande medelvärden fram till slutet av tidsserien i stället för att stoppa 1 år (vid 2 års glidande medelvärde) eller 4 år (i Fallet med 5 års glidande medelvärde) före slutet av tidsserien Det räknar således fram saknade värden som noll. Vill du veta en möjlig strategi för att åtgärda detta problem Jag försöker skapa glidande medelvärden genom att titta på lag - lag 1 och lag2 värden av belöningens inlösen. Här är formelströmmen (lag - lag2) (lag2 - lag3). Det aktuella värdet lagras emellertid inte sekventiellt i raderna under uppdateringen. Jag menar att när jag hittar row4 nuvarande värde saknas använder jag denna formel för att komma fram till row4-belöningar. Nu, row4 - gt ström 100 När du flyttar till row5 - nya belöningar beräknas i rad4 finns inte tillgängligt. lag1red row4gt current 0 (jag antar att lagvärden inte är dynamiska) DATA vtest SET v10 vid vid grupp id lagred1 lag (newredemption1) lag2red1 lag2 (newredemption) lag3red1 lag3 (newredemption) expectedincreasepts (lagred1 (lagred1 lag2red1)) - lag2red1 previosredeemgrowth lagred1 - lag2red1) (lag2red1 - lag3red1) nuvarande ström (expectedincreasepts previosredeemgrowth) Det skulle verkligen hjälpa till att förstå vad du försöker om du ger några data i form av ett datasteg för inmatning och vad du förväntar dig för utgången för exemplet data. Jag undrar, eftersom du säger att det aktuella ibland saknas att du vill ha nuvarande summa (nuvarande. (Expectedincreasepts previosredeemgrowth)) Något att tänka på: Du måste ta itu med alla potentiella saknade värden innan du delar upp de fördröjda värdena. Lag3 kommer inte att finnas förrän du kommer till den 4: e observationen. Så du kommer att ha division genom att sakna som du kanske vill överväga. Och om din newredemption-variabel är evermissing kommer du att få intermittenta andra beräkningar med saknade värden. Lagvärden är endast för variabler som läses in genom ett SET eller MERGE-meddelande. Om du vill behålla en beräknad variabel använder du RETAIN. När du vill återställa till initialvärden eller saknas för behållna variabler är det ibland intressant. Du kanske vill ha något liknande: Håll TempCurrent 0 här. Ange ett initialvärde på 0 om det saknas (aktuellt) då currentsum (TempCurrent, (förväntatincreasepts previosredeemgrowth)) annars aktuellt summa (aktuellt. (Förväntatincreases previosredeemgrowth)) och sedan återställt det kvarhållna värdet

Comments