Denne datastrukturen er ganske uegnet til formål. Hvis du antar et ID-nummer, må du omforme. f. eks Deretter er et glidende gjennomsnitt lett. Bruk tssmooth eller bare generer. f. eks Mer om hvorfor datastrukturen din er ganske uegnet: Ikke bare ville beregning av et bevegelige gjennomsnitt trenge en sløyfe (ikke nødvendigvis involverende egen), men du ville opprette flere nye ekstravariabler. Å bruke dem i en hvilken som helst etterfølgende analyse ville være et sted mellom vanskelig og umulig. EDIT Ill gir en prøvesløp, mens du ikke beveger deg fra min holdning at det er dårlig teknikk. Jeg ser ikke en grunn bak navnetavtalen, der P1947 er et middel for 1943-1945. Jeg antar det er bare en skrivefeil. La oss anta at vi har data for 1913-2012. For 3 år mister vi ett år i hver ende. Det kan skrives mer kortfattet, på bekostning av en flurry av makroer i makroer. Bruk av ujevne vekter er enkelt, som ovenfor. Den eneste grunnen til å bruke egen er at den ikke gir opp hvis det er feil, noe som ovenfor vil gjøre. Som et spørsmål om fullstendighet, legg merke til at det er enkelt å håndtere avganger uten å ty til egen. og nevnen Hvis alle verdier mangler, reduseres dette til 00, eller mangler. Ellers, hvis noen verdi mangler, legger vi 0 til telleren og 0 til nevnen, som er den samme som å ignorere den. Naturligvis er koden tålelig som ovenfor i gjennomsnitt på 3 år, men enten for det tilfellet eller i gjennomsnitt over flere år, ville vi erstatte linjene over ved en sløyfe, hvilket er det som gjør. Stata: Dataanalyse og statistisk programvare Nicholas J Cox, Durham University, Storbritannia Christopher Baum, Boston College egen, ma () og dens begrensninger Statarsquos mest åpenbare kommando for å beregne glidende gjennomsnitt er ma () funksjonen til egen. Gitt et uttrykk, skaper det et periode-glidende gjennomsnitt av det uttrykket. Som standard er tatt som 3. må være merkelig. Men som den manuelle oppføringen indikerer, kan egen, ma () kanskje ikke kombineres med av varlist:. og av den grunn alene, det er ikke aktuelt for paneldata. I alle fall står den utenfor settet med kommandoer som er spesifikt skrevet for tidsserier, se tidsserier for detaljer. Alternative tilnærminger For å beregne bevegelige gjennomsnitt for paneldata er det minst to valg. Begge avhenger av at datasettet har vært forhåndssettet. Dette er veldig verdt å gjøre: Ikke bare kan du spare deg selv gjentatte ganger med å angi panelvariabel og tidsvariabel, men Stata oppfører seg smart gitt gaps i dataene. 1. Skriv din egen definisjon ved å bruke generering Bruke tidsserier operatører som L. og F.. Gi definisjonen av det bevegelige gjennomsnittet som argumentet til en generasjonserklæring. Hvis du gjør dette, er du selvsagt ikke begrenset til likevektede (uveide) sentrert glidende gjennomsnitt beregnet av egen ma (). For eksempel vil likeveide tre-glidende gjennomsnitt bli gitt av og noen vekt kan enkelt angis: Du kan selvsagt spesifisere et uttrykk som logg (myvar) i stedet for et variabelt navn som myvar. En stor fordel ved denne tilnærmingen er at Stata automatisk gjør det riktige for paneldata: ledende og lagre verdier utarbeides i paneler, akkurat som logikken dikterer de burde være. Den mest bemerkelsesverdige ulempen er at kommandolinjen kan bli ganske lang hvis det bevegelige gjennomsnittet innebærer flere termer. Et annet eksempel er et ensidig glidende gjennomsnitt basert bare på tidligere verdier. Dette kan være nyttig for å generere en adaptiv forventning om hva en variabel vil være basert på på hidtidig informasjon: hva kan noen prognose for den nåværende perioden basert på de siste fire verdiene, ved hjelp av en fast vekting ordning (en 4-periode forsinkelse kan være spesielt brukt i kvartalsvisserier.) 2. Bruk egen, filter () fra SSC Bruk det brukerskrevne egenfunksjonsfilteret () fra egenmore-pakken på SSC. I Stata 7 (oppdatert etter 14. november 2001), kan du installere denne pakken, hvorefter hjelpemore peker på detaljer på filteret (). De to eksemplene ovenfor ville bli gjengitt (I denne sammenhengen er generasjonsmetoden kanskje mer gjennomsiktig, men vi vil se et eksempel på det motsatte i et øyeblikk.) Lags er en numlist. fører til å være negativ lags: i dette tilfellet utvider -11 til -1 0 1 eller led 1, lag 0, lag 1. Koef-ficientene, en annen numlist, multipliserer tilsvarende lags eller ledende elementer: i dette tilfellet er disse elementene F1.myvar . myvar og L1.myvar. Effekten av normaliseringsalternativet er å skalere hver koeffisient med summen av koeffisientene slik at koeffisienten (1 1 1) normaliserer er ekvivalent med koeffisientene 13 13 13 og coef (1 2 1) normaliserer tilsvarer koeffisienter på 14 12 14 Du må spesifisere ikke bare lagene, men også koeffisientene. Fordi egen, ma () gir like vektet tilfelle, er hovedgrunnlaget for egen, filter () å støtte det ulikt vektede tilfellet, som du må spesifisere koeffisienter for. Det kan også sies at å forplikte brukerne til å spesifisere koeffisienter er et lite ekstra trykk på dem for å tenke på hvilke koeffisienter de vil ha. Hovedgrunnlaget for likevekter er, vi antar, enkelhet, men likevekt har elendige frekvensdomene egenskaper, for å nevne bare en vurdering. Det tredje eksemplet ovenfor kan enten være omtrent like komplisert som genereringsmetoden. Det er tilfeller der eget, filter () gir en enklere formulering enn å generere. Hvis du vil ha et ni-termisk binomialfilter, som klimatologene finner nyttige, ser det ut som om det er mindre fryktelig enn, og lettere å få riktig enn, akkurat som med genereringsmetoden, fungerer egen, filter () riktig med paneldata. Faktisk, som angitt ovenfor, avhenger det av at datasettet har blitt tsset på forhånd. Et grafisk tips Når du har beregnet dine bevegelige gjennomsnitt, vil du sannsynligvis se på en graf. Den brukerskrevne kommandoen tsgraph er smart om tsset datasett. Installer den i en oppdatert Stata 7 av ssc inst tsgraph. Hva med å skille med hvis Ingen av de ovennevnte eksemplene benytter seg av restriksjoner. Faktisk egen, ma () vil ikke tillate om å bli spesifisert. Noen ganger vil folk bruke hvis man beregner glidende gjennomsnitt, men bruken er litt mer komplisert enn det vanligvis er. Hva ville du forvente av et glidende gjennomsnitt beregnet med hvis. La oss identifisere to muligheter: Svak tolkning: Jeg vil ikke se noen resultater for de ekskluderte observasjonene. Sterk tolkning: Jeg vil ikke engang at du skal bruke verdiene for de ekskluderte observasjonene. Her er et konkret eksempel. Anta som en konsekvens av noen om tilstand, observasjoner 1-42 er inkludert, men ikke observasjoner 43 på. Men det bevegelige gjennomsnittet for 42 vil blant annet avhenge av verdien for observasjon 43 dersom gjennomsnittet strekker seg bakover og fremover og har en lengde på minst 3, og det vil på tilsvarende måte avhenge av noen av observasjonene 44 og videre under noen omstendigheter. Vårt gjetning er at de fleste ville gå for den svake tolkningen, men om det er riktig, støtter filter () ikke heller. Du kan alltid ignorere hva du donrsquot vil ha eller til og med sette uønskede verdier til å mangle etterpå ved å bruke erstatte. Et notat om manglende resultater i ender av serier Fordi glidende gjennomsnitt er funksjoner av lags og leads, produserer egen, ma () mangler hvor lags og ledninger ikke eksisterer, i begynnelsen og slutten av serien. Et alternativ nomiss styrker beregningen av kortere, ukjente glidende gjennomsnitt for haler. I motsetning, genererer heller ikke eget, filter () gjør, eller tillater, noe spesielt for å unngå å savne resultater. Hvis noen av verdiene som trengs for beregning mangler, mangler det resultatet. Det er opp til brukerne å avgjøre om og hvilken korrigerende kirurgi som kreves for slike observasjoner, antagelig etter å ha sett på datasettet og vurderer hvilken underliggende vitenskap som kan bli båret. Ofte kan vi være interessert i å generere et romlig glidende gjennomsnitt på en karakteristisk X. Vi kan bruke dette glidende gjennomsnittet for å bidra til å kontrollere for heterogenitet i befolkningen som kan være relatert til romlig fordeling av observasjoner. For å gjøre det må vi ha en metode for å generere et romlig middel. Jeg kodes dette manuelt fordi jeg ikke har erfaring med romdata i Stata og vet ikke hva den innebygde kommandoen er (antar at det er en). Hvis du bare leter etter det romlige gjennomsnittet, kan du favorisere den innebygde kommandoen. Imidlertid er denne metoden fleksibel og lett modifiserbar hvis du for eksempel vil bruke tiltak utover Euclidean 2D avstandsformelen og i stedet foretrekker 3D-formelen eller nD-formelen virkelig. På samme måte kan det være lett å flytte gjennomsnittlig statistikk erstattet av flytende varians eller annen statistikk som kunne genereres via egen kommando. Dermed kan denne øvelsen være nyttig å undersøke, selv om det er overflødig. global Nobs 1000 klart sett obs Nobs Generer 2D koordinater gen latt runiform () 100 gen longg runiform () 100 Generer variabelen av interesse. Variabelen vil ha en tilfeldig komponent og en romlig avhengig komponent. gen X (lattlongg) 100rnormal () to (scatter latt X) (scatter longg X) Vi kan se at selv om det er en generell trend til større verdier som lengdegrad eller breddegrad økning, er det vanskelig å identifisere et sterkt mønster. Nå kan vi beregne det glidende gjennomsnittet for X for hver observasjon. (Det er sannsynligvis en kommando for dette som jeg ikke vet). gen Xave. gen dist. forv i1Nobs Beregn avstanden til alle punkter fra obs jeg erstatter dist (latt-latti) 2 (longg-longgi) 2) .5 Beregn gjennomsnittet av X hvis avstanden ligger innenfor intervallet av interesse egen tempxmiddel (X) hvis distltmeanrange erstatt Xave tempx hvis du slipper tempx to (scatter latt Xave) (scatter longg Xave) Nå ser vi på det bevegelige gjennomsnittet vi kan enkelt visuelt identifisere effekten av lokasjonen på forventet verdi av X. Annonse Det er mitt første innlegg, og jeg vil Prøv å være så klar som mulig. Koblingen til hoveddatabasen er på slutten av innlegget. Kontekst Jeg bruker StataSE 12.0 under Windows 10. Jeg har startet med Stata bare noen få uker siden, og jeg prøver å lære på egen hånd for et oppdrag på grunn av om noen dager nå (fordi hver tabell eller figur tok meg dager og dager) : replikere papiret kvittering Obligatorisk skoleendring påvirker Skole og fortjeneste: web. stanford. edu pistaangrist. pdf som består av å vise at folk født i siste kvartal av årene har mer utdanning i gjennomsnitt enn de som er født i første kvartal på grunn av grunnskole lover. De første tallene tegner en graf for gjennomsnittlig antall års utdanning (variabel EDUC) for alle personer født et bestemt år (variabel YOB for fødselsår) i løpet av et bestemt kvartal (QOB). Det er en generell økende trend og å forstyrre dataene, de bruker et glidende gjennomsnitt (figur IV), som er der jeg har blitt blokkert for de siste 5 dagene. Problem I databasen er det 27 variabler, blant annet v4 omdøpt EDUC, v27 omdøpt YOB (fødselsår) og v18 omdøpt QOB (kvartalet fødsel). Det som trengs for glidende gjennomsnitt er for hvert sett av personer født i år c og kvartal j, å beregne gjennomsnittlig antall års utdanning ikke for dette året og kvartalet, men for kvartalet like før, 2 kvartaler før, ett kvartal senere og 2 fjerdedeler senere (forklart s. 985 i papiret). Hvis jeg for eksempel ser på mennene som er født mellom 1930 og 1939 som i denne figuren (figur IV i artikkelen: onedrive. liveredirresi. Ntphoto2cpng), må jeg starte med kohorten født i 1930, 3. kvartal og beregne gjennomsnittlig tall av år med utdanning av de som ble født i 1930, 2. kvartal (født ett kvartal før den oppgitte kohorten), samme for de som ble født i 1930, 1. kvartal (født 2 kvartaler før den givne kohorten), samme for de født i 1930, 4. kvartal (en fjerdedel etter den oppgitte kohorten), og det samme for de som ble født i 1931, 1. kvartal (2 fjerdedeler etter den givne kohorten). Da blir det bevegelige gjennomsnittet oppnådd ved å legge til disse 4 verdiene og dividere med 4. Denne hele prosessen bør gjentas for hver kohorte mellom 1930, 3. kvartal og 1939, 2. kvartal. Gjør-fil For do-filen (onedrive. liveredirresid6919D329B3BF1EF23227ampauthkeyAO2cxEN AGpZMgsMampithintfile2cdo), begynte jeg med modellen til de andre figurene og prøvde å bruke foreach loop og mange andre ting (husk ikke feilmeldingene, visste ikke at jeg skulle skrive inn her) men fremdeles ikke finne ut hvordan du forteller Stata: quotfor hver YOBQn. beregne gjennomsnitt (EDUC) for YOBQ n-1, YOBQ n-2, YOBQ n1, YOBQ n2quot. Å gjøre summen og dele med 4 etter det burde være lettere. Jeg har fått et eksepsjonelt hint f rom undervisningsassistenten: citerer tssmooth-kommandoen. Du må først opprette en tidsvariabel som den egen gruppekommandoen vil være veldig nyttig. quot, men ifølge min undersøkelse om quotegenquot og quottssetquot i datahåndbøkene og i boken Cameron amp Trivedi, quotEconometrics bruker Stataquot (siste link): statamanuals14degen. tfolder2cdta statamanuals14gsw11.pdf statamanuals14u11.p. Languageyntax statamanuals14u13.p. det er påkrevd atedrive. liveredirresi. intfile2cpdf Jeg burde tsset opp dataene før tssmooth, men jeg kom ikke forbi dette stadiet siden tilsynelatende er notasjonen n ikke tillatt med quotegenquot (feil r (101) cvweights not allowedquot) og jeg er fortsatt veldig forvirret med hvordan man kombinerer egen, tsset og tssmooth. Det ville være flott hvis noen kunne hjelpe meg med å løse quoteweights ikke allowedquot feil og hvordan kombinere kommandoene quotegenquot, quottssetquot og quottssmoothquot. Takk så mye Postscript: her er databasen for øvrig onedrive. liveredirresi. tfolder2cdta Merk: Jeg har do-filen for de viktigste andre tallene og tabellene i artikkelen, unntatt tabell I, men denne filen er sannsynligvis ikke nødvendigjustert for info: onedrive. liveredirresi. hintfile2cdo Sist redigert av Amarylis Durand 25 Mar 2016, 01:55. 25 mars 2016, 22:50 Her er en kortere versjon av spørsmålet mitt: Hvordan unngå feilen nedenfor (r451 med fet skrift) og hvordan å fortelle Stata at det bevegelige gjennomsnittet for quotmedstay1quot skal beregnes for hver verdi av tps av YOB QOB for alle de som er født samme år og samme kvartal, sorterer etter flere år og kvartaler og beregner gjennomsnittlig antall års utdanning av YOB QOB. Sorter: egen medstay1 mean (EDUC) generere en ny variabel YOBNew fordi kommandoen yq krever det første argumentet å være mellom 1000 og 9999 og våre data for YOB i 1980-folketellingen er mellom 30 og 49 i stedet for 1930 og 1949 gen YOBNewYOB erstatter YOBNew YOB1900 hvis CENSUS80 genererer en tidsvariabel som har formatet som kreves i hjelp tsset gen tpsyq (YOBNew, QOB) format tq tps følgende instruksjon returnerer r451. gjentatte tidsverdier i panelet, sannsynligvis fordi det er tusen mennesker født i samme år og samme kvartal, selvsagt med samme gjennomsnittlige antall års utdanning. Hvordan unngå denne feilen tsset medstay1 tps instruksjon for å ha det bevegelige gjennomsnittet MA, men jeg vil ha å flytte gjennomsnittet av medstay1 for å beregnes for hver verdi av den tidevariable quottpsquot. Hvilken kommando vil tillate meg å gjøre dette, eller gjøres det automatisk automatisk med MA MA medstay1. vindu (2 0 2) Jeg håper noen kan hjelpe.
Comments
Post a Comment