Jag har en lista över personer, registreringstider och poäng I Stata vill jag beräkna ett glidande medelvärde av poäng baserat på ett tidsfönster runt varje observation, inte ett fönster baserat på fördröjande ledande antal observationer. Till exempel, förutsatt att 2 dagar på på båda sidor och inte med den nuvarande observationen, jag försöker beräkna något sådant. Jag försökte definiera datasetet med tsset och sedan använda TSSmooth men kunde inte få det att fungera Eftersom det kan finnas flera observationer under en given tidsperiod Jag är inte säker på att det här är ens rätt inställning Även i verkligheten är dagvariabeln en tc timestamp. asked dec 6 13 på 16 04.tsset kan inte hjälpa till här även om du gjorde dina tider regelbundet, eftersom du har några upprepade värden för tid, men dina uppgifter kvalificeras inte som paneldata i Stata s men men problemet borde ge en loop över möjligheter. Låt oss ta ditt exempel bokstavligen med heltalsdagar. Här antar vi inga saknade värden Principen att vidarebefordra är. genomsnitt av summan summan av alla - detta värde antal värden - 1. I praktiken vill du inte slingra över alla möjliga datumstider i millisekunder Så, försök en slinga över observationer av detta formulär Observera pseudokodelement. Detta papper är också relevant . Om missförhållanden är möjliga måste en rad bli mer komplicerad. Med tanke på att om det nuvarande värdet saknas subtraherar vi 0 från summan och 0 från observatorns count. EDIT Under 2 dagar i millisekunder utnyttjar den inbyggda funktionen och använder cofd 2.Denna datastrukturen är ganska olämplig för ändamål. Om du antar ett identifierings-ID måste du omforma e g. Då är ett rörligt medelvärde enkelt. Använd tssmooth eller bara skapa e g. Mer på varför är din datastruktur ganska olämplig Inte bara skulle beräkning av ett glidande medel behöver en slinga som inte nödvändigtvis involverar egen men du skulle skapa flera nya extravariabler. Användning av de i någon efterföljande analys skulle vara någonstans mellan obekväm och omöjlig. EDIT Jag ska ge en provslinga, medan jag inte flyttar från min inställning att det jag s dålig teknik Jag ser inte en orsak till din namngivningskonvention, där P1947 är ett medelvärde för 1943-1945 Jag antar att det bara är ett typsnitt Låt oss anta att vi har data för 1913-2012 För 3 år förlorar vi ett år vid varje ände. Det kan skrivas mer kortfattat, på bekostnad av ett flurry av makron i makroner. Att använda ojämna vikter är enkelt, som ovan. Den enda anledningen till att använda egen är att den inte ge upp om det finns missningar, vilket ovanstående kommer att göra. Som en fråga om fullständighet, notera att det är lätt att hantera missningar utan att tillgripa egen. and nämnaren. Om alla värden saknas minskar detta till 0 0, eller saknas Annars, om något värde saknas lägger vi till 0 till täljaren och 0 till nämnaren, vilket är densamma som att ignorera det. Naturligtvis är koden tolerabel enligt ovan i medeltal om 3 år, men antingen för det fallet eller för medelvärdet under flera år skulle vi ersätta raderna ovan med en Loop, vilket är vad egen gör. När du beräknar ett löpande rörligt medelvärde placerar du t det genomsnittliga i mellantiden är meningsfullt. I det föregående exemplet beräknade vi genomsnittet av de första 3 tidsperioderna och placerade det bredvid period 3 Vi kunde ha placerat medelvärdet mitt i tidsintervallet av tre perioder, det vill säga , bredvid period 2 Det fungerar bra med udda tidsperioder, men inte så bra för jämna tidsperioder Så var skulle vi placera det första glidande medlet när M 4. Tekniskt sett skulle det rörliga genomsnittet falla vid t 2 5, 3 5.To undvik detta problem släpper vi MAs med M 2 Således släpper vi ut de jämnda värdena. Om vi i genomsnitt ett jämnt antal termer behöver vi släta de jämnda värdena. Följande tabell visar resultaten med M 4.
No comments:
Post a Comment