Ruchome średnie brakujące wartości


Prosta i ogólna metoda wypełniania brakujących danych, jeśli masz pełne dane, jest użycie regresji liniowej. Powiedzmy, że masz 1000 przebiegów z rzędu 5 z rzędu, których żadne nie ma. Ustaw 1000 x 1 wektora y i 1000 x 4 macierzy X: Regresja daje 4 cyfry b c d, które dają najlepsze dopasowanie do 1000 wierszy danych mdash różnych danych, inne a b c d. Następnie używasz tych b c d do oszacowania (przewidywania, interpolacji) brakujących wt0. (Dla wag ludzi, Id oczekują abcd być około 14.) (Są ziliony książek i artykułów na temat regresji, na wszystkich poziomach. Jeśli chodzi o interpolację, choć nie wiem o dobrym wprowadzeniu) Stata: Dane Analiza i oprogramowanie statystyczne Nicholas J. Cox, Uniwersytet w Durham, Wielka Brytania Christopher Baum, Boston College egen, ma () i jego ograniczenia Statarsquos najbardziej oczywistym poleceniem do obliczania średnich kroczących jest funkcja ma () egen. Biorąc pod uwagę wyrażenie, tworzy ona - średnią ruchową średnią tej wypowiedzi. Domyślnie przyjmuje się, że 3. musi być nieparzysta. Jednakże, jak wskazuje ręcznie wpis, np. Ma () nie może być łączony z listą:. i, z tego tylko powodu, nie ma zastosowania do danych paneli. W każdym razie znajduje się poza zestawem komend napisanych specjalnie dla serii czasowych, patrz seria czasowa, aby uzyskać szczegółowe informacje. Metody alternatywne Aby obliczyć średnie ruchome danych panelowych, istnieją co najmniej dwie możliwości. Oba te elementy uzależnione są od zestawu danych, który został uprzednio zresetowany. To bardzo warto robić: nie tylko możesz zaoszczędzić sobie na wielokrotne określanie zmiennej czasowej panelu i zmiennej, ale Stata zachowuje się elegancko, biorąc pod uwagę luki w danych. 1. Napisz własną definicję używając wygenerowania Używając operatorów z serii czasowych, takich jak L. i F. podaj definicję średniej ruchomej jako argumentu generowania instrukcji. Jeśli to zrobisz, naturalnie nie ograniczasz się do średnio ważonych (nie ważonych) średnic ruchu, obliczonych przez egen, ma (). Na przykład średnio ważone średnie ruchome trzy-okresowe byłyby podane przez i niektóre wagi można łatwo określić: Oczywiście możesz określić wyrażenie takie jak log (myvar) zamiast nazwy zmiennej, na przykład myvar. Jedną wielką zaletą tego podejścia jest to, że Stata automatycznie robi właściwą rzecz dla danych paneli: wartości początkowe i opóźnione są opracowywane w panelach, podobnie jak logika mówi, że powinny być. Największą wadą jest to, że linia komend może być dość długa, jeśli średnia ruchoma obejmuje kilka terminów. Innym przykładem jest jednostronna średnia ruchoma oparta jedynie na poprzednich wartościach. Może to być użyteczne w celu wygenerowania adaptacyjnego oczekiwania, na podstawie którego zmienna będzie oparta wyłącznie na dotychczasowej informacji: co można było przewidzieć na obecny okres w oparciu o poprzednie cztery wartości, przy użyciu stałego schematu ważenia (opóźnienie w skali A 4 może być szczególnie używanych w kwartalnych terminach.) 2. Użyj egen, filter () z SSC Użyj filtra funkcji egen () egenmore () z pakietu egenmore na SSC. W Stacie 7 (zaktualizowany po 14 listopada 2001 r.) Można zainstalować ten pakiet, po którym pomoc np. Wskazuje na szczegóły filtru (). Powyższe przykłady byłyby renderowane (w tym porównaniu podejście generowane jest być może bardziej przezroczyste, ale na chwilę zobaczymy przykład odwrotny). Laga jest numeracją. prowadzi do ujemnych opóźnień: w tym przypadku -11 rozciąga się na -1 0 1 lub prowadzi 1, zwłokę 0, opóźnia 1. Współczynnik cofania, kolejna numlista, pomnożenie odpowiednich opóźnionych lub prowadzących elementów: w tym przypadku te elementy to F1.myvar . myvar i L1.myvar. Efektem normalizacji jest skalowanie każdego współczynnika sumą współczynników tak, aby współczynnik (1 1 1) normalizować jest równoważny współczynnikom 13 13 13 i coef (1 2 1) normalizować jest równoważny współczynnikom 14 12 14 Musisz określić nie tylko opóźnienia, ale i współczynniki. Ponieważ egen, ma () dostarcza równie ważonej sprawy, głównym powodem egen, filter () jest wspieranie nierównej wagi sprawy, dla której musisz określić współczynniki. Można również powiedzieć, że zobowiązanie użytkowników do określenia współczynników jest niewielką dodatkową presją na nich, aby zastanowić się nad tym, jakie współczynniki chcą. Głównym uzasadnieniem dla równych ciężarów jest, jak przypuszczamy, prostota, ale równe wagi mają złe właściwości w domenie częstotliwości, wspomnieć tylko o jednym. Trzeci przykład powyżej może być albo z nich tak skomplikowany jak podejście generujące. Są przypadki, w których egen, filter () daje prostszy formułowanie niż generowanie. Jeśli chcesz, aby 9-krotny filtr dwumianowy okazał się użyteczny, wygląda na to, że może być mniej straszniejszy niż i łatwiejszy w użyciu niż, podobnie jak w przypadku generowania podejścia, egen, filter () działa poprawnie z danymi panelu. W rzeczywistości, jak wspomniano powyżej, zależy to od zestawu danych, który został wcześniej zresetowany. Graficzna wskazówka Po obliczeniu średnich kroczących prawdopodobnie będzie trzeba spojrzeć na wykres. Polecenie napisane przez użytkownika tsgraph jest inteligentne w przypadku zestawów danych tsset. Zainstaluj go w aktualnej wersji Stata 7 przez ssc inst tsgraph. A co z podziałem na jeśli żadne z powyższych przykładów nie wykorzystuje się w przypadku ograniczeń. W rzeczywistości egen, ma () nie zezwala, jeśli ma być określony. Czasami ludzie chcą używać, jeśli przy obliczaniu średnich ruchomej, ale jego wykorzystanie jest nieco bardziej skomplikowane niż zwykle. Czego oczekiwałeś od średniej ruchomej, obliczonej jeśli. Zidentyfikujmy dwie możliwości: Słaba interpretacja: nie chcę widzieć żadnych wyników dla wykluczonych obserwacji. Mocna interpretacja: nie chcę nawet używać wartości dla wykluczonych obserwacji. Oto konkretny przykład. Załóżmy, że w wyniku pewnych warunków, obserwuje się 1-42, ale nie obserwuje się obserwacji 43. Jednak średnia ruchoma wynosząca 42 będzie zależeć między innymi od wartości obserwacji 43, jeśli średnia rozciąga się do tyłu i do przodu i ma długość co najmniej 3, a w pewnych okolicznościach od pewnych okoliczności zależy to również od niektórych obserwacji 44. Domyślamy, że większość ludzi chętnie skorzysta z słabej interpretacji, ale czy to jest poprawne, np. Filtr () nie obsługuje, jeśli istnieje. Zawsze możesz zignorować to, czego nie chcesz, a nawet ustaw niepożądane wartości, aby później brakować, używając zamiennika. Notatka o brakujących wynikach na końcach serii Ponieważ średnie ruchome są funkcjami opóźnień i opóźnień, np. Ma () powoduje brak tam, gdzie na początku i na końcu serii nie występują opóźnienia i opóźnienia. Opcja nomiss wymusza obliczenie krótszych, nieokrążonych średnic ruchu dla ogonów. W przeciwieństwie do tego, ani wygenerować, ani egen, filtr () czy, czy nie, nic specjalnego, aby uniknąć brakujących wyników. Jeśli brakuje jakiejkolwiek wartości potrzebnej do obliczenia, wynik tego nie ma. Decyzja o tym, czy i jakie operacje korygujące są wymagane w przypadku takich obserwacji, przypuszczalnie po zapoznaniu się z zestawem danych i rozważeniu jakiejkolwiek naukowej nauki, którą można przynieść. Obliczanie średnich kroczących z wartościami brakującymi Ustaw obs 10 obs to 0, teraz 10 tsset t zmienna czasowa: t, 1 do 10 delta: 1 jednostka tssmooth ma y3 y, w (1 1 1) gładszą zastosowano (13) x (t-1) 1x (t) x (t1) x (t ) y tssmooth ma y5 y, w (2 1 2) Gładszą zastosowano (15) x (t-2) x (t-1) 1x (t) x (t1) x (t2) x (t) y - tssmooth zapewnia maksymalną siłę na końcach serii (co nie jest takie samo jak traktowanie przeszkód jako 0s, gdyż w przeciwnym razie nie uzyskano wyników powyżej). Jeff może nadpisać rezultaty - tssmooth - jeśli tego nie chce. zastąpić y3. jeśli brakuje (L1.y, F1.y), zastąp y5. jeśli brakuje (L1.y, L2.y, F1.y, F2.y) Na przykład na końcu serii y i F1.y na końcu nie ma litery L1.y. Działa to również z panelami. Alternatywą dla użytkownika - tssmooth jest opcja - egen-function-filterter () - od - egenmore-. Alternatywnie, proszę wypisać dowolny sposób radzenia sobie z końcówkami, które wolisz. Kiedy używam funkcji tssmooth do generowania średnich ruchów 2 lub 5 lat, Stata oblicza te średnie ruchome do końca cyklu czasowego, a nie zatrzymuje się 1 rok (w przypadku 2-letniej średniej ruchomej) lub 4 lata (w przypadek 5-letniej średniej ruchomej) przed końcem serii czasowej Zlicza więc wartości brakujące jako zero. Czy znasz możliwą strategię, aby rozwiązać ten problem? Staram się tworzyć średnie ruchome, obserwując opóźnienia w wyrównywaniu wartości opóźnień 1 i lag2. Oto prąd formuły (lag - lag2) (lag2 - lag3). Jednak aktualna wartość nie jest przechowywana sekwencyjnie w wierszach w aktualizacji. Znaczenie, gdy znajdę wiersz4 aktualnej wartości brakuje, używam tej formuły, aby wymyślić nagrody row4. Teraz wiersz 4-gt bieżącego 100 Podczas przechodzenia do wiersza 5 - nowe nagrody naliczone w wierszu 4 nie są dostępne. lag1 - gt wiersz4gt bieżący 0 (przypuszczam, że wartości opóźnienia nie są dynamiczne) DATA vtest SET v10 przez vid group id lagred1 lag (newredemption1) lag2red1 lag2 (newredemption) lag3red1 lag3 (newredemption) expectedincreasepts (lagred1 (lagred1 lag2red1)) - lag2red1 previosredeemgrowth lagred1 - lag2red1) (lag2red1 - lag3red1) bieżący prąd (oczekiwane wystąpienia previosredeemgrowth) Pomogłoby to zrozumieć, co próbujesz, jeśli podasz jakieś dane w formie danych wejściowych dla danych wejściowych i czego oczekujesz na dane wyjściowe. Zastanawiam się, ponieważ mówisz, że prąd jest czasami brakuje, że chcesz bieżącą sumę (bieżący (oczekiwany).) Coś do rozważenia: musisz rozważyć wszystkie potencjalne brakujące wartości, zanim przystąpisz do podziału z opóźnionymi wartościami. Lag3 nie będzie istnieć aż do 4. obserwacji. Będziesz miał podział, brakuje których chcesz rozważyć. A jeśli zmieniona nowa zmienna jest nieznośna, będziesz otrzymywać przerywane inne obliczenia z brakującymi wartościami. Wartości opóźnienia odnoszą się tylko do zmiennych czytanych za pomocą instrukcji SET lub MERGE. Jeśli chcesz zachować obliczoną zmienną, użyj RETAIN. Czasami warto zresetować wartości początkowe lub braki w przypadku zachowanych zmiennych jest czasem interesujące. Możesz chcieć czegoś takiego: Keep TempCurrent 0 ustawia wartość domyślną 0 jeśli brakuje (bieżącego), a następnie currentsum (TempCurrent, (expectedincreasepts previosredeemgrowth)) inne bieżące sumy (bieżące (oczekiwane) zwiększają previosredeemgrowth)), a następnie zresetuj wartość zatrzymaną

Comments