Tuesday, 28 November 2017

Sas proc expand średnia ruchoma wykładnicza


Załączam zrzut ekranu, aby wyjaśnić mój problem: próbuję obliczyć średnią ruchomą i ruchome odchylenie standardowe. Chodzi o to, aby obliczyć współczynniki wariancji (stdevavg) dla rzeczywistej wartości. Zwykle odbywa się to obliczając stdev i avg przez ostatnie 5 lat. Czasami jednak będą moje obserwacje w mojej bazie danych, dla których nie mam informacji z ostatnich 5 lat (może tylko 3, 2 itd.). To dlatego chcę kod, który obliczy avg i stdev, nawet jeśli nie ma informacji przez całe 5 lat. Ponadto, jak widać w obserwacjach, czasami mam informacje od ponad 5 lat, kiedy tak jest, potrzebuję pewnego rodzaju średniej ruchomej, która pozwala mi obliczyć średnią i stdev przez ostatnie 5 lat. Więc jeśli firma ma informacje przez 7 lat, potrzebuję jakiegoś kodu, który obliczy avg i stdev na, powiedzmy, 1997 (1991-1996), 1998 (1992-1997) i 1999 (1993-1998). Jak nie bardzo dobrze zna komendy sas powinno wyglądać (bardzo bardzo przybliżone): Lub coś w tym stylu, naprawdę nie mam pojęcia, próbuję sobie wyobrazić, ale warto go zamieścić, jeśli sam go nie znajdę. Początkujący SAS i Im ciekawi, czy poniższe zadanie może być zrobione znacznie prostsze, jak to jest obecnie w mojej głowie. Mam następujące (uproszczone) dane metadanych w tabeli o nazwie userdatemoney: Użytkownik - Data - Pieniądze z różnymi użytkownikami i daty każdego dnia kalendarzowego (z ostatnich 4 lat). Dane są sortowane przez użytkownika ASC i Data ASC, dane przykładowe wyglądają następująco: teraz chcę obliczyć pięciodniową średnią ruchową dla pieniędzy. Zacząłem od dość popularnego apprach z funkcją lag () w następujący sposób: jak widzisz, problem z tą metodą występuje, jeśli krok danych zostanie uruchomiony na nowego użytkownika. Aron uzyskałby trochę opóźnionych wartości od Anny, co oczywiście nie powinno się zdarzyć. Teraz moje pytanie: jestem pewien, że możesz obsłużyć przełącznik użytkownika, dodając dodatkowe pola, takie jak laggeduser i resetując zmienne N, Sum i Mean, jeśli zauważysz taki przełącznik, ale: Czy można to zrobić w łatwiejszy sposób? W jakikolwiek sposób podziękować za pomysły i pomysły Myślę, że najprostszym sposobem jest użycie PROC EXPAND: Jak wspomnieliśmy w komentarzu Johna, ważne jest, aby pamiętać o brakujących wartościach (a także o rozpoczęciu i zakończeniu obserwacji). Dodałem opcję SETMISS do kodu, ponieważ jasno stwierdzono, że chcesz zerofy brakujących wartości, a nie ignorować ich (domyślne zachowanie MOVAVE). Jeśli chcesz wykluczyć pierwsze 4 obserwacje dla każdego użytkownika (ponieważ nie mają wystarczającej ilości historii wstępnej do obliczenia średniej ruchomej 5), możesz użyć opcji TRIMLEFT 4 wewnątrz TRANSFORMOUT (). odpowiedział Dec 3 13 o 15: 29 Rozpoczęcie w wersji 6.08 systemu SAS, PROC EXPAND w oprogramowaniu SASETS może być używany do różnych przekształceń danych. Transformacje te obejmują: odprowadzenia, opóźnienia, średnie ruchome ważone i nieważone, sumy ruchomych i skumulowane sumy, aby wymienić tylko kilka. W wersji 6.12 dodano wiele nowych przekształceń, w tym oddzielne specyfikacje dla średnich i średnich ruchów wstecznych. Te nowe przekształcenia wymagały modyfikacji składni niektórych transformacji obsługiwanych przed wydaniem 6.12. Poniżej podano przykłady sposobu określania składni dla średnich średnich i wstecznych, używając Release 6.11 i wcześniejszych oraz Release 6.12 i późniejszych. PROC EXPAND może obliczyć albo średnią ruchomą średnią, albo średnią ruchomej wstecz. Średnia średnica ruchoma 5-centrowej obliczana jest przez uśrednienie w sumie 5 kolejnych wartości serii (wartość bieżąca okresu poza dwiema bezpośrednio poprzednimi wartościami i dwiema wartościami następującymi bezpośrednio po wartości bieżącej). 5-okresowa średnia krocząca wstecz jest obliczana przez uśrednienie wartości okresu bieżącego wartościami z 4 bezpośrednio poprzedzających okresów. Poniższa składnia ilustruje użycie specyfikacji TRANSFORM (MOVAVE n) w celu obliczenia 5-centrowej średniej średniej ruchomej przy użyciu wersji 6.11 lub wcześniejszej: Aby obliczyć n ruchliwą wsteczną średnią z okresu n w wersji 6.11 lub wcześniejszej, skorzystaj z TRANSFORMY (MOVAVE n) n LAG k), gdzie k (n-1) 2 jeśli n jest nieparzyste lub gdzie k (n-2) 2, jeśli n jest równe. Na przykład następująca składnia ilustruje obliczanie 5-letniej średniej ruchomej wstecznej z użyciem wersji 6.11 lub wcześniejszej: Następująca składnia ilustruje użycie specyfikacji TRANSFORM (CMOVAVE n) w celu obliczenia 5-centrowej średniej średniej ruchomej przy użyciu Release 6.12 lub później: Następująca podobna składnia ilustruje użycie specyfikacji TRANSFORM (MOVAVE n) w celu obliczenia 5-letniej średniej ruchomej wstecznej przy użyciu Release 6.12 lub późniejszej: Więcej informacji na ten temat można znaleźć w części Operacje transformacji w rozdziale EXPAND w podręczniku użytkownika SASETS. Jeśli nie masz dostępu do SASETS, możesz obliczyć średnią ruchomej w kroku DATA, jak pokazano na tym przykładowym programie. System operacyjny i informacje o wersji Operacje, które mogą być używane w opcjach TRANSFORMIN i TRANSFORMOUT są przedstawione w tabeli 14.1. Operacje są stosowane do każdej wartości serii. Każda wartość serii zostaje zastąpiona wynikiem operacji. W tabeli 14.1. lub x reprezentuje wartość serii w określonym przedziale czasowym t przed zastosowaniem transformacji, reprezentuje wartość serii wyników, a N oznacza całkowitą liczbę obserwacji. Notacja n wskazuje, że argument n jest opcjonalny, domyślnie wynosi 1. Okno notacji jest używane jako argument dla operatorów statystyk przenoszących ruch i wskazuje, że można określić liczbę całkowitą okresów n lub listę n wag w zdanie wtrącone. Sekwencja zapisu jest używana jako argument dla operatorów sekwencji i wskazuje, że należy podać sekwencję liczb. Notacja s wskazuje na długość sezonowości i jest to wymagany argument. Tabela 14.1 Operacje transformacji Operatory okien czasowych Niektórzy operatorzy obliczają statystyki dla zbioru wartości w ramach okna czasów przemieszczania, nazywanych operatorami ruchomego okna czasowego. Istnieją centrowane i wsteczne wersje tych operatorów. Operatorami centralnego czasu okna są CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS i CMOVVAR. Operatorzy ci obliczają statystyki wartości obserwacji. Operatorami okien czasowych do jazdy w tył są MOVAVE, MOVCSS, MOVGMEAN, MOVMAX, MOVMED, MOVMIN, MOVPROD, MOVRANK, MOVRANK, MOVSTD, MOVSUM, MOVTVAL, MOVUSS i MOVVAR. Operatory te obliczają statystyki wartości. Wszyscy operatorzy okien czasów ruchomych akceptują argument określający liczbę okresów, które mają zostać uwzględnione w oknie czasowym. Na przykład poniższe wyrażenie oblicza pięcioletnią średnią ruchu wstecznego X. W tym przykładzie powstała transformacja jest następująca: obliczanie pięciomiesięcznej średniej ruchomej X. W tym przykładzie wynikowa transformacja jest następująca: Jeśli okno z wyśrodkowanym operatorem okna czasu ruchu nie jest liczbą nieparzystą, w oknie czasowym zawarty jest jeszcze jeden opóźniony parametr niż wartość wiodąca. Na przykład wynik operatora CMOVAVE 4 Można obliczyć operację okna przesuwnego do przodu, łącząc operatora okna czasowego z ruchem wstecznym z operatorem REVERSE. Na przykład poniższe wyrażenie oblicza pięcioletnią średnią ruchomej do przodu X. W tym przykładzie wynikowa transformacja jest nieznaczna. Niektóre z operatorów okien czasowych umożliwiają określenie listy wartości wagowych do obliczania ważonych statystyk. Są to CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVPROD, CMOVSTD, CMOVTVALUE, CMOVUSS, CMOVVAR, MOVEVE, MOVCSS, MOVGMEAN, MOVPROD, MOVSTD, MOVTVALUE, MOVUSS i MOVVAR. Aby określić operator ważonego okna czasu, wprowadź wartości ciężaru w nawiasie po nazwie operatora. Szerokość okna jest równa liczbie ciężarów, które nie określasz. Na przykład poniższa instrukcja oblicza ważoną średnią kroczącą X z ważonego okresu. W tym przykładzie wynikowa transformacja to Wartości ciężaru muszą być większe od zera. Jeśli wagi nie sumują się do 1, podane wagi są podzielone przez ich sumę, aby wyznaczyć ciężary stosowane do obliczenia statystyki. Pełne okno czasowe nie jest dostępne na początku serii. Dla operatorów wyśrodkowanych pełne okno również nie jest dostępne na końcu serii. Obliczenia operatorów okien czasów ruchomych są dostosowywane do tych warunków brzegowych w następujący sposób. W przypadku operatorów okien w ruchu wstecznym szerokość okna czasowego zostaje skrócona na początku serii. Na przykład wyniki operatora MOVSUM 3 są brakujące Wartości Można obcięć długość serii wyników, używając operatorów TRIM, TRIMLEFT i TRIMRIGHT do ustalania wartości brakujących na początku lub na końcu serii. Funkcje te można wykorzystać do wyrównywania wyników przenoszenia operatorów okien czasowych tak, aby seria wyników zawierała tylko wartości obliczane z okna czasu pełnego szerokości. Na przykład poniższe instrukcje obliczają wyśrodkowaną pięcioczłonową średnią kroczącą X. i kończą na brakujących wartościach na końcach serii, które są średnimi o mniej niż pięciu wartościach. Zwykle okno czasu przemieszczeń i zbiorczych operatorów statystycznych ignorują brakujące wartości i obliczają ich wyniki dla wartości brakujących. Poprzedza je operator NOMISS, funkcje te generują brakujący wynik, jeśli brakuje jakiejkolwiek wartości w oknie czasowym. Operator NOMISS nie wykonuje żadnych obliczeń, ale służy do modyfikowania działania ruchomego operatora okien czasowych, który następuje po nim. Operator NOMISS nie ma żadnego efektu, chyba że następuje po nim operator okna czasu ruchomego. Na przykład poniższe wyrażenie oblicza pięcioletnią średnią ruchową zmiennej X, ale powoduje brak wartości, jeśli brakuje jednej z pięciu wartości. Poniższa instrukcja oblicza skumulowaną sumę zmiennej X, ale generuje brakującą wartość dla wszystkich okresów po pierwszej brakującej wartości X. Operator MISSONLY podobny do operatora NOMISS nie wykonuje żadnych obliczeń (chyba że jest to opcja MEAN), ale służy do modyfikacji działania operatora okna ruchomego czasu, który następuje po nim. W przypadku poprzedzonego operatora MISSONLY operatorzy okien czasowych przenoszą wszelkie brakujące wartości na statystykę ruchu i pozostawiają niezmienione wartości niezmienione. Na przykład poniższe oświadczenie zastępuje wszystkie brakujące wartości zmiennej X o średniej ważonej średniej ruchomej z poprzednich wartości X i pozostawia niezmienione wartości niezmienione. Brakujące wartości są interpolowane przy użyciu określonej wykładniczo ważonej średniej ruchomej. (Jest to również zwane prostym wyrównaniem wykładniczym). Poniższa instrukcja zastępuje wszystkie brakujące wartości zmiennej X z całkowitą średnią X. Możesz użyć operatora SETMISS, aby zamienić brakujące wartości na określony numer. Na przykład poniższa instrukcja zastępuje wszystkie brakujące wartości zmiennej X o numerze 8.77. Klasyczne operatory rozkładu Jeśli seria sezonowa z obserwacjami w sezonie, klasyczne metody rozkładu dzielą szeregy czasowe na cztery składniki: trendy, cykle, sezonowe i nieregularne składniki. Trendy i składniki cyklu są często łączone w celu utworzenia składnika cyklu trendu. Istnieją dwie podstawowe formy klasycznego rozkładu: multiplikatywne i addytywne, które przedstawiono poniżej. Przykłady wykorzystania Mnożenie wskaźników sezonowych wynosi 0,9, 1,2. 0,8 i 1,1 w ciągu czterech kwartałów. Niech SEASADJ będzie zmienną kwartalną zmienną czasową, dostosowaną sezonowo w sposób multiplikatywny. Aby przywrócić sezonowość do SEASADJ, użyj następującej transformacji: dodatnie wskaźniki sezonowe wynoszą 4,4, -1,1, -2,1 i -1,2 dla czterech kwartałów. Niech SEASADJ będzie kwartalną zmienną serii czasowej, która została sezonowo dostosowana w dodatku. Aby przywrócić sezonowość do SEASADJ, użyj następującej transformacji: Set Operators Dla operatorów zestawu, pierwszy parametr, reprezentuje wartość, którą należy wymienić, a drugi parametr,, reprezentuje wartość zastępczą. Wymiennik może być zlokalizowany na początku, w środku lub na końcu szeregu. Przykłady użycia Załóżmy, że niedawno otwarty sklep i że historia sprzedaży jest przechowywana w bazie danych, która nie rozpoznaje brakujących wartości. Pomimo, że popyt mógł istniał przed otwarciem sklepów, ta baza danych przypisuje wartość zero. Modelowanie historii sprzedaży może być problematyczne, ponieważ historia sprzedaży jest w większości zerem. Aby zrekompensować ten niedobór, wartości początkowe zerowe powinny być ustawione na brakujące, pozostałe wartości zerowe nie uległy zmianie (nie wymagają zapotrzebowania). Podobnie, przypuśćmy, że ostatnio sklep został niedawno zamknięty. Zapotrzebowanie może być nadal obecne, a zatem odnotowana wartość zerowa nie odzwierciedla dokładnie rzeczywistego zapotrzebowania. Operator skali

No comments:

Post a comment