Monday 11 December 2017

Stata generuj ruchomą średnią zmienną


Ta struktura danych nie nadaje się do celu. Zakładając identyfikator identyfikatora, musisz zmienić kształt. na przykład Wtedy średnia ruchoma jest łatwa. Użyj tssmooth lub po prostu wygeneruj. na przykład Więcej na temat tego, dlaczego twoja struktura danych jest zupełnie nieprzydatna: nie tylko obliczenie średniej ruchomej wymagałoby pętli (niekoniecznie angażującej egen), ale tworzyłoby się kilka nowych dodatkowych zmiennych. Używanie ich w każdej późniejszej analizie byłoby gdzieś pomiędzy niewygodnym i niemożliwym. EDYCJA Zła daje próbną pętlę, nie ruszając się z mojej postawy, że jest to zła technika. Nie widzę powodu, dla którego konwencja nazewnictwa, według której P1947 jest środkiem na lata 1943-1945, zakładam, że to tylko literówka. Załóżmy, że mamy dane dla 1913-2017. Za 3 lata tracimy po jednym roku na każdym końcu. Można to napisać bardziej zwięźle, kosztem mnóstwa makr w makrach. Używanie nierównych ciężarów jest łatwe, jak wyżej. Jedynym powodem użycia egen jest to, że nie poddaje się, jeśli istnieją błędy, które powyższe zrobi. W celu zapewnienia kompletności, należy pamiętać, że łatwo jest wykonywać misje bez uciekania się do egen. i mianownik Brak wszystkich wartości zmniejsza się do 00 lub ich brakuje. W przeciwnym razie, jeśli brakuje jakiejkolwiek wartości, dodajemy 0 do licznika i 0 do mianownika, co jest tym samym, co zignorowanie go. Oczywiście kod jest tolerowany jak powyżej dla średnich z 3 lat, ale albo dla tego przypadku, albo dla uśrednienia na więcej lat, zastąpilibyśmy powyższe linie przez pętlę, co jest tym, co robi egen. Stata: Analiza danych i oprogramowanie statystyczne Nicholas J Cox, Durham University, Wielka Brytania Christopher Baum, Boston College egen, ma () i jego ograniczenia Statarsquos najbardziej oczywistym dowodem do obliczania średnich kroczących jest funkcja ma () egenu. Biorąc pod uwagę wyrażenie, tworzy ono średnią ruchomą okresu tego wyrażenia. Domyślnie jest traktowany jako 3. musi być nieparzysty. Jednakże, jak wskazuje ręczne wprowadzenie, np., Ma () nie można łączyć z przez listę var:. i tylko z tego powodu nie ma zastosowania do danych panelowych. W każdym razie jest poza zbiorem poleceń specjalnie napisanych dla serii czasowych, aby zobaczyć szczegóły serii czasowych. Alternatywne podejścia Aby obliczyć średnie ruchome dla danych panelu, istnieją co najmniej dwie opcje. Oba zależą od wcześniejszego zestawu danych. Jest to bardzo warte zrobienia: nie tylko możesz zaoszczędzić sobie wielokrotnie określając zmienną panelu i zmienną czasu, ale Stata zachowuje się elegancko, biorąc pod uwagę wszelkie luki w danych. 1. Napisz własną definicję za pomocą generatora używając operatorów szeregów czasowych, takich jak L. i F. podać definicję średniej ruchomej jako argument do instrukcji generującej. Jeśli to zrobisz, oczywiście nie jesteś ograniczony do równo ważonych (nieważonych) średnich kroczących obliczanych przez egen, ma (). Na przykład, ważone równomiernie trzy-okresowe średnie kroczące byłyby podane przez niektóre wagi i można je łatwo określić: Można oczywiście określić wyrażenie, takie jak log (myvar) zamiast nazwy zmiennej, takiej jak myvar. Jedną dużą zaletą tego podejścia jest to, że Stata automatycznie robi to, co właściwe dla danych panelu: wartości wiodące i opóźniające są opracowywane w ramach paneli, tak jak logika dyktuje, że powinny one być. Najbardziej godną uwagi wadą jest to, że linia poleceń może być dość długa, jeśli średnia ruchoma obejmuje kilka terminów. Innym przykładem jest jednostronna średnia ruchoma oparta tylko na poprzednich wartościach. Może to być przydatne do generowania adaptacyjnego oczekiwania na to, co zmienna będzie bazować wyłącznie na informacji do tej pory: co może ktoś prognozować na bieżący okres w oparciu o cztery ostatnie wartości, stosując stały schemat ważenia (A 4-okresowe opóźnienie może być szczególnie często używane w kwartalnych seriach czasowych.) 2. Użyj egen, filter () from SSC Użyj napisanego przez użytkownika funkcji egen filter () z pakietu egenmore na SSC. W Stata 7 (zaktualizowanym po 14 listopada 2001 r.) Można zainstalować ten pakiet, po czym pomocna jest np. Szczegóły dotyczące filtru (). Dwa powyższe przykłady byłyby renderowane (w tym porównaniu podejście generujące jest być może bardziej przejrzyste, ale za chwilę zobaczymy przykład odwrotności). Opóźnienia są numerami. wyprowadza ujemne opóźnienia: w tym przypadku -11 rozwija się do -1 0 1 lub wyprowadzenie 1, opóźnienie 0, opóźnienie 1. Współczynniki, inna liczba, pomnożenie odpowiednich elementów opóźniających lub wiodących: w tym przypadku te elementy to F1.myvar . myvar i L1.myvar. Efektem opcji znormalizowanej jest skalowanie każdego współczynnika przez sumę współczynników, aby unormowanie koef (1 1 1) było równoważne ze współczynnikami 13 13 13, a normalizacja coef (1 2 1) jest równoważna z współczynnikami 14 12 14 Musisz określić nie tylko opóźnienia, ale także współczynniki. Ponieważ egen, ma () dostarcza równie ważonego przypadku, głównym uzasadnieniem dla egen, filter () jest wspieranie nierównomiernie ważonego przypadku, dla którego należy podać współczynniki. Można również powiedzieć, że zobowiązanie użytkowników do określania współczynników jest niewielką presją na ich myślenie o tym, jakie współczynniki chcą. Głównym uzasadnieniem dla równych wag jest, jak sądzimy, prostota, ale jednakowe wagi mają kiepskie właściwości domen częstotliwości, aby wymienić tylko jedną uwagę. Trzeci przykład powyżej może być tak samo skomplikowany jak podejście generujące. Istnieją przypadki, w których egen, filter () daje prostszą formułę niż generuje. Jeśli potrzebujesz dziewięcio terminowego filtra dwumianowego, który klimatologowie uznają za przydatny, wygląda na to, że jest mniej straszny niż i łatwiejszy do uzyskania niż tak, jak w przypadku metody generowania, np. Filter () działa poprawnie z danymi panelu. W rzeczywistości, jak stwierdzono powyżej, zależy to od wcześniejszego zestawienia zbioru danych. Wskazówka graficzna Po obliczeniu średnich kroczących prawdopodobnie będziesz chciał spojrzeć na wykres. Napisany przez użytkownika tsgraph polecenia jest inteligentny o zestawach danych tsset. Zainstaluj go w aktualnym Stata 7 przez ssc inst tsgraph. A co z podzbiorem, jeśli żaden z powyższych przykładów nie wykorzystuje ograniczeń. W rzeczywistości egen, ma () nie pozwoli, jeśli zostanie określone. Czasami ludzie chcą używać, jeśli podczas obliczania średnich kroczących, ale ich użycie jest nieco bardziej skomplikowane niż zwykle. Czego można się spodziewać po średniej ruchomej obliczonej za pomocą if? Zidentyfikujmy dwie możliwości: Słaba interpretacja: nie chcę widzieć żadnych wyników dla wykluczonych obserwacji. Silna interpretacja: Nie chcę nawet, abyś używał wartości dla wykluczonych obserwacji. Oto konkretny przykład. Przypuśćmy, że w wyniku jakiegoś warunku if uwzględnione są obserwacje 1-42, ale nie obserwacje 43. Jednak średnia ruchoma dla 42 będzie zależeć, między innymi, od wartości dla obserwacji 43, jeśli średnia rozciąga się do tyłu i do przodu i ma długość co najmniej 3, podobnie będzie zależała od niektórych obserwacji 44 w pewnych okolicznościach. Domyślamy się, że większość ludzi wybierałaby słabą interpretację, ale czy to jest poprawne, np., Filter () również nie obsługuje, jeśli. Zawsze możesz zignorować to, czego chcesz, a nawet ustawić niepotrzebne wartości, które następnie znikną, używając polecenia Zamień. Notatka o brakujących wynikach na końcach serii Ponieważ ruchome średnie są funkcjami opóźnień i leadów, egen, ma () powoduje brak w miejscach opóźnień i potencjalnych nieobecności, na początku i na końcu serii. Opcja nomiss wymusza obliczenie krótszych, niecento - rowanych średnich ruchomych dla ogonów. W przeciwieństwie do tego, ani nie generuj, ani nie egen, filter () ma, lub pozwala, coś specjalnego, aby uniknąć brakujących wyników. Jeśli brakuje jakiejkolwiek wartości potrzebnej do obliczenia, brakuje tego wyniku. Do użytkowników należy decyzja, czy i jakie operacje korekcyjne są wymagane w przypadku takich obserwacji, prawdopodobnie po przeanalizowaniu zbioru danych i rozważeniu jakiejkolwiek podstawowej wiedzy, która może zostać wykorzystana. W Stata, w jaki sposób utworzyć nową zmienną na podstawie istniejących danych Poniżej przedstawiono przykłady tworzenia nowych zmiennych w Stata przy użyciu komend gen (short for generate) i egen: Aby utworzyć nową zmienną (np. Newvar) i ustawić jej wartość na 0. użyj: Aby utworzyć nową zmienną (np. Total) z transformacji istniejących zmiennych (np. suma v1. v2. v3. i v4), użyj: Alternatywnie, użyj egen z wbudowaną opcją rowtotal: Polecenie egen traktuje brakujące wartości jako 0. Aby utworzyć zmienną (np. avg), który przechowuje średnią z czterech zmiennych (np. v1. v2. v3. i v4), użyj: Użyj znaku (slash) do oznaczenia podziału i (gwiazdka) do mnożenia. Alternatywnie, użyj egen z wbudowaną opcją rowmean: Stata pozwala także korzystać z wbudowanych funkcji dla zmiennych transformacji. Na przykład, aby wziąć naturalny log v1 i utworzyć nową zmienną (np. V1log), użyj: Aby uzyskać dodatkową pomoc, zobacz pliki pomocy w Stata (dla każdego z poniższych tematów wprowadź odpowiednie polecenie pomocy): Ogłoszenie 15 sierpnia 2018, 00:13 Trudno umieścić ten konkretny problem w kilku linijkach, więc proszę o zachowanie mnie, kiedy wyjaśnię, czego dokładnie chcę i czego próbowałem. Mam zestaw danych przekrojów, który zawiera zmienną dzielnic (nazwy i nazwy zakodowane), procent mniejszości etnicznej i wskaźnik dobrobytu tej mniejszości, wśród innych zmiennych. Chciałbym stworzyć wykres rozproszenia z procentem mniejszości etnicznej na osi X i indeksem na osi Y, aby zobaczyć, jak zmienia się indeks, gdy wzrasta procentowa mniejszość. Ponadto chcę utworzyć linię, która będzie zawierała średnie w dzielnicach dla każdej całej wartości procentowej populacji mniejszości, tj. Średnią dla wszystkich dzielnic dla 0-1 populacji mniejszości, 1-2 itd. Wygenerowałem nową zmienną za pomocą: egen newvarcut (oldvar), w (0,1,2, 100), a następnie użył tego newvar do generowania średniego indeksu dla każdego roku: bysort newvar: egen (meanindex) mean (oldindex) Jednak kiedy dodaję quotline meanindex oldvarquot dostaję przeciętny trend, który jest postrzępiony (dane są sortowane według oldvar). Chcę go wygładzić i wygenerować średnią ruchomą średniej wartości wskaźnika, powiedzmy 5 procent mniejszościowej populacji (2 opóźnienia, 2 sygnały i procent obserwacji). Próbowałem tssmooth ma, ale musiałbym zadeklarować mój zbiór danych jako szereg czasowy. Nie zaakceptowałoby oldvar jako zmiennej czasowej narzekającej na to, że w próbce występują wartości czasu wyrażone r (451). Jeśli dodaję dzielnicę jako zmienną panelową wymuszającą pojedynczy punkt czasowy dla każdego panelu, tssmooth nadal nie będzie działało, mówiąc, że quotwindow () jest nieprawidłowe - niepoprawna lista ma elementy poza dozwolonym zakresem, r (125) quot Próbowałem różnych parametrów okna z ten sam wynik. Próbowałem ręcznie przekodować dane, aby zachować tylko jedną obserwację średniego indeksu dla każdego całego procentu populacji mniejszości, ale tssmooth ma zwróciłby ten sam błąd. Myślę, że tak długo, jak będę mieć tylko jedną obserwację każdego okręgu dla zmiennej quottimequot mniejszościowej, tssmooth (lub ręczny odpowiednik) nie zadziała. Jedynym sposobem, w jaki mogę stworzyć tę ruchomą średnią, jest zachowanie tylko obserwacji z jedną średnią obserwacją na każdy cały procent, zmniejszając w ten sposób zbiór danych, aby zawierał tylko wartości średnie, po jednym na cały procent populacji mniejszości. Ale nie mogę utworzyć działki rozproszonej z rzeczywistymi dzielnicami, ponieważ nie są już w zestawie danych. Próbowałem wszystkiego, co mogłem wymyślić, ale nic nie działa. Jednak kwestia dodania średnio wygładzonego trendu na osi X powinna być dość trywialna. Byłbym wdzięczny za wszelkie porady w tej sprawie. Ostatnio edytowane przez Mikhail Balaev 15 Aug 2018, 00:19.

No comments:

Post a Comment